Tải bản đầy đủ (.pdf) (8 trang)

Giáo trình xử lý ảnh y tế Tập 2 P7 potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (227.37 KB, 8 trang )

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)



 


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


 
 

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>

×