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

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

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 (305.3 KB, 11 trang )

11











Hình 2.3 T
V
và T
H
cho lấy mẫu ảnh trên một ma trận camera CCD.
Hình 2.4 T
V
và T
H
cho một ảnh quét xen kẽ.
Hàm H(
1
,
2
) xác định trên toàn bộ miền





      
     
1 2
và là hàm tuần hoàn trong miền tần số
với chu kì tuần hoàn là 2 đối với 
1



2
. H(u,v) xác định trên
miền




HHVV
TvTTuT
2
1
2
1
2
1
2
1

và là hàm tuần hoàn với
chu kì 1/T
V

và 1/T
H
cho u và v. Có thể chiếu H(

1
,

2
) hoặc H(u, v)
lên miền chuẩn hoá, ở đây 
/
1
, 
/
2



 11,
bằng cách đặt 
/
1
=
1
/;


/
2
=

2
/

hoặc 
/
1
=2uT
V
;


/
2
=2vT
h
. 
/
1
và 
/
2
gọi là tần số chuẩn
hoá, hàm H(

/
1
,

/
2

) có thể viết lại
12



)(
2121
2211
1 2
),(),(
kkj
k k
ekkhH










(2.13)
Nếu chúng ta hạn chế h(n
1
,n
1
) chỉ lấy các giá trị thực thì đáp ứng
tần số thoả mãn:

),(),(
2121

jjjj
eeHeeH


(2.14)
H* = liên hợp phức của H. Điều này dẫn đến H(

1
,

2
) đối xứng
(Hình 2.5).












Hình 2.5 Đối xứng tâm.
Chú ý rằng nếu x(n

1
,n
2
) =

(n
1
,n
2
), thì biểu thức (2.2) trở thành
y(n
1
,n
2
) = h(n
1
,n
2
). Vì lý do này mà h(n
1
,n
2
) được gọi là đáp ứng
xung, hoặc là đáp ứng biên độ, của hệ thống 2-D.

Bài tập 2.1 Tính biểu thức đáp ứng tần số của một hệ thống với
đáp ứng xung cho bởi












0.0
5.0
125.0
125.0
125.0
),(
21
nnh
Chứng minh rằng công thức tính đáp ứng tần số có thể tách được.
A
B
B
*

A
*


1


2


l¹i cßn hîptrêng c¸c
0
1,0
0,1
1,1
21
21
21
21







nn
nn
nn
nn
13

2.5 Tính đáp ứng xung từ đáp ứng tần số
Đáp ứng tần số của h(n
1
,n
2
) được cho bởi :







1 2
)(
2121
2211
),(),H(
n n
nnj
ennh


(2.15)
Xét tích phân


 
 








21

)(
21
2
2211
),(
4
1
ddeH
kkj

(2.16)
Thay biểu thức (2.15) vào biểu thức (2.16) chúng ta được

21
)()(
21
2
1 2
22112211
)),((
4
1







ddeennh

n n
kkjnnj
 

 


Và có thể viết thành

  
2
)(
1
)(
21
2122111
1 2
2
1
2
1
),(











dedennh
knjknj
n n







Và biến đổi thành
),()()(),(
21221121
1 2
kkhknknnnh
n n





Điều này có nghĩa là đáp ứng xung có thể tính từ đáp ứng tần số
qua mối quan hệ:
h(n
1
,n
2
) =

 
 








21
)(
21
2
2211
),(
4
1
ddeH
nnj

(2.17)
Nếu đáp ứng tần số được cho dưới dạng hàm của u,v (vòng/đơn
vị), thì biểu thức (2.17) có thể viết thành
vdduvuHTTnnh
V
V
H
H
HV

T
T
T
T
nvTnuTj
HV
e
 



2
1
2
1
2
1
2
1
_
)(2
21
211
),(),(

(2.18)
Hoặc cho tần số chuẩn hoá:

 
 






1
1
2
1
1
1
)(
2121
2211
),(
4
1
),(


ddeHnnh
nnj
(2.19)
14

Ví dụ 2.3 Cho đáp ứng tần số







0
||,|| 1
),(
21
21
l¹i cßn hîp trêng c¸c


ba
H

(xem hình 2.10), hãy tính đáp ứng xung.













Hình 2.10 Ví dụ 2.3.
Giải Từ phương trình (2.17) chúng ta có thể viết :


2
2
1
1
21
21
)(
2
21
)sin(bn
.
)sin(an
=
2
1
2
1
=
4
1
),(
2211
2211
nn
dede
ddennh
b
b
nj
a

a
nj
a
a
b
b
nnj










 

 



Bởi vì đáp ứng tần số là hàm tách được của hai biến
1


2

nên

đáp ứng xung cũng là một hàm hai biến tách được. Khái niệm “tách
được” ở đây nghĩa là có thể phân tích h(n
1
,n
2
) = f
1
(n
1
).f
2
(n
2
).

Ví dụ 2.4 Tìm đáp ứng xung của một bộ lọc thông thấp đối xứng
vòng tròn lý tưởng được mô tả như sau (xem hình 2.11 và 2.12):

1

a

-
a

b

b







-


-




2

15







l¹i cßn hîp trêng c¸c 0
1
),(
22
2
2
1
21



R
eeH
jj

Giải Có thể dễ dàng thấy nếu ),(
21

H là một hàm đối xứng vòng
tròn lý tưởng, cụ thể là )(),(
2
2
2
121

 HH thì ),(
21
nnh cũng là
một hàm tuần hoàn đối xứng vòng tròn, tức là
h n n h n n( , ) ( )
1 2 1
2
2
2
 
.
Vì vậy cách dễ dàng nhất để tìm
),(
21

nnh
là tìm h(n
1
, 0) và hàm
2
2
2
1
+ nn theo n
1
. Chúng ta rút ra )0,(
1
nh từ:


 

A
nj
ddenh
21
2
1
11
4
1
)0,(






e
4
1
=
R
R-
j
2
1
2






1
21
2
1
)cos(2
4
1
)0,(
1
2
2
2

2
2
11








dR
ddenh
n
R
R
R
R
nj

Ta có )sin(
1

R



dRd )cos(
1



dcos2
4
1
)0,(
/2
/2-
sin
2
2
1
1







jRn
eRnh
hoặc















deRn
n
R
nh
jRn
2/
2/
sin2
1
1
1
1
cos)(
1
2
)0,(













1

R
-
R





-


-



2

16




Hình 2.11 Ví dụ 2.4.
Hình 2.12 Ví dụ 2.4.


Biểu thức này có thể biểu diễn thành
h n
R
n
J Rn( , ) ( )
1
1
1 1
0
2



ở đây J
1
(x) = hàm Bessel loại 1.
Vì thế :

2
2
2
1
2
2
2
11
21
2
)(

),(
nn
nnRRJ
nnh





Không phải lúc nào cũng dễ dàng rút ra được một biểu thức phân
tích đáp ứng xung như trên. Ví dụ dưới đây minh hoạ việc sử dụng
phép tích phân số để thu được
),(
21
nnh
.

Ví dụ 2.5 Tính đáp ứng xung của bộ lọc thông thấp Butterworth
đối xứng vòng tròn có đáp ứng tần số cho bởi

),(
12
1
1
),(
21
2
2
21



R
D
H
o



17

ở đây
2
2
2
12121
),(,,

 R và D
0
= 3-dB. (Giả
thiết rằng

3.0
o
D ).
Dùng biểu thức trong công thức 2.17 để tính đáp ứng xung với
.5, ,5,5, ,5
21
 nn
Giải Vì ),(

21

H là thực và đối xứng vòng tròn, công thức (2.17)
có thể viết đơn giản lại là










21221121
2
21
)cos(),(
4
1
),( ddnnHnnh

đơn giản hơn nữa ta có thể viết

1
0 0
2222111
2
21
)cos(),()cos(

1
),(


 
ddnHnnnh
 






 (2.20)
Lời giải của bài toán này sẽ được đưa ra thông qua một chương
trình viết bằng ngôn ngữ C. Ngôn ngữ C được sử dụng rộng rãi bởi
tính linh hoạt của nó. C phù hợp cho các ứng dụng khác nhau.
Trước khi bạn viết chương trình, bạn cần nghiên cứu phương pháp
tính tích phân kép. Sau đây ta sẽ phát triển thêm qui tắc Simpson để
tính tích phân kép.
Qui tắc tính tích phân của Simpson được viết như sau:



m
x
x
dxxfI
0
)(




















2
, 4,2
1
, 3,1
0
)()(2)(4)(
3
m
i
mi
m

i
i
x
xfxfxfxf
lÎch½n

ở đây ;/)(
0
mxx
mx
 và m là một số lẻ.
Với tích phân kép
dxdyyxfI
nm
y
y
x
x
),(
00


Sử dụng qui tắc Simpson ta có thể viết như sau:

dyyxfyxfyxfyxfI
m
i
mi
m
i

i
y
y
x
n



















2
, 4,2
1
, 3,1
0
),(),(2),(4),(

3
0
ch½nlÎ

18

vậy có thể viết

dy
yxf
yxf
yxf
yxf
I
m
y
y
x
n





















),(
),(
),(
),(
]241 14242[
3
2
1
0
0


Lại áp dụng qui tắc Simpson vào công thức trên ta có




 ]241 14242[
3
3
y

x
I















































1
4
2
2
4
2
4
1
),( ),(),(),(
),( ),(),(),(
),( ),(),(),(
210

1211101
0201000


nmmmm
n
n
yxfyxfyxfyxf
yxfyxfyxfyxf
yxfyxfyxfyxf
(2.21)
ở đây mxx
mx
/)(
0

nyy
my
/)(
0

m và n là số lẻ.
Nếu ),(
21

H là thực và có tính đối xứng vòng tròn, thì đáp ứng
xung có thể được tính từ tích phân kép

21221121
00

2
21
)cos()cos(),(
1
),(



ddnnHnnh



Dùng công thức trên có thể viết một chương trình C để thu được
đáp ứng xung từ đáp ứng tần số. Dưới đây là chương trình được viết
bằng Turbo C 2.0.

Chương trình 2.1 "FILTERD.C". Tính đáp ứng xung từ đáp
ứng tần số

/*Program to compute the impulse from the frequency response.*/
19

/* Chuong trinh nay dung de tinh dap ung xung cua bo
loc 2-D tuan hoan doi xung. Dap ung tan so cua bo loc
duoc cho boi nguoi dung trong chuong trinh con tinh
ham H(float w1, float w2). */

#include <stdio.h>
#include <conio.h>
#include <float.h>

#include <math.h>
#include <alloc.h>
#define pi 3.1415926

int n1,n2;
float f(float,float);
float H(float,float);
float
Simpson2(float(*)(float,float),float,float,float,float,int,int);

void main(void)
{
float f(float,float),xmin,xmax,ymin,ymax;
int M,N;
int NS,xt,yt;
float h[11][11],temp;
char file_name[40],ch;
FILE *fptr;

clrscr();
xmin=ymin=0.0;
xmax=ymax=pi;
M=N=20; /* So cac diem chia theo phuong x va y.
cac gia tri nay phai la chan.*/
gotoxy(1,2);
printf
(" This program calculates the impulse response from the");
printf("\n frequency response.");
printf("\n The impulse response is calculated over a window");
printf("\n centered around the origin.");

20

printf
("\n Enter the number of samples in the impulse response.");
printf("\n e.g. 7*7 (max. 11*11) (number have to be odd.) >");
scanf("%d*%d",&NS,&NS);
NS=(NS-1)>>1; /* chieu rong va chieu dai cua mot cua so*/
xt=wherex(); yt=wherey();
gotoxy(70,25);
textattr(WHITE+(GREEN<<4)+BLINK);
cputs("WAIT");

for(n1=0;n1<=NS;n1++)
for(n2=0;n2<=NS;n2++)
{
if(n2>n1) continue;
h[n1][n2]=simpson2(f,xmin,xmax,ymin,ymax,M,N);
h[n1][n2]/=pi*pi;
}
for(n1=0;n1<=NS;n1++)
for(n2=0;n2<=NS;n2++)
{
if(n2<n1)
h[n2][n1]=h[n1][n2];
}
gotoxy(70,25);
textattr(WHITE+(BLACK<<4));
cputs(" ");
gotoxy(xt,yt);
printf("\n Impulse Response one quadrant.\n\n");

for(n1=0;n1<=NS;n1++)
{
for(n2=0;n2<=NS;n2++)
printf("%7.6f ",h[n1][n2]);
printf("\n");
}

/* Dinh dang dap ung xung tuan hoan. */
temp=h[NS][NS];
for(n1=NS;n1<((NS<<1)+1);n1++)
21

for(n2=NS;n2<((NS<<1)+1);n2++)
h[n1][n2]=h[n1-NS][n2-NS];
h[(NS<<1)][(NS<<1)]=temp;
for(n1=NS;n1<((NS<<1)+1);n1++)
for(n2=0;n2<NS;n2++)
h[n1][n2]=h[n1][(NS<<1)-n2];
for(n1=0;n1<NS;n1++)
for(n2=0;n2<((NS<<1)+1);n2++)
h[n1][n2]=h[(NS<<1)-n1][n2];
printf
("\n\nEnter Name of file for storing impulse response >");
scanf("%s",file_name);
fptr=fopen(file_name,"w");
for(n1=0;n1<((NS<<1)+1);n1++)
for(n2=0;n2<((NS<<1)+1);n2++)
fprintf(fptr,"%f",h[n1][n2]);
fclose(fptr);
printf("\nCalculating and storing frequency response ");

printf("\nfor 3-D plotting.\n");
printf(" ");

/* Chuan bi du lieu cho 3-D
Du lieu duoc dinh dang thich hop voi chuong trinh in cua
GRAFTOOL mot cong cu phan mem phan tich do hoa cua 3-D
vision (412 S.Pacific Coast Hwy. Suite 201, Redondo Beach,CA.
90277). */

{
/* Declaring local variable*/

float w1[33],w2[33],z[33],dw,sum;
int row,col;
register i,j;
printf("\n Enter file name for storing 3-D plotting >");
scanf("%s",file_name);
fptr=fopen(file_name,"w");
row=col=34;
fprintf(fptr,"%d %d\n",row,col);

×