Xử lý ảnh
Chơng 6 Biến đổi Fourier rời rạc 6.1 Chỉ dẫn Trong chơng 2,chúng ta đ chứng minh rằng đáp ứng tần số của hệ thống của hệ thốngã tuyến tính bất biến (LSI ) 2-D đợc cho bởi: ==+=1 22211)(2121),(),(k kkkjekkhH (6.1)Nếu h(k1,k2) chỉ có chỉ tồn tại với k1 0, k 2 0 và tổng quát đợc xác định trong miền hữu hạn có kích thớc N ì N thì ==+=1010)(21211 22211),(),(NkNkkkjekkhH (6.2)Công thức này chứng tỏ rằngH( , ) 1 2là tuần hoàn, chu kỳ tuần hoàn là 2. Nếu chúng ta lấy mẫu dới dạng 1, 2, và miền xác định là (0 1 2) và (0 2 2), N ì N mẫu, chúng ta có thể viết: 1 12=Nn và 2 22=Nn(6.3) vì thế ( ) =+==102102121122112),(),(NkknknNjNkekkhnnH (6.4) Biểu thức (6.4) đợc gọi là biến đổi Fourier rời rạc 2-D hay còn gọi là DFT. Công thức này đ-ợc áp dụng vào nhiều ứng dụng nh lọc, nén ảnh, phóng đại ảnh. Trong chơng này chúng ta sẽ nghiên cứu 2-D DFT và các kỹ thuật tính toán. Đầu tiên, chúng ta sẽ xem xét 1-D DFT, sau đó mở rộng ra cho 2-D.6.2 Biến đổi Fourier 1-D Biến đổi Fourier 1-D cho tín hiệu thời gian rời rạc f(kT) tính theo công thức :75 ==102)()(NknkNjekTfnF (6.5)Công thức này có thể viết lại dới dạng ==10Ư)()(NnnkNWkfnF (6.6)ở đây f(k) = f(kT) và WN = e- j2 /N . WN đợc gọi là hạt nhân của phép biến đổi. Tổng quát, F(n) có dạng )()()(njenAnF= (6.7)Ký hiệu A(n), (n) gọi là phổ khuyếch đại và phổ pha của F(n).6.2.1 Biến đổi ngợc DFTHàm f(k) là biến đổi ngợc DFT của F(n) cho bởi theo biểu thức ==102)(1)(NnnkNjenFNkf (6.8)Chứng minh: Từ định nghĩa của DFT =======1010)(101010)(1)(1)(1NmNnmknNknNNnNmnmNNnnkNWmfNWWmfNWnFN(6.9) Đặt ==10)(NnmknNWS Nếu (k = m) thì S = N. Nếu (k m), chúng ta có thể viết: S = 1 + WN (k -m ) + WN 2(k -m ) + . + WN (N-1)(k -m ) hoặc )(2))(2(m)-(kNm)-N(kN11W-1W-1mkNjmkjeeS== Khi e j2(k-m) = 1 và e j2/N. (k-m) 1 với (k m), vì vậy S = 0 với (k m ). Vì vậy, biểu thức (6. 9) có thể rút gọn thành 76 f(k).N1)(110NWnFNNnnkN===Kết quả này giống nh biểu thức (6.8). Khi f(k) có thể rút ra từ F(n) và ngợc lại, chúng gọi là cặp biến đổi. Cặp biến đổi này có dạng )()( nFkf Chú ý từ biểu thức (6.8) ta có thể dễ dàng chứng minh: )()(1)(110.210)(2kfenFNenFNNnnkNjNnNknNj=====+ (6.10)Mặc dù f(k) đợc xác định trên miền k [0,N], nó vẫn là tín hiệu tuần hoàn với chu kỳ NT. (T đợc bao hàm và rút ra từ biểu thức 6.5). 6.2.2 Một vài tính chất của DFT Tuyến tính. Nếu ta có hai d y tuần hoàn cùng ã f1(n) và f2(n), và cả hai d y này tuần hoànã với chu kỳ N, đợc dùng để tính f3(k) = af1(k) + bf2(k) (6.11) là kết quả của biến đổi DFT f3(n) cho bởi F3(n) = aF1(n) + bF2(n) (6.12) ở đây a, b là hằng số và F1(n) = DFT của f1(k) F2(n) = DFT của f2(k)Tính đối xứng. Tính đối xứng của DFT rất hay đợc dùng. nkNjNknkNjNkNNjNknNkNeekfeekfWkfnNF======210210210)()()()()( Nếu f(k) là thực thì 77)( Nkf + ===)()()(10.2nFekfnNFNknkNj(6.13)Dấu * có nghĩa là liên hợp phức. Tích chập tuần hoàn. Coi f1(k) và f2(k) là hai d y tuần hoàn có chu kỳ ã N, với biến đổi Fourier rời rạc là F1(n) và F2(n). Xem xét tích F(n1).F(n2)khi )()(101111111==NkknNWkfnF )()(102222222==NkknNWkfnF và tại các vị trí n1 = n2 = n Đặt f3(k) = IDFT của F1(n).F2(n) hay ( )nkNnWnFnFNkf==10213)().(1)(vì vậy == =+=====+10)(10221011101010)(221121211 2211)()()()(1NnkkknNNkNknkNNnNkNkkknN3WNkfkfWWkfkfN(k)f Chú ý là ==+01110)(21NnkkknWNở đây l là số nguyên. Vì vậy mà)()()(12101113lNkkfkfkfNk== (6.14)78cho k = k1 + k2 + lNcác trờng hợp còn lại. W =.= 2n-N2111122211110221110101210111111)()()()()().(kNkknNNnNkknNNkknNWkfkfWkfWkfnFnF==== ở đây k = 0 đến 2N - 1. Biểu thức trên biểu diễn tích chập của hai tín hiệu tuần hoàn. Chú ý rằng biêủ thức này chỉ áp dụng cho hai d y có chung một chu kỳ, và chiều dài của d y tính theo biểu thức trên là ã ã 2N - 1. Kết quả này chứng minh rằng trong DFT, tín hiệu có số mẫu lớn hơn N sẽ đợc biến đổi thành d y tuần hoàn có chu kỳ ã N. Khi dùng DFT cho một tín hiệu không có chu kỳ, mà kết quả thu đợc từ tích hai d y, ta sẽ phạm một sai lầm gọi là lỗi ã wraparound. Đó là lý do ta phải làm cho cả hai d y có chu kỳ bằng nhau. Để sửa lỗi này, một số số 0 cần phải thêm vào cả hai d y đểã ã chiều dài hai d y bằng nhau. Ví dụ, nếu một d y có chiều dài ã ã A, một d y có chiều dài ã B, kết quả ta phải thêm các số 0 cho cả hai d y có chiều dài ít nhất là ã A + B - 1.Bài tập 6.1 Cho hai d y sauã =01)(1kf =01)(2kf1. Tính bằng tay tích chập của hai d y trên. Vẽ một lã u đồ biểu diễn thuật toán.2. Làm lại phần 1, nhng lần này sử dụng tích chập tuần hoàn.3. Lập một chơng trình C rút ra f3(k) từ biểu thức f3(k) = IDFT{DFT[f1(k)]. DFT[f1(k)]}. So sánh kết quả của phần 1 và phần hai.4. Bây giờ thêm các số không vào f1(k) và f2(k) để chu kỳ của chúng = 5 + 6 - 1. Làm lại phần 3 và so sánh kết quả.6.3 Thuật toán biến đổi nhanh FourierTính trực tiếp giá trị của DFT bao gồm N phép nhân phức và N - 1 phép cộng phức cho mỗi giá trị của F(n). Khi N giá trị đợc tính toán thì N2 phép nhân và N(N - 1) phép cộng đợc tính toán. Cũng nh vậy, cho N có giá trị rất lớn, tính trực tiếp giá trị của DFT sẽ đòi hỏi một số phép tính lớn đến mức không thể chấp nhận đợc. Để ví dụ, cho N = 1024 = 210 ta sẽ phải tính 220 = 1,048,576 phép nhân số phức và một số gần bằng nh vậy các phép cộng.Hoàn thiện có nghĩa là phải giảm số phép tính trong biến đổi Fourier xuống. Dới đây chúng ta sẽ giới thiệu hai thuật toán hay dùng là thuật toán phân chia thời gian và thuật toán phân chia tần số. DFT dùng các thuật toán trên gọi là Fast Fourier transform (FFT).6.3.1 Thuật toán phân chia thời gian Xem xét tính toán của DFT cho bởi (5.6) với N= 2r (r là một số nguyên bất kỳ). Cơ sở của thuật toán phân chia thời gian thì rõ ràng. Tuy nhiên, việc thiết kế phần mềm cũng đòi hỏi một số phân tích chi tiết. Để làm rõ các bớc của thuật toán này chúng ta sẽ bắt đầu phân tích với N = 16 và sau đó mở rộng ra áp dụng cho N bất kỳ. Cơ sở của thuật toán phân chia thời gian dựa trên cơ sở chiến lợc chia và chiếm. Các bớc sau sẽ làm sáng tỏ thuật toán. Vì trong trờng hợp này N =16; nên, 790 k1 4các trờng hợp còn lại.0 k1 5các trờng hợp còn lại. ==15016)()(knkWkfnF Chia d y ã f(k) thành hai d y, một d y đã ã ợc rút ra từ phần tử chẵn và một d y từ những phần tửã lẻ. Đó là, ==+=1501615016)()()(knkknkWkfWkfnF k chẵn k lẻ Chúng có thể viết thành =+=++=70)12(1670)2(16)12()2()(kknkknWkfWkfnF(6.15)Chú ý là nknkjknjknWeeW===8.82)2(.162)2(16 vì thế==++=70816708)12()2()(knknknkWkfWWkfnFđặt f(2k)(k)f 10= 1)f(2k(k)f11+= Ta đợc==+=708111670810)()()(knknknkWkfWWkfnF(6. 16) Đặt ==7081010)()(knkWkfnF (6.17)==7081111)()(knkWkfnF(6.18)Viết lại biểu thức (6.16) chúng ta đợc (n)FW (n)F F(n)11-n1610+=(6.19)Cũng nh vậy, phát triển cho một biểu thức80 (n)FW -(n)F 8)F(n11-n1610=+(6.20)Biểu thức (6.19) và (6.20) định dạng những đơn vị tính toán gọi là bớm. Hình 6.1 là biểu đồ của phần tử bớm. Ký hiệu W16-n thờng gọi là trọng lợng hay hệ số xoay. Hai biểu thức này biểu diễn bớc cuối cùng trong lu đồ tính toán của hình 6.2.Bây giờ xem xét biểu thức ==7081010)()(knkWkfnFXử lý nh trên chúng ta có ==++=7041083041010)12()2()(knknknkWkfWWkfnFDễ thấy -2n16-n8 WW =đặt 1)(2kf(k)f(2k)f(k)f10211020+== Hình 6.1 (a) Bớm; (b) Biểu diễn rút gọn.81 F10(n) F(n) F11(n) F(n+8)F10(n) F(n) F11(n) F(n+8)1W16-n n Hình 6.2 Bớc cuối cùng của thuật toán biến đổi FFT phân chia miền thời gian. X(k) ký hiệu vector chứa giá trị đợc tính qua phép biến đổi FFT. Vì vậy, ==+=304213021642010)()()(knkknnkWkfWWkfnF (n)FW (n)F (n)F21-2n162010+=(6.21) (n)FW - (n)F 4)(nF21-2n162010=+(6.22)ở đây ==3042020)()(knkWkfnF (6.23)==3042121)()(knkWkfnF(6.24)Tơng tự (n)FW (n)F (n)F23-2n162211+= (6.25) (n)FW - (n)F 4)(nF 23-2n162211=+ (6.26) 8201234567012345670123456789101112131415F10(n)F(n)F11(n)X(k)X(k) ở đây ==3042222)()(knkWkfnF (6.27)==3042323)()(knkWkfnF(6.28) và (2k)f (k)f1122= 1)(2kf (k)f1123+=Biểu thức (6.21), (6.22), (6.25) và (6.26) có thể biểu diễn bằng sơ đồ hình 6.3. Biểu thức (6.23), (6.24), (6.27) và (6.28) có thể tiếp tục chia nhỏ ra nh các bớc đ làm ở trên nhã sau: (n)FW (n)F (n)F31-4n163020+= (6.29)(n)FW - (n)F 2)(nF31-4n163020=+(6.30) (n)FW (n)F (n)F33-4n163221+=(6.31)(n)FW - (n)F 2)(nF33-4n163221=+ (6.32)(n)FW (n)F (n)F35-4n163422+= (6.33)(n)FW - (n)F 2)(nF35-4n163422=+ (6.34) (n)FW (n)F (n)F37-4n163623+= (6.35)(n)FW - (n)F 2)(nF37-4n163623=+(6.36)ở đây F n f k Wnkk30 30 201( ) ( )== (6.37)F n f k Wnkk31 31 203( ) ( )==(6.38) ., vv.Các biểu thức từ (6.29) đến (6.36) cho kết quả trong bớc thứ ba của thuật toán và biểu diễn trong lu đồ hình 6.4.Mỗi phần tử từ F30(n) đến F37(n) có thể chia tiếp thành hai phần tử nữa và bớc này tạo thành sơ đồ cuối cùng (bớc đầu tiên) trong lu đồ.83 Hình 6.3 Bớc thứ hai sau bớc cuối cùng trong thuật toán FFT.Hình 6.4 Bớc đầu tiên của lu đồ FFT.84012301230123012301234567012345670F20(n)2F21(n)46F22(n)0F23(n)426F10(n)F11(n)X(k)X(k)W-2nHệ số xoayn=0 đến 3000000000101010101010101010F30(n)F31(n)F32(n)F33(n)F34(n)F35(n)F36(n)F37(n)X(k)X(k)D yãđầuvàođ ãđượcsắp xếplại [...]... T=X(j)W(5); X(j+4)=X(j) - T; X(j)=X(j) + T; } Bớc thứ t và là bớc cuối cùng 1.Một bớm với trọng lợng bằng 1 T = X(0) X (8) = X(0) - T X(0) = X (8) +T 2 Một bớm với trọng lợng bằng W (0) = W T = X(1)W(0) X(1 +8) = X(1) - T X(1) = X(1) +T 3 Một bớm với trọng lợng bằng W (1) = W2 T = X(1)W(1) X(2 +8) = X(0) - T X(2) = X(2) +T 87 8 Một bớm với trọng lợng bằng W (6) = W7 T = X(7)W(6) X(7 +8) = X(7)-T X(7) = X(7) +T... iter ... S = 1 + WN (k -m ) + WN 2(k -m ) + ... + WN (N-1)(k -m ) hoặc )(2))(2(m )-( kNm)-N(kN11W-1W-1mkNjmkjeeS== Khi e j2(k-m) = 1 và e j2/N. (k-m) 1 với (k m), vì vậy ... ==7 081 010)()(knkWkfnFXử lý nh trên chúng ta có ==++=7041 083 041010)12()2()(knknknkWkfWWkfnFDễ thấy -2 n16-n8 WW =đặt 1)(2kf(k)f(2k)f(k)f10211020+== Hình 6.1 (a) Bớm; (b) Biểu diễn rút gọn .81 ... 2)(nF3 3-4 n163221=+ (6.32)(n)FW (n)F (n)F3 5-4 n163422+= (6.33)(n)FW - (n)F 2)(nF3 5-4 n163422=+ (6.34) (n)FW (n)F (n)F3 7-4 n163623+= (6.35)(n)FW - (n)F 2)(nF3 7-4 n163623=+(6.36)ở