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

Giáo trình xử lý ảnh y tế Tập 1a P6 ppt

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 (1.26 MB, 11 trang )


44



Theo định nghĩa:


),(
),(
),(
yxi
yxf
yxr  (4.3)

),(),(),( yxiyxryxf

(4.4)
ở đây r(x,y) đặc trưng cho các vật thể trong ảnh. Khi các vật mang các chi tiết
trong ảnh như đường viền giữa các vật thể, các đường biên trong vật thể, , thì
hàm r(x,y) sẽ chứa các tần số cao hơn i(x,y), hàm đặc trưng cho độ chói và
thường có thay đổi khá đều đặn trên ảnh. Một phương pháp dùng để tăng
cường chất lượng của ảnh là làm giảm sự tác động của yếu tố độ sáng và tăng
cường các chi tiết của ảnh. Nó được thực hiện bằng cách chia ảnh thành hai
khối khi đi qua bộ nhấn tần số cao. Các bước xử lý tiếp được mô tả trong một
loại bộ lọc đặc biệt gọi là bộ lọc đồng hình.
4.3 Lọc đồng hình
Một giải pháp cung cấp độ nổi cho các vật thể trong một ảnh đã cho là làm
giảm tác động của độ chói. Nó được thực hiện bằng cách đầu tiên chia tín hiệu
ảnh thành hai thành phần r(x,y) và i(x,y), và sau đó tăng cường thành phần tần
số cao. Điều này có thể thực hiện bằng cách lấy logarit của hàm cường độ sáng


f(x,y). Kết quả sau đó được lọc qua bộ lọc 2-D có đặc tính như trong hình 4.1.








Hình 4.1 Biểu diễn dạng bộ lọc đồng hình.
Lấy đối lôgarit kết quả cho ta kết quả cuối cùng. Toàn bộ quá trình này
được mô tả ở hình 4.2 hoặc theo các biểu thức sau:

)),(ln()),(ln()),(ln( yxiyxryxf


(4.5)
),(*)),(ln(),( yxhyxfyxo

(4.6)
H(

1
,

2
D(

1
,


2
)
D
0



L



H


45

dấu * là tích chập. Ảnh nhận được tại đầu ra được cho bởi:

),(
),(
yxo
eyxg 
(4.7)
Thuật toán này sẽ làm giảm ảnh hưởng của những tín hiệu chói không đồng
đều trong ảnh và làm nổi các chi tiết trên ảnh. Ba tham số trong hình 4.1 (
H

,
L ,

,D
0
) được chọn từ thực nghiệm. Đặc tuyến trong hình 4.1 có thể được mô
tả, cho ví dụ, bằng hàm Butterworth, cho trong trường hợp này theo biểu thức:

Cho



 
H
LH
LH
LH
DD
D
H












)(

1
),(
),(
),(
2
0
2
21
2
21
21

các trường hợp còn lại H
H
( , )



1 2

(4.8)




Hình 4.2 Lọc đồng hình.

Bảng 4.1 Các hệ số của bộ lọc 5  5 được dùng theo kiểu lọc đồng hình.

0.02675 -0.001526 -0.007420 -0.001526 -

.002675
-
0.001526
-0.034115

-0.059471 -0.034115 -
.001526
-
0.007420
-0.059471 0.902895 -0.059471 -
.007420
-
0.001526
-0.034115 -0.059471 -0.034115 -
.001526
-
0.002675
-0.001526 -0.007420 -0.001526 0.00267
5


Dùng chương trình (2.1) trong chương 2, chúng ta có thể thiết kế bộ lọc FIR
có đặc tuyến mô tả bằng biểu thức (4.8). Các hệ số của bộ lọc 5  5 có 
H
=
1.0, 
L
= 0.5 và D
0
= 0.8  được cho ở bảng 4.1. Đáp ứng tần số được cho ở

hình 4.3.
Chương trình lọc ảnh dùng bộ lọc FIR được cho ở trong chương 3, chương
trình 3.2, có thể thay đổi thành lọc đồng hình. Chú ý rằng, nếu logarit của giá

ln[f(x,y)]

H(
1
, 
2
)


e
o(x ,y)

ảnh đã lọc

f(x,y)

o(x,y)
0
2
2
2
121
),( DD 


46


trị điểm ảnh đã được chuyển vào bộ đệm, thì bộ đệm chuyển ảnh trong hình
3.1 phải có kiểu "float" thay cho kiểu "unsigned char". Kết quả của chương
trình được chứa vào các biến con trỏ float thay thế cho các biến giá trị nguyên.
Trước khi lấy logarit, tốt nhất là nên chia các mức xám của ảnh đầu vào
nằm trong khoảng giữa 0.0000001 đến 10. Điều này sẽ hạn chế đầu vào với
phần chia của hệ số logarit, việc đó sẽ qui định sự phân ly giữa các giá trị
điểm, ngaọi trừ giá trị không, giá trị này sẽ là  trong hệ số logarit.

Bài tập 4.1 Thay đổi chương trình 3.2 để đưa ra bộ lọc đồng hình.

Chúng ta sẽ kiểm tra khái niệm lọc đồng hình. Hình 4.5 đưa ra một ảnh sẽ
được sử dụng để kiểm tra. Hình 4.6 trình bày một ảnh sau khi áp dụng lọc
đồng hình với bộ lọc có hệ số cho trong bảng 4.1. Bạn chú ý rằng nhiều đặc
điểm trong ảnh bây giờ trở nên rõ ràng hơn. Tuy nhiên, lọc đồng hình đã
không di chuyển một vài ảnh hưởng ánh sáng, cũng như các vùng phản chiếu
và bóng tối.

Bài tập 4.2
1. Thiết kế bộ lọc 7  7 dùng xấp xỉ hàm Butterword cho bởi biểu thức
(4.8) với H = 1.0, L= 0.25 và D0 = 0.8  và H = 1.0, L= 0.25 và D0
= 0.6 . Thiết kế bộ lọc FIR 7  7 dùng xấp xỉ hàm bộ lọc thông cao
Butterword được cho trong ví dụ 2.6 trong chương 2.
2. Dùng bộ lọc có các hệ số cho trong bảng 4.1 và thiết kế để lọc ảnh cho
trên đĩa với file có tên là "TESH.IMG".
3. Bây giờ lọc ảnh "TESH. IMG" với bộ lọc thông cao có cùng đặc tuyến.
4. Lặp lại phần 2 và 3 trên ảnh "PISTON.IMG" có sẵn trên ảnh đi kèm
5. Giải thích các kết quả khác nhau thu được từ bài tập này.




47



Hình 4.3 Ảnh 3-D thiết kế bộ lọc 5  5 với D
0
= 0.8, 
L
= 0.5.
Hệ số được cho trong bảng 4.1.













Hình 4.4 Đồ thị ln(x).


48



















Hình 4.5 Ảnh dùng kiểm tra lọc đồng hình.















49





Hình 4.6 Ảnh đã lọc đồng hình.
4.4 Lọc pha tương phản
Giải pháp lọc pha tương phản được mô tả tốt nhất bằng biểu đồ hình 4.7.
Ảnh I(x,y) đi qua bộ lọc thông toàn bộ với các đặc tuyến pha mô tả ở hình 4.8.










Hình 4.7 Sơ đồ khối của lọc pha tương phản.






















H(
1
,
2
)




I(x,y)
g(x,y)


c





D(

1
,


2
)

(

1
,


2
)

1
D(

1
,


2
)
H (


1
,


2
)

50

Hình 4.8 Đặc tuyến pha và biên độ của PCF.
Lọc pha tương phản (PCF) được dùng trong lọc không gian để hoàn trả lại
các chi tiết có thể nhìn thấy được với gradient pha. Phổ pha của ảnh mang theo
nhiều tin tức về ảnh hơn là biên độ phổ. Chúng ta sẽ làm rõ điều này trong
chương 7. Có lẽ sẽ là hợp lý hơn nếu chúng ta xử lý trực tiếp góc pha của ảnh
để làm nổi ảnh hơn là xử lý biên độ ảnh. Từ sơ đồ khối hình 4.7 ta có thể viết :
),(),(),(),( yxIyxhyxIyxg


(4.9)
Lấy biến đổi Fourier cả hai vế của (4.9) ta có :

G I H I( , ) ( , ) ( , ) ( , )









1 2 1 2 1 2 1 2



hoặc

G
I
H
( , )
( , )
( , )


 
 
1 2
1 2
1 2
1 
(4.10)
Khi H(

1
,

2
) = 1 với D(

1

,

2
) <

c
và H(

1
,

2
) = -1 với D(

1
,

2
) 

c

thì

G
I
( , )
( , )



 
1 2
1 2
0
với D(

1
,

2
) < 
c

(4.11)

G
I
( , )
( , )


 
1 2
1 2
2
với D(

1
,


2
)  
c

(4.12)
thì đây là bộ lọc thông cao (HPF) đối xứng vòng tròn, với một sự với chuyển
tiếp đột ngột từ giải thông sang dải chắn.













51










Hình 4.9 (a) Bề mặt của Pít tông; (b) Lọc bằng bộ lọc PCF với điểm 25.1
c


(c) Lọc bằng bộ lọc PCF với điểm 4.1
c

; (d) Lọc ảnh với bộ lọc HPF có
miền chuyển tiếp dốc có điểm cắt 4.1
c

.
4.5 Thay đổi lược đồ mức xám
Lược đồ mức xám (Histogram) trong một ảnh được định nghĩa bởi
h i
n i
n
( )
( )

(4.13)
ở đây n(i) = tổng các mức xám trong ảnh có giá trị i và n = tổng số các mức
xám trong ảnh.
Sự phân bố p(i) hoặc n(i) có thể cung cấp thông tin về dáng điệu của ảnh.
Một ảnh có phân bố mức xám giống như hình 4.10a thì có sắc màu tối, một
ảnh phân bố mức xám như hình 4.10b thì có sắc màu sáng. Vì lý do này, ta có
thể làm nổi ảnh bằng cách thay đổi phân bố n(i) để chỉnh lại các sắc màu của
các mức xám trên ảnh.
4.5.1 Xử lý tương phản
Việc mở rộng mức xám tuyến tính có thể thực hiện bằng cách ánh xạ mức

xám của ảnh gốc qua hàm ánh xạ tuyến tính chỉ trên hình 4.11. Đó là:
255
minmax
min
rr
rr
s


 (4.14)
ở đây, r là một mức xám trên ảnh gốc và s là mức xám đã qua ánh xạ. Ảnh
ánh xạ sẽ có mức xám kéo dài trong khoảng giữa 0 và 255. Điều này có thể
đưa đến một vài cải thiện đối với ảnh, và được sử dụng như công đoạn cuối
cùng trong tất cả chương trình lọc được cung cấp trong quyển sách này.


n(i)
i
255

0

a

n(i)
i
255
0

b



52








Hình 4.10 (a) Lược đồ mức xám của một ảnh có sắc màu tối;
(b) Lược đồ mức xám của một ảnh có sắc màu sáng.











Hình 4.11 Thang chia mức xám tuyến tính.
4.5.2 San bằng lược đồ mức xám
Sự biến đổi biểu đồ phân bố các mức xám có thể đạt được một cách gần
đúng bằng cách xét hàm mật độ xác suất liên tục p
r
(r) thay cho h(i). Cái mà

chúng ta cần đến là có được một phép đổi ánh xạ mức xám trên ảnh gốc, thay
biến r bởi một biến mới s vì vậy sự phân bổ mức xám trên ảnh biến đổi theo
công thức sau:
)(rTs


(4.15)
Biến đổi ngược được cho bởi

)(
1
sTr



(4.16)
Trong đó )(rT và
)(
1
sT

là hàm đơn giá trị đơn điệu tăng theo r và s.
Nếu )(sp
s
chỉ rõ hàm mật độ xác xuất của ảnh được biến đổi thì từ lý thuyết
xác xuất ta có thể viết:
r

r
max


r
min
0 255 s


53


)(
1
)()(
sTr
rs
ds
dr
rpsp









(4.17)
Chúng ta giả thiết rằng, tại một thời điểm, ảnh gốc và ảnh qua ánh xạ là các
hàm liên tục với hai biến không gian độc lập x và y.
Bây giờ hãy xem đến sự biến đổi




r
r
dprTs
0
)()(

(4.18)
Trong đó vế bên phải được biết đến như hàm phân bố tích luỹ (cumulative
distribution function - CDF). Từ công thức (4.18) chúng ta có thể viết:
)(rp
dr
ds
r
 (4.19)
Thay thế công thức (4.19) vào (4.17) chúng ta có

0.1
)(
1
)()( 
rp
rpsp
r
rs
(4.20)
Vì vậy, phép biến đổi cho bởi công thức (4.18) cho ảnh mức xám có phổ
đồng đều. Biến đổi trên có thể được viết dưới dạng tổng quát hoá như sau:





k
j
k
jns
0
)( (4.21)
Hoặc, chúng ta muốn ánh xạ ảnh mức xám nằm giữa 0 và 255, chúng ta có
thể thay đổi
k
s như sau:
255
0255
0
ss
ss
s
k
k


 (4.22)
Chú ý rằng vì công thức (4.21) là một xấp xỉ của công thức (4.18) bằng cách
cho rằng ảnh ánh xạ có thể có lược đồ mức xám không thực sự đồng đều. Một
nhân tố khác cũng không được quan tâm trong quá trình biến đổi, đó là với
một số ảnh mà các mức xám không phủ kýn các miền thì CDF sẽ giữ lại hằng
số ở những miền không được phủ kýn đó. Những nhân tố này sẽ cho kết quả

trong ảnh ánh xạ mà ở đó lược đồ mức xám là xấp xỉ gần nhất với lược đồ
mức xám đồng đều được rút ra từ ảnh gốc.
Chương trình 4.1 cho dưới đây dùng cho việc san bằng lược đồ mức xám.






54

Chương trình 4.1 "UNI_HIST.C".

/* PROGRAM 4.1 “UNI_HIST.C”. Histogram
equalization. */

/* Histogram equalization. */

#define MAX 16384

#include <stdio.h>
#include <conio.h>
#include <io.h>
#include <math.h>
#include <ctype.h>
#include <stdlib.h>

void main()
{
int image_length,image_width,i,j,ch,true_length;

unsigned long int histo[256],s[256];
char file_name[14];
unsigned char buff[MAX];
int k,n,ind;
double nsq;
float range;
FILE *fptr,*fptr2;

clrscr();
printf("Enter file name of image >");
scanf("%s",file_name);
fptr=fopen(file_name,"rb");
if(fptr==NULL)
{
printf("%s does not exist.",file_name);
exit(1);
}
printf("Enter file name for storing mapped image
>");
scanf("%s",file_name);
gotoxy(1,3);
printf(" ");
ind=access(file_name,0);
while(!ind)
{

×