166 - 0.011698 0.013089 0.141409 0.235352 0.141409 0.013089 - 0.011698 - 0.009179 - 0.000057 0.079576 0.141409 0.079576 - 0.000057 - 0.009179 - 0.003200 - 0.010464 - 0.000057 0.013089 - 0.000057 - 0.010 464 - 0.003200 0.000517 - 0.003200 - 0.009179 - 0.011698 - 0.009179 - 0.003200 0.000517 162 Chương 9 Bộ lọc có đáp ứng xung vô hạn hai chiều 9.1 Chỉ dẫn Trong các chương trước, chúng ta đã nghiên cứu lọc ảnh bằng các bộ lọc FIR. Chúng ta cũng đã lọc ảnh trực tiếp từ miền tần số thông qua FFT. Hình như là không có một vấn đề nào rõ ràng với các bộ lọc kiểu FIR khiến chúng ta quan tâm đến các kiểu khác của hàm truyền đạt. Tuy vậy, rõ ràng lọc FIR là một xấp xỉ đối với đáp ứng xung vô hạn của hệ thống LSI bằng cách cắt giảm bớt. Các hệ thống với miền chuyển tiếp dần dần có thể xấp xỉ hoá bằng bộ lọc FIR bậc thấp. Nhưng dù thế nào đi chăng nữa, thì hệ thống có miền chuyển đổi dốc cũng đòi hỏi các bộ lọc FIR bậc cao. Đấy là do sự hội tụ chậm của chuỗi Fourier. Biểu thức của chuỗi Fourier biểu diễn cho hệ số của bộ lọc FIR. Bằng cách cắt bớt chuỗi này, nhằm sử dụng các bộ lọc FIR bậc thấp đã dẫn đến các dao động Gibbs, đã được cho ở trong chương 8. Mặc dù các hàm cửa sổ có thể giảm thiểu các dao động này, nhưng rút cục là một bộ lọc có miền chuyển tiếp dốc hơn và các nhiễu gợn nhỏ hơn. Vì vậy, chúng ta chỉ có một lựa chọn duy nhất là sử dụng các bộ lọc bậc cao để rút ra các miền chuyển tiếp dốc, nếu chúng ta kiên trì với các bộ lọc FIR. Điều này cũng có nghĩa là thời gian tính toán cho một ảnh lọc cũng nhiều hơn. Nếu chúng ta cần một bộ lọc với thời gian thực thì phần cứng cần phải được được cung cấp đi kèm, và các bậc cao hơn thì đẫn đến kết quả giá cả cao hơn. Như một sự lựa chọn, chúng ta sẽ bắt đầu với hàm chuyển đổi mà có đáp ứng xung vô hạn. Tất cả các hàm chuyển đổi này được biết dưới cái tên bộ lọc có đáp ứng xung vô hạn (Infinite-Impulse-Response filter) hay là gọi là bộ lọc IIR. Các kiểu bộ lọc sẽ đạt được dải chuyển đổi dốc với bậc nhỏ hơn kiểu lọc FIR. Nếu như vậy, chắc bạn sẽ tự hỏi là tại sao chúng ta không bỏ lọc FIR đi mà sử dụng lọc IIR? Nguyên nhân là thiết kế và phần cứng bộ lọc FIR đã có sẵn, còn thiết kế cho bộ lọc IIR vẫn chưa có. Ví dụ, nếu bộ lọc IIR có đáp ứng xung vô hạn, thì chúng có xu hướng ngày càng không ổn định. Vì vậy, đáp ứng xung có thể tăng lên rất lớn nếu ta không có một sự cẩn thận trong thiết kế. Pha tuyến tính, một yêu cầu cần thiết trong lọc ảnh, có thể đạt được dễ dàng từ lọc FIR hơn là từ lọc IIR. Tuy nhiên, sự thuận lợi cung cấp bởi các hàm chuyển đổi IIR khiến cho chúng có đủ sức thu hút chúng ta quan tâm đến vấ đề này. Trong chương này chúng ta sẽ xem một số giả thiết đơn giản cho thiết kế bộ lọc IIR với đặc tuyến pha gần tuyến tính. 163 9.2 Bộ lọc IIR Hàm truyền đạt của bộ lọc cho bởi : N i N j j i ij N i N j j i ij zzb zza zzH 0 0 2 1 0 0 2 1 21 ),( (9.1) Không mất tính tổng quát, b 00 đặt bằng 1. Nếu y(m,n) và x(m,n) là dãy tín hiệu ra và vào, từ biểu thức (4.93) ta có thể viết ),(),(),( 0 0 0 0 0 jnimxbjnimxanmy ij N i N j ji N i N j ij (9.2) Để bộ lọc thực hiện được và ổn định đáp ứng xung h(m,n) phải có những hạn chế sau h m n( , ) 0 (m < 0) (n < 0) (9.3) 0 0 ),( m n nmh (9.4) Biểu thức (9.4) dẫn đến kết luận khi xem xét kỹ thuật thiết kế cho các bộ lọc IIR là phương pháp dùng đáp ứng không gian thuận tiện hơn phương pháp dùng đáp ứng tần số. Nếu như phương pháp đáp ứng không gian không hiệu quả khi m, n tăng, thì thiết kế một bộ lọc xấp xỉ nhưng ổn định là cần thiết. Vậy thì bộ lọc đó phải thoả mãn điều kiện cho bởi công thức (9.4). Bởi vì đáp ứng không gian và đáp ứng tần số liên hệ với nhau qua chuyển đổi Fourier, Ta có thể rút ra kết luận là bộ lọc xấp xỉ với đáp ứng xung là tương đương với bộ lọc xấp xỉ với đáp ứng tần số tương ứng. Điều này nói chung là đúng. Tuy nhiên, như chúng ta đã thấy thiết kế của bộ lọc FIR, cái đặc trưng cơ bản nhất là phổ biên độ với điểm pha không. Câu hỏi sẽ là, với đặc điểm pha nào ( 1 , 2 ) thì bộ lọc ổn định? Biết rằng chúng ta cần pha tuyến tính hoặc các hằng số trễ, ở đây các nhóm trễ được định nghĩa là 2 21 212 1 21 211 ),( ),( ),( ),( (9.5) 164 công việc là lựa chọn ra các hằng số trễ. Trong phần tiếp theo chúng ta sẽ nghiên cứu một phương pháp phổ biến để thiết kế bộ lọc, tiếp đó là các thay đổi cần thiết bao gồm cả các điểm pha tuyến tính. 9.3 Phương pháp Shanks Đây là một trong những phương pháp đầu tiên được dùng trong thiết kế không gian bộ lọc IIR. Mặc dù đây là một phương pháp tiếp cận trong miền không gian nhưng chúng ta sẽ bắt đầu xem xét phương pháp này trong miền tần số, sau đó nội suy sang miền không gian. Lý do của cách làm này được thể hiện qua một loạt các biểu thức. Đáp ứng tần số của các bộ lọc IIR được mô tả ở bằng biểu thức (4.93) có thể rút ra bằng cách đặt 1 1 j ez , và 2 2 j ez . Vì vậy, H A B ( , ) ( , ) ( , ) 1 2 1 2 1 2 (9.6) ở đây N l N k jj lk eeaA 0 0 21 21 ),( (9.7) và N l N k jj lk eebB 0 0 21 21 ),( (9.8) Nếu H d ( , ) 1 2 là phổ tần số mong muốn thì ),( ),( ),(),( 21 21 2121 B A H d (9.9) Chuyển biểu thức (4.99) sang miền không gian ta có ),(),(),( nmhnmhnm d (9.10) ở đây h(m,n) là đáp ứng xung của bộ lọc và có thể rút ra từ N i N j ij N i N j ij ji jnimhbjnimanmh 0 00 0 0)( ),(),(),( (9.11) Các hệ số {a mn } và {b mn } chưa được xác định. Xây dựng theo chuẩn L 2 M m M n nmQ 0 0 2 ),( (9.12) ở đây M M là số các mẫu được cung cấp từ đáp ứng xung. Để rút ra các hệ số của bộ lọc ta cần tối thiểu hoá Q. Điều này đạt được nếu ta đạo hàm Q theo các hệ số của bộ lọc và cho kết quả sau khi đạo hàm bằng 0. 165 M m M n lklk a nm nm a Q 0 0 ),( ),(2 (9.13) l, k = 0, 1, , N và M m lk M n lk b nm nm b Q 0 0 ),( ),(2 (9.14) l, k = 0, 1, , N l + k 0. Biểu thức (9.13) tạo ra (N + 1) (N + 1) phương trình phi tuyến với {a ij } và {b ij }. Biểu thức (9.14) tạo ra (N + 1) (N + 1) - 1 phương trình phi tuyến với {a ij } và {b ij }. Bởi vì số các hệ số của bộ lọc là 2(N + 1) (N + 1) - 1, nên từ các phương trình này ta có thể tìm ra các hệ số và tìm được bộ lọc yêu cầu. Để tránh phải tính toán một loạt các phương trình phi tuyến mô tả ở trên, Shanks và một số người đưa ra phương pháp cho phép tối thiểu hoá một hàm lỗi được biến đổi. Mặc dù phương pháp này được xây dựng bởi Shanks, Treitel, Justice, nó vẫn được biết đến dưới tên là phương pháp Shanks. Nhân biểu thức (4.99) với B( 1 , 2 ) chúng ta rút ra ),(),(),(),(),( 2121212121 AHBB d (9.15) Thay thế sai số “tải trọng” ( , ) ( , ) 1 2 1 2 B bằng ),( 21 trong biểu thức (9.15) và chuyển kết quả sang miền không gian ta được. N i N j N i N j ij d ij jnimajnimhbnm 0 0 0 0 ),(),(),( (9.16) Cần nhắc lại là phép nhân trong miền tần số thì tương đương với tích chập trong miền không gian. Bây giờ ta xây dựng theo chuẩn L 2 M m M n nmQ 0 0 2 ),( (9.17) Đã rõ ràng trong bước này lý do tại sao chúng ta bắt đầu định nghĩa của sai số trong miền tần số sau đó chuyển kết quả sang miền không gian. Biểu thức (9.17) cho ta giá trị tối thiểu thực sự của L 2 dưới dạng sai số “tải trọng”, và không phải sai số thực sự. Để tối thiểu hoá Q ta đạo hàm biểu thức này theo các hệ số của bộ lọc và cho kết quả bằng 0. M m M n N i N j N i N j d ijij lk jnimhbjnima a Q 0 0 0 0 0 0 ),(),(2 ( , ) , , , , ,m l n k l k N 0 012 (9.18) Từ phương trình (9.18) ta có thể viết 166 Rnm jnimhba N i N j d ijmn , ),( 0 0 (9.19) ở đây R là miền không gạch chéo ở hình (9.14). Bởi vậy, biểu thức (9.17) có thể được viết lại dưới dạng , ),( 2 0 0 Rnm jnimhbQ m n N i N j d ij (9.20) Tối thiểu Q ta đạo hàm biểu thức và cho nó bằng không Rnm knlmhjnimhb b Q m n d N i N j d ij lk , 0),(),(2 0 0 (9.21) 0 , ,2,1,0, ., ),(),(- ),(),( m n 0 0 klNklRnm knlmhnmh knlmhjnimhb dd m n dd N i N j ij (9.22) Phương trình (9.22) tạo ra (N + 1) (N + 1) - 1 các phương trình tuyến tính có thể giải ra được để tính các hệ số của bộ lọc. (0,0) m n (M,M) (N,N) R 167 Hình 9.1 Miền R cho biểu thức (4.19). 9.4 Tính đáp ứng xung Thuật toán chúng ta dùng để tính đáp ứng xung sẽ cũng tương tự như các bước ta dùng trong tính toán với các hệ số của bộ lọc FIR. Thuật toán này theo các bước sau : 1. Rút ra M M điểm của phổ biên độ mong muốn, H d (m,n), với điểm tần số (0,0) nằm tại trung tâm của mảng, cụ thể tại (M/2, M/2). M nên là bội số của 2, H d (m,n) nên đối xứng một cách chặt chẽ. 2. Rút ra IFFT của H d (m,n)(-1) (m+n) , bằng cách thừa nhận phổ pha không. 3. Nhân kết quả thu được với (-1) (m+n) . Điều này sẽ giúp thu được đáp ứng xung với gốc toạ độ nằm tại (M/2, M/2). 2 21 ),( ),( 414.01 1 21 c R H (9.23) ở đây 2 2 2 121 ),( R , và tần số cắt là c = 1.0 rad/đơn vị. n đặc trưng cho bậc của hàm Butterworth. Các bộ lọc có bậc càng cao, miền chuyển tiếp càng dốc, n không phải là bậc của bộ lọc 2-D. Bậc của bộ lọc 2-D sẽ được chọn khi thiết kế bộ lọc. Trong ví dụ này thì n được chọn bằng 2. Đáp ứng trong miền không gian được cho ở hình 9.2. Chương trình dùng để tính đáp ứng xung từ đáp ứng tần số được cho ở chương trình 9.1. Trong chương trình này chúng tôi cho cung cấp một số tuỳ chọn như lựa chọn giữa lọc thông thấp và thông cao, lựa chọn dùng các hàm Butterworth hay là kiểu có miền chuyển tiếp dốc. Dựa trên các giả thiết ở trên chúng ta có thể đưa ra được thuật toán thiết kế bộ lọc 2-D có pha tuyến tính ổn định. Chương trình cho giải thuật này sẽ trình bày ở phần tiếp theo. 168 Hình 9.2 Đặc tuyến không gian rút ra từ chương trình giải thích cho ví dụ của phần nói về đặc tuyến truyền đạt Butterworth. Chương trình 9.1 “IMPULSE.C”. Sinh đáp ứng xung từ đáp ứng tần số. /* Program for calculating impulse-response from frequency-specifications. Result is stored with the (0,O) point centered at the middle of the output 2-D array. You can either supply your own data or select from a set of standard functions. If you supply your own data the first two values should be the dimensions of the array e.g. 32 x32. The dimensions of the array should be a power of two. The data that follows is the magnitude specifications in "%f " format stored in a row by row fashion, with no return code after every row. */ #define pi 3.141592654 #include <stdio.h> #include <math.h> #include <alloc.h> #include <stdlib.h> #include <io.h> #include <ctype.h> #include <string.h> #include <conio.h> . 2 ) chúng ta rút ra ),(),(),(),(),( 21 2 121 2 121 AHBB d (9.15) Thay thế sai số “tải trọng” ( , ) ( , ) 1 2 1 2 B bằng ),( 21 trong biểu thức (9.15) và chuyển. 2 2 j ez . Vì v y, H A B ( , ) ( , ) ( , ) 1 2 1 2 1 2 (9.6) ở đ y N l N k jj lk eeaA 0 0 21 21 ),( (9.7) và N l N k jj lk eebB 0 0 21 21 ),( . thu được đáp ứng xung với gốc toạ độ nằm tại (M /2, M /2) . 2 21 ),( ),( 414.01 1 21 c R H (9 .23 ) ở đ y 2 2 2 121 ),( R , và tần số cắt là c = 1.0 rad/đơn