Biến đổi fourier rời rạc sử dụng trong Xử lý ảnh số
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 2 2211 )( 2121 ),(),( k k kkj ekkhH (6.1) Nếu h(k 1 ,k 2 ) chỉ có chỉ tồn tại với k 1 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ì = = + = 1 0 1 0 )( 2121 1 2 2211 ),(),( N k N k kkj ekkhH (6.2) Công thức này chứng tỏ rằng H( , ) 1 2 là 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 1 2 = N n và 2 2 2 = N n (6.3) vì thế ( ) = + = = 1 0 2 1 0 2121 1 2211 2 ),(),( N k knkn N j N k ekkhnnH (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 : = = 1 0 2 )()( N k nk N j ekTfnF (6.5) Công thức này có thể viết lại dới dạng = = 1 0 Ư)()( N n nk N WkfnF (6.6) 75 ở đây f(k) = f(kT) và W N = e - j2 /N . W N đợc gọi là hạt nhân của phép biến đổi. Tổng quát, F(n) có dạng )( )()( nj enAnF = (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 DFT Hàm f(k) là biến đổi ngợc DFT của F(n) cho bởi theo biểu thức = = 1 0 2 )( 1 )( N n nk N j enF N kf (6.8) Chứng minh: Từ định nghĩa của DFT = = = = = = = 1 0 1 0 )( 1 0 1 0 1 0 )( 1 )( 1 )( 1 N m N n mkn N kn N N n N m nm N N n nk N Wmf N WWmf N WnF N (6.9) Đặt = = 1 0 )( N n mkn N WS Nếu (k = m) thì S = N. Nếu (k m), chúng ta có thể viết: S = 1 + W N (k -m ) + W N 2(k -m ) + + W N (N-1)(k -m ) hoặc )( 2 ))(2( m)-(k N m)-N(k N 1 1 W-1 W-1 mk N j mkj e e S = = 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 f(k).N 1 )( 1 1 0 N WnF N N n nk N == = 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 76 Chú ý từ biểu thức (6.8) ta có thể dễ dàng chứng minh: )( )( 1 )( 1 1 0 . 2 1 0 )( 2 kf enF N enF N N n nk N j N n Nkn N j = = = = = + (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 f 1 (n) và f 2 (n), và cả hai dãy này tuần hoàn với chu kỳ N, đợc dùng để tính f 3 (k) = af 1 (k) + bf 2 (k) (6.11) là kết quả của biến đổi DFT f 3 (n) cho bởi F3(n) = aF1(n) + bF2(n) (6.12) ở đây a, b là hằng số và F 1 (n) = DFT của f 1 (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. nk N j N k nk N j N k N N j N k nNk N eekf eekf WkfnNF = = = = = = 2 1 0 2 1 0 2 1 0 )( )( )( )()( Nếu f(k) là thực thì = = = )()()( 1 0 . 2 nFekfnNF N k nk N j (6.13) Dấu * có nghĩa là liên hợp phức. Tích chập tuần hoàn. Coi f 1 (k) và f 2 (k) là hai dãy tuần hoàn có chu kỳ N, với biến đổi Fourier rời rạc là F 1 (n) và F 2 (n). Xem xét tích F(n 1 ).F(n 2 ) 77 )( Nkf + khi )()( 1 0 1111 1 11 = = N k kn N WkfnF )()( 1 0 2222 2 22 = = N k kn N WkfnF và tại các vị trí n 1 = n 2 = n Đặt f 3 (k) = IDFT của F 1 (n).F 2 (n) hay ( ) nk N n WnFnF N kf = = 1 0 213 )().( 1 )( vì vậy = = = + = = = = = + 1 0 )( 1 0 22 1 0 11 1 0 1 0 1 0 )( 2211 21 21 1 2 21 1 )()( )()( 1 N n kkkn N N k N k nk N N n N k N k kkn N 3 W N kfkf WWkfkf N (k)f Chú ý là = = + 0 1 1 1 0 )( 21 N n kkkn W N ở đây l là số nguyên. Vì vậy mà )()()( 12 1 01 113 lNkkfkfkf N k = = (6.14) ở đâ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. 78 cho k = k 1 + k 2 + lN các trờng hợp còn lại. W = .= 2 n- N 2 1 11 1 2 22 1 11 1 0 2211 1 0 1 0 12 1 0 111111 )()( )()()().( k N k kn N N n N k kn N N k kn N Wkfkf WkfWkfnFnF = = = = Bài tập 6.1 Cho hai dãy sau = 0 1 )( 1 kf = 0 1 )( 2 kf 1. Tính bằng tay tích chập của hai dãy trên. Vẽ một lu đồ 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 f 3 (k) từ biểu thức f 3 (k) = IDFT{DFT[f 1 (k)]. DFT[f 1 (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 f 1 (k) và f 2 (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 Fourier Tí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ì N 2 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 = 2 10 ta sẽ phải tính 2 20 = 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= 2 r (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, = = 15 0 16 )()( k nk WkfnF 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à, = = += 15 0 16 15 0 16 )()()( k nk k nk WkfWkfnF k chẵn k lẻ Chúng có thể viết thành 79 0 k 1 4 các trờng hợp còn lại. 0 k 1 5 các trờng hợp còn lại. = + = ++= 7 0 )12( 16 7 0 )2( 16 )12()2()( k kn k kn WkfWkfnF (6.15) Chú ý là nk nkjknj kn W eeW = == 8 . 8 2 )2(. 16 2 )2( 16 vì thế = = ++= 7 0 816 7 0 8 )12()2()( k nkn k nk WkfWWkfnF đặt f(2k)(k)f 10 = 1)f(2k(k)f 11 += Ta đợc = = += 7 0 81116 7 0 810 )()()( k nkn k nk WkfWWkfnF (6. 16) Đặt = = 7 0 81010 )()( k nk WkfnF (6.17) = = 7 0 81111 )()( k nk WkfnF (6.18) Viết lại biểu thức (6.16) chúng ta đợc (n)FW (n)F F(n) 11 -n 1610 += (6.19) Cũng nh vậy, phát triển cho một biểu thức (n)FW -(n)F 8)F(n 11 -n 1610 =+ (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 W 16 -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 = = 7 0 81010 )()( k nk WkfnF Xử lý nh trên chúng ta có 80 ∑∑ = −− = − ++= 7 0 4108 3 0 41010 )12()2()( k nkn k nk WkfWWkfnF DÔ thÊy -2n 16 -n 8 WW = ®Æt 1)(2kf(k)f (2k)f(k)f 1021 1020 += = H×nh 6.1 (a) Bím; (b) BiÓu diÔn rót gän. 81 F 10 (n) F(n) F 11 (n) F(n+8) F 10 (n) F(n) F 11 (n) F(n+8) 1 W 16 -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, = = += 3 0 421 3 0 2 1642010 )()()( k nk k nnk WkfWWkfnF (n)FW (n)F (n)F 21 -2n 162010 += (6.21) (n)FW - (n)F 4)(nF 21 -2n 162010 =+ (6.22) ở đây = = 3 0 42020 )()( k nk WkfnF (6.23) = = 3 0 42121 )()( k nk WkfnF (6.24) Tơng tự (n)FW (n)F (n)F 23 -2n 162211 += (6.25) (n)FW - (n)F 4)(nF 23 -2n 162211 =+ (6.26) ở đây = = 3 0 42222 )()( k nk WkfnF (6.27) 82 012!4567 012!4567 012!4567 891011121! 1415 F 10 (n) F(n) F 11 (n) X(k) X(k) = = 3 0 42323 )()( k nk WkfnF (6.28) và (2k)f (k)f 1122 = 1)(2kf (k)f 1123 += 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)F 31 -4n 163020 += (6.29) (n)FW - (n)F 2)(nF 31 -4n 163020 =+ (6.30) (n)FW (n)F (n)F 33 -4n 163221 += (6.31) (n)FW - (n)F 2)(nF 33 -4n 163221 =+ (6.32) (n)FW (n)F (n)F 35 -4n 163422 += (6.33) (n)FW - (n)F 2)(nF 35 -4n 163422 =+ (6.34) (n)FW (n)F (n)F 37 -4n 163623 += (6.35) (n)FW - (n)F 2)(nF 37 -4n 163623 =+ (6.36) ở đây F n f k W nk k 30 30 2 0 1 ( ) ( )= = (6.37) F n f k W nk k 31 31 2 0 3 ( ) ( )= = (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ừ F 30 (n) đến F 37 (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 đồ. 8! 012!012! 012!012! 012!4567 012!4567 0 F 20 (n) 2 F 21 (n) 4 6 F 22 (n) 0 F 2! (n) 4 2 6 F 10 (n) F 11 (n) X(k) X(k) W -2n Hệ số xoay n=0 đến ! H×nh 6.3 Bíc thø hai sau bíc cuèi cïng trong thuËt to¸n FFT. 84 [...]... trận có kích thớc 23 ì 23 Trong tất cả các lần lặp lại bạn cần phải giữ lại trong bộ nhớ kích hoạt tại hai hàng cuối cùng, cho phép lặp, tất cả là yêu cầu yêu cầu N lần truy nhập đĩa cho xử lý một ảnh có kích thớc N ì N Nếu N = 2r thì r ì N số lần truy nhập đĩa để dịch chuyển một ảnh, ít hơn nhiều so với N ì N lần truy nhập trong cách xử lý đọc một ảnh cơ bản từng khối một Số lần truy nhập đĩa có thể... thì pha của ảnh cũng bị biến dạng Lý do của sự biến dạng này là tất cả các điểm đều phải chịu một sự dịch chuyển vị trí khác nhau tuỳ theo vị trí của ảnh Tổng quát, ảnh đã đợc lọc có thể cho bởi i f (n1 - f (n1 , n2 ), n2 - f( n1 , n 2 )) ở đây f là hàm dịch chuyển vị trí Chú ý rằng một ảnh biến dạng pha sẽ xuất hiện trên màn hình nh một ảnh mờ Tính đối xứng liên hợp và tuần hoàn Biến đổi2 -D DFT và... bốn bớc trong lu đồ Trong mỗi bớc cần phải có tám bớm Trong mỗi bớm chỉ có một phép nhân phức, hai phép cộng hoặc trừ phức Tổng số phép nhân phức là 8/2 4 Tổng quát cho N = 2r số phép nhân phức là (N/2) r = (N/2 ) log2 N và số phép cộng là Nlog2N Chú ý, thực tế số phép nhân sẽ giảm xuống một ít, vì trong bớc đầu tiên hệ số xoay W 0 = 1 và trong các bớc còn lại chúng ta cũng có các bớm với hệ số xoay... incr . 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 : = = 1 0 2 )()( N k nk N j ekTfnF . = + = = 1 0 2 1 0 2121 1 2211 2 ),(),( N k knkn N j N k ekkhnnH (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,. 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