đỏnh giỏ độ chờnh lệch về giỏ trị mức xỏm của điểm ảnh so với cỏc điểm lõn cận do đú kết hợp được ưu điểm của cả 2 khuynh hướng phỏt hiện biờn trực tiếp và giỏn tiếp.
í tưởng chớnh của thuật toỏn được đề xuất là xỏc định tất cả cỏc điểm nằm trờn biờn khụng theo hướng tỡm kiếm và sử dụng cỏc ma trận lọc mà sẽ thụng qua việc so sỏnh độ chờnh lệch về mức xỏm của nú so với mức xỏm chung của cỏc điểm ảnh lõn cận (mức xỏm nền). Trước hết tớnh giỏ trị xỏm trung bỡnh của cỏc điểm ảnh nằm trong phạm vi của ma trận 3ì3 hoặc 5ì5 cú tõm là điểm ảnh đang xột. Nếu như độ chờnh lệch mức xỏm giữa điểm đang xột với giỏ trị xỏm trung bỡnh thỏa món lớn hơn một mức tối thiểu δ1 nào đú (PTB+ δ1< P) thỡ chỳng ta sẽ coi nú là điểm biờn và ghi nhận lại, cũn cỏc điểm khụng thỏa món điều kiện trờn sẽ được coi là điểm nền.
N=5
Hỡnh 2.17 Ma trận điểm ảnh trước và sau lọc
Ảnh biờn thu được với δ1= 25 Ảnh biờn thu được với δ1= 250
Hỡnh 2.18 Cỏc ảnh biờn kết quả thu được theo thuật toỏn đề xuất
*Nhận xột:
Thuật toỏn dũ biờn sử dụng trong chương trỡnh tuy đó hạn chế được nhiều nhiễu so với việc sử dụng cỏc bộ lọc và làm nổi rừ cỏc đường biờn nhưng vẫn khụng loại bỏ được hầu hết cỏc nhiễu. Khi ỏp dụng thuật toỏn
trờn chỳng ta vẫn cú thể làm giảm bớt nhiễu đi nhiều hơn nữa bằng cỏch tăng giỏ trị của hệ số delta lờn. Nhưng khi đú cỏc đường biờn thu được cũng bị đứt đoạn và mờ đi nhiều.
2.1.5. Cải thiện và nõng cao chất lƣợng biờn ảnh
2.1.5.1. Cỏc kỹ thuật tiền xử lý
Trong giai đoạn tiền xử lý, vấn đề mà chỳng ta phải quan tõm đến nhiều nhất đú là vấn đề nhiễu. Nhiễu là nguyờn nhõn chủ yếu gõy nờn những khú khăn cho phõn tớch ảnh. Nguyờn nhõn gõy ra nhiễu cú thể là do nhiễu điện tử của mỏy thu hoặc chất lượng kộm của bộ số húa. Chỳng ta hóy xem xột thể hiện của nhiễu trờn ảnh thế nào. Giả sử ảnh là một miền cú mức xỏm đồng nhất. Như vậy, cỏc phần tử của ma trận biểu diễn ảnh sau quỏ trỡnh số húa phải cú cựng giỏ trị. Nhưng thực tế quan sỏt kỹ, ta thấy: gần giỏ trị trung bỡnh của mức xỏm cú những phần tử trội lờn khỏ nhiều. Đú chớnh là hiện tượng nhiễu. Như vậy, nhiễu trong ảnh số được xem là sự dịch chuyển nhanh của tớn hiệu thu nhận (tớn hiệu ảnh) trờn một khoảng cỏch ngắn. Xem xột một cỏch tương đương trong khụng gian tần số, nhiễu ứng với cỏc thành phần tần số cao trong ảnh.
Phần dưới đõy, em sẽ trỡnh bày cỏc kỹ thuật khử nhiễu. Trước hết chỳng ta tỡm hiểu một số kỹ thuật lọc nhiễu đang được sử dụng phổ biến hiện nay. Để khử nhiễu, thụng thường người ta lấy “tổ hợp” cỏc điểm lõn cận (trong khụng gian thực) hay lọc cỏc thành phần tần số cao (trong khụng gian tần số). Cơ sở lý thuyết của kỹ thuật lọc số cũng dựa trờn tớnh dư thừa thụng tin khụng gian: cỏc pixel lõn cận cú thể cú cựng hoặc gần cựng một số đặc tớnh. Hơn nữa nhiễu cũng cú thể coi như sự đột biến của một số điểm ảnh so với cỏc điểm ảnh lõn cận. Tựy theo cỏch tổ hợp điểm đang xột mà ta cú kỹ
2.1.5.1.1. Kỹ thuật lọc tuyến tớnh
Với kỹ thuật lọc tuyến tớnh, ảnh thu được sẽ là tổng trọng số hay là trung bỡnh trọng số cỏc điểm lõn cận với nhõn cuộn hay mặt nạ. Nguyờn tắc lọc theo tổng trọng số được minh họa như hỡnh dưới đõy:
Tức là: P = P1K1 + P2K2 + P3K3 + P4K4 + P5K5 + P6K6 + P7K7 + P8K8 = X 8 lõn cận của P5 nhõn cuộn 3x3 Hỡnh 2.19 Lấy tổ hợp cỏc điểm ảnh lõn cận. Cỏc mặt nạ thường dựng là : Mặt nạ H1 là mặt nạ dựng để tớnh trung bỡnh khụng trọng số (khụng ưu tiờn theo hướng nào cả). Mặt nạ H2 cho trọng số lớn nhất với điểm ở tõm. Cũn mặt nạ H3 ưu tiờn cho hướng x,y. Cỏc mặt nạ lọc núi trờn, nhỡn chung làm giảm mức nhiễu trắng đi Nw lần, với Nw là số phần tử của mặt nạ. Tuy nhiờn, nếu kớch thước của mặt nạ càng lớn thỡ ảnh càng bị nhũe.
P P1 P2 P3 P4 P5 P6 P7 P8 P9 K1 K2 K3 K4 K5 K6 K7 K8 K9 1 1 1 H1=1/9 1 1 1 1 1 1 1 1 1 H2=1/10 1 2 1 1 1 1 1 2 1 H3=1/16 2 4 2 1 2 1 Hỡnh 2.20 Một số kiểu mặt nạ sử dụng cho kỹ thuật lọc phi tuyến.
2.1.5.1.2. Kỹ thuật lọc phi tuyến
Khỏc với lọc tuyến tớnh, kỹ thuật lọc phi tuyến coi một điểm ảnh là kết quả khụng phải là tổ hợp tuyến tớnh của cỏc điểm lõn cận. Bộ lọc phi tuyến thường dựng là lọc trung vị (median filtering). Trong trường hợp một chiều, trung vị xa của một chuỗi n phần tử {xn} được định nghĩa:
- Nếu n lẻ: cú (n-1)/2 phần tử lớn hơn xa và (n-1)/2 nhỏ hơn hay bằng xa.
- Nếu n chẵn: xa là trung bỡnh cộng của hai phần tử xi và xj{xn} sao cho cú (n-2)/2 phần tử nhỏ hơn hay bằng xi và (n-2)/2 phần tử lớn hơn hay bằng xj.
Thuật toỏn lọc trung vị được dựng để lọc nhiễu bằng cỏch trượt trờn mặt phẳng ảnh, mỗi lần trượt di chuyển một điểm. Những phần tử trong cửa sổ được xem như là một chuỗi {xn} và điểm quan tõm được thay thế bởi giỏ trị xn của chuỗi. Thớ dụ như chuỗi {1,2,9,5,4}, điểm trung tõm sẽ được thay thế bởi giỏ trị 4 được tớnh theo nguyờn tắc ở trờn. Rừ ràng trong thớ dụ này 9 cú thể là nhiễu chọn trong dóy tăng dần. Lọc trung vị thường sử dụng cửa sổ cú kớch thước 3. Tuy nhiờn nếu khụng cú dấu hiệu quan trọng nào bị mất, kớch thước của cửa sổ cú thể tăng lờn 5,7,9 …và sẽ kết thỳc khi quỏ trỡnh lọc khụng làm thay đổi kết quả. Mở rộng kỹ thuật lọc trung vị cho trường hợp hai chiều. Giả sử đầu vào là X(m,n) và đầu ra bộ lọc là Y(m,n) lọc trung vị hai chiều được định nghĩa:
Y(m,n)= Median(X(m-k,n-l)) với k,l [1,L]
Lưu ý rằng cụng thức Lc = (L+1)/2 cũn được gọi là bỏn kớnh bộ lọc. Do vậy, ta cú cỏch viết khỏc tương đương (k,l) (-r,r) với 2r+1=L.
Khi đú, trung vị của cửa sổ vuụng nxn cú thể được tớnh như những phần tử của chuỗi một chiều. Ta tiến hành sắp xếp dóy đú rồi thay thế những phần tử ở tõm của cửa sổ bằng trung vị của dóy vừa tỡm được.
Lọc trung vị cú một nhược điểm là số lượng tớnh toỏn khỏ lớn (cú thể bằng số mũ của kớch thước cửa sổ lọc). Vỡ vậy, để khắc phục nhược điểm này người ta sử dụng một một phương phỏp khỏc là lọc giả trung vị (Pseudo- median Filter).
Thuật toỏn lọc giả trung vị cú thể mụ tả tổng quỏt như sau:
Bƣớc 1: Lấy cỏc phần tử trong cửa sổ ra mảng một chiều (L phần tử)
Bƣớc 2: Tỡm min của lần lượt cỏc chuỗi con rồi lấy max, gọi m1 là giỏ trị này.
Bƣớc 3: Tỡm max của lần lượt cỏc chuỗi con rồi lấy min, gọi m2 là giỏ trị tỡm được.
Bƣớc 4: Gỏn giỏ trị điểm đang xột là trung bỡnh cộng của m1 và m2. Lọc giả trung vị cú nhiều điểm giống như lọc trung vị. Dóy lấy ra khụng cần sắp xếp và giỏ trị gọi là trung vị, lại được tớnh theo trung bỡnh cộng của max của min và của min của max. Cỏc kỹ thuật lọc nhiễu như đó trỡnh bày ở trờn tuy khử nhiễu khỏ tốt nhưng đồng thời cũng lại làm nhũe cỏc đường biờn ảnh hoặc cú tớnh toỏn khỏ phức tạp. Để cú thể khắc phục được nhược điểm này, tụi đó ỏp dụng kỹ thuật lọc tuyến tớnh cải tiến để cú thể vừa loại bỏ được phần lớn cỏc nhiễu, vừa cú thể giữ được độ nột của cỏc đường biờn ảnh.
2.1.5.1.3. Kỹ thuật lọc nhiễu cải tiến
Nội dung của thuật toỏn lọc nhiễu sử dụng trong chương trỡnh được mụ tả như sau: duyệt toàn bộ ảnh gốc, đối với mỗi điểm ảnh xột cỏc điểm thuộc 8 lỏng giềng của nú. Nếu cú điểm ảnh nào cú giỏ trị xỏm khụng chờnh lệch quỏ (hơn hoặc kộm) giỏ trị xỏm của điểm ảnh hiện tại một khoảng δ cho trước thỡ chỳng ta đỏnh dấu lại. Giỏ trị của điểm ảnh mới trờn ảnh thu được tương ứng
với điểm ảnh đang xột sẽ là trung bỡnh cộng của cỏc điểm được đỏnh dấu và điểm đang xột.
Thớ dụ: Nếu điểm mà chỳng ta đang xột là điểm P và cú 5 điểm lõn cận của nú
thỏa món điều kiện P-δ ≤ Pi ≤ P+ δ là P1, P2, P4, P5, P7 thỡ giỏ trị của điểm P mới sẽ được tớnh theo cụng thức:
P = (P1 + P2 + P4 + P5 + P7)/5
Hàm lọc nhiễu cải tiến SmoothImage() được trỡnh bày khỏi quỏt như sau : LPSTR SmoothImage(LPSTRpOrgImg,LPSTR pFltImg,int δ)
{
int i,j,ii,jj,P,nP;
for (i=1; i<biHeight-1; i++) for (j=1; j<biWidth-1; j++) {
P0=GetPoint(pOrgImg,i,j); P=0; nP=0;
for (ii=i-1; ii<=i+1; ii++) for (jj=j-1; jj<=j+1; jj++) if((P0-<=GetPoint(pOrgImg,ii,jj))&&(GetPoint(pOrgImg,ii,jj))<=P0+ δ)) { P1 P2 P3 P8 P P4 P7 P6 P5
nP=nP+1; } P=int(P/nP); SetPoint(pFltImg,i,j,P); } return pFltImg; } Trong đú:
- pOrgImg, pFltImg lần lượt là cỏc con trỏ trỏ đến vựng dữ liệu của ảnh gốc và ảnh lọc nhiễu.
- P0,P là cỏc giỏ trị xỏm của điểm ảnh thuộc ảnh gốc và điểm ảnh mới. - nP là số lượng điểm ảnh thỏa món điều kiện P0- δ ≤ Pi ≤ P0+ δ.
Chỳng ta tạm gọi kỹ thuật vừa trỡnh bày ở trờn là lọc phõn lớp tuyến tớnh, bởi vỡ chỳng ta đó thực hiện phõn chia cỏc điểm ảnh trong cửa sổ mặt nạ ra thành hai phần: một phần cú giỏ trị xỏm nằm trong lõn cận của điểm ảnh ở tõm cửa sổ, cũn phần cũn lại là cỏc điểm ảnh cú giỏ trị xỏm nằm ngoài khoảng; sau đú mới tớnh giỏ trị của điểm ảnh mới. Hạn chế của cỏc kỹ thuật lọc tuyến tớnh là khụng phõn biệt được cỏc điểm nhiễu và điểm biờn. Thực tế khi quan sỏt kỹ cỏc bức ảnh chỳng ta sẽ thấy cỏc phần lớn cỏc phần tử nhiễu là những điểm cụ lập và cú độ chờnh lệch mức xỏm nhỏ hơn cỏc điểm biờn khi so sỏnh với cỏc điểm nền. Kỹ thuật lọc phõn lớp tuyến tớnh tỏ ra linh động hơn vỡ chỳng làm nõng giỏ trị xỏm của cỏc điểm nhiễu tới gần mức giỏ trị xỏm của cỏc điểm nền (coi rằng màu nền là màu cú giỏ trị xỏm cao hơn trong bảng màu), hoặc giữ nguyờn giỏ trị xỏm của chỳng nếu đú là cỏc điểm nhiễu cú độ biến thiờn giỏ trị xỏm lớn (chỳng ta sẽ cũn cú một thuật toỏn khỏc để khử cỏc điểm nhiễu cụ lập này ở phần hậu xử lý cho ảnh biờn). Cỏc điểm biờn thường là những điểm cú mức xỏm thấp và nằm liền kề nhau thành một chuỗi nờn khi
Hỡnh 2.21 Minh họa thuật toỏn hậu xử lý
qua lọc nhiễu giỏ trị của nú sẽ khụng bị thay đổi nhiều. Do đú thuật toỏn lọc nhiễu phõn lớp vừa đảm bảo được yờu cầu khử nhiễu cho ảnh biờn, vừa khụng làm cho cỏc đường biờn bị nhũe đi nhiều. Hơn nữa, nú cũn cho phộp chỳng ta thay đổi độ lọc nhiễu bằng cỏch cho điểu chỉnh tham số δ ở đầu vào. Tuy nhiờn nếu giỏ trị của δ càng lớn thỡ ảnh càng bị nhũe dự rằng tốc độ nhũe ảnh là chậm khi ta thay đổi giỏ trị của δ.
2.1.5.2. Kỹ thuật hậu xử lý
Chỳng ta biết rằng, ảnh cho dự đó qua lọc nhiễu trước khi dũ biờn thỡ vẫn cú thể cũn tồn tại cỏc đốm nhiễu. Bởi vỡ, chỳng cú thể là cỏc điểm cú độ biến thiờn mức xỏm tương đương với cỏc điểm biờn hoặc là cỏc đối tượng nhỏ trong ảnh. Chỳng ta gọi cỏc đối tượng như vậy là cỏc đốm nhiễu. Khi xử lý nhận dạng ảnh hiếm khi cần phải quan tõm đến cỏc đối tượng này, bởi vậy việc loại bỏ chỳng đi là cần thiết. Chỳng ta sẽ tiến hành khử đốm nhiễu trờn cỏc ảnh thu được sau khi làm nổi biờn.
Chỳng ta cú nhận xột là kớch thước vựng liờn thụng (vựng điểm ảnh kế cận nhau) của cỏc đốm nhiễu là rất nhỏ so với kớch thước của cỏc vựng biờn của đối tượng. Đõy sẽ là cở sở cho thuật toỏn khử đốm nhiễu được trỡnh bày dưới đõy. Trong thuật toỏn này chỳng ta sử dụng một Queue. Queue được trỏ bởi hai con trỏ CF (trỏ trước) và CB (trỏ sau). Con trỏ CF dựng để trỏ tọa độ của điểm đang xột, CB trỏ tới tọa độ của điểm cuối cựng trong danh sỏch cỏc
Cỏc bước của thuật toỏn được mụ tả như sau:
Bƣớc 1: đọc điểm ảnh đầu tiờn, nếu đú là điểm đen thỡ ghi lại tọa độ của nú vào Queue rồi chuyển sang bước 2, nếu khụng thỡ chuyển sang điểm ảnh tiếp theo và thực hiện lại bước 1.
Bƣớc 2: đọc tọa độ điểm ảnh (xo,yo) được trỏ bởi con trỏ CF và đỏnh dấu lại vào ảnh gốc (để khụng duyệt lại nữa).
Bƣớc 3: Xột cỏc điểm ảnh thuộc 8 lỏng giềng của (xo,yo), nếu đú là điểm đen thỡ ghi lại tọa độ của nú vào trong Queue và cho trỏ bởi con trỏ CB, tăng giỏ trị của biến đếm kớch thước Queue_Size thờm một đơn vị. Lặp lại bước 2 cho đến khi CF > CB hoặc Queue_Size > Max_Size. Với Max_size là một giỏ trị nhập vào quy định kớch thước tối đa của vựng liờn thụng (kớch thước đốm nhiễu) .
Bƣớc 4: đọc giỏ trị của Queue_Size, nếu Queue_Size > Max_Size thỡ xúa tất cả cỏc điểm thuộc Queue; nếu khụng thỡ hủy đỏnh dấu cho chỳng.
Quay lại thực hiện bước 1 cho đến khi toàn bộ cỏc điểm ảnh đều được xột duyệt hết. Dưới đõy là trỡnh bày khỏi quỏt của hàm Despecke()
LPSTR Despecke(LPSTR pImg,int Max_Size) {
struct Point{ int x,y; };
Point *Q=new Point[MaxSize+10]; int i,j,k,CF,CB,QSz,xo,yo; int dx[8]={-1,-1,-1,0,1,1,1,0}, dy[8]={-1,0,1,1,1,0,-1,-1}; for (i=0;i<biHeight;i++) for (j=0;j<biWidth;j++) if (GetPoint(pImg,i,j)==BLACK)
{
// luu toa do diem dau tien (i,j) vao Queue CF=CB=0; QSz=1; Q[0].x=i; Q[0].y=j;
do{
// danh dau la diem da xet
SetPoint(pImg,Q[CF].x,Q[CF].y,GREEN);
xo=Q[CF].x; yo=Q[CF].y;
for (k=0;k<8;k++)
// neu tim thay mot diem ke can diem dang xet thi // dua no vao Queue
if (GetPoint(pImg,xo+dx[k],yo+dy[k])==BLACK) { CB++; QSz++; Q[CB].x=xo+dx[k]; Q[CB].y=yo+dy[k]; } CF++; }while (CF<=CB&&QSz<=MaxSize);
// neu kich thuoc vung lien thong khong vuot qua gia tri // Max_Size thi xoa no di
if (QSz<=MaxSize)
for (k=0;k<QSz;k++)
SetPoint(pImg,Q[k].x,Q[k].y,WHITE);
else
// nguoc lai huy danh dau cho cac diem trong Queue
for (k=0;k<QSz;k++)
SetPoint(pImg,Q[k].x,Q[k].y,BLACK);
}
delete Q; return pImg;
Hạn chế của thuật toỏn này là nếu như ảnh biờn thu được cú cỏc đường biờn bị đứt nột thỡ nú cũng bị coi là cỏc đốm nhiễu và bị khử bởi thuật toỏn của chương trỡnh. Điều này đũi hỏi ảnh biờn phải cú cỏc đường biờn liờn tục.
2.2 Phộp biến đổi Fourier.
2.2.1 Định nghĩa :
Định nghĩa phộp biến đổi Fourier của hàm f(x) như sau:
f(x)e dx ) w ]( f [ F iwx
và phộp biến đổi Fourier ngược (IFT) là:
f(w)e dw 2 1 ) x ]( f [ F 1 iwx
Phộp biến đổi Fourier của hàm f(x) là hàm f(w). F[f] là kớ hiệu biến đổi Fourier của hàm f, hoặc gọn hơn, phộp biến đổi của f theo x tại w. Phộp biến đổi thực hiện theo biến độc lập của f (khi f=f(t)), t là biến độc lập; f=f(x) cho biết x là biến độc lập... tại biến mặc định w. Qui ước F[f] là biến đổi Fourier của f tại w và F-1[f] là biến đổi Fourier ngược (IFT) của f tại x.
Matlab Symbolic cung cấp 2 hàm fourier và ifourier xỏc định phộp biến đổi Fourier và phộp biến đổi ngược.
Cỳ phỏp của hàm fourier:
F = fourier(f)
-Trả về kết quả phộp biến đổi Fourier của hàm vụ hướng kớ hiệu f với biến độc lập x. F là hàm của w. Nếu f=f(w), fourier trả về hàm của t: F=F(t). Theo định nghĩa F(w)=int(f(x)*exp(-i*w*x),x,-inf,inf), với tớch phõn theo biến x (Thực tế biến kớ hiệu trong f được xỏc định bởi findsym)
F = fourier(f,v)
-Trả về hàm F theo biến kớ hiệu v thay cho biến mặc định w: fourier(f,v) <=> F(v) = int(f(x)*exp(-i*v*x),x,-inf,inf).
F= fourier(f,u,v)
-Coi f là hàm của u thay cho biến mặc định x. F là hàm của v. fourier(f,u,v) <=> F(v) = int(f(u)*exp(-i*v*u),u,-inf,inf). Biến đổi Fourier ngược.
Cỳ phỏp của hàm ifourier:
f = ifourier(F)
-Trả về dạng biến đổi Fourier ngược của biến vụ hướng kớ hiệu F theo biến độc lập w. Mặc định trả về hàm f của x. Biến đổi Fourier ngược được ỏp dụng cho hàm của w và trả về hàm của x: F = F(w) => f = f(x). Nếu F = F(x),