Xử lý ảnh
Trang 1chơng 2
Các hệ thống hai chiều
2.1 Chỉ dẫn
Các tín hiệu vốn là hai chiều thì phải đợc xử lý bằng kỹ thuật xử lý tín hiệu hai chiều Các điểm ảnh đợc coi là một dạng tín hiệu hai chiều, vì vậy việc xem xét các kiến thức cơ bản của hệ thống hai chiều (2-D) là cần thiết Trong chơng này chúng ta sẽ xem xét biểu diễn tần số và biểu diễn không gian của tín hiệu hai chiều, và cung cấp kiến thức cần thiết cho việc phát triển các kỹ thuật xử lý ảnh hai chiều nh là nổi ảnh, trơn ảnh và khôi phục ảnh
2.2 Các tín hiệu hai chiều
Một tín hiệu lấy mẫu hai chiều đợc biểu diễn dới dạng một mảng hai chiều x(n1 T V ,n 2 T H ) (V: Vertical - chiều dọc, H: Horizontal - chiều
ngang) ở đây n1 , n 2 là số nguyên và TV , T H là khoảng cách lấy mẫu
theo chiều ngang và chiều dọc x(n1 T V , n 1 T H ) thờng đợc ký hiệu tắt là x(n 1 ,n 2 ) và biểu diễn cho cờng độ sáng hay là biên độ tín hiệu tại điểm (n 1 ,n 2 ) trong miền không gian Hình 2.1 giới thiệu một phép biểu diễn
trong miền không gian, ở đây cờng độ sáng của tín hiệu đợc ký hiệu bởi chiều cao tại điểm x(n1 T V , n 2 T H ) Chú ý rằng T V là khoảng cách lấy mẫu giữa hai cột dọc kế tiếp nhau, TH là khoảng cách lấy mẫu giữa hai dòng ngang kế tiếp nhau của tín hiệu 2-D
Mặc dù một tín hiệu lấy mẫu 2-D có thể xử lý nh các dãy của tín hiệu lấy mẫu một chiều bằng cách xử lý tất cả các hàng (cột) một cách tuần tự song cách tiếp cận này không cho một kết quả mong đợi
nh khi xử lý hai chiều Ví dụ, nếu chúng ta dùng một bộ lọc làm nổi
đờng biên ảnh 1-D, cụ thể đó là một bộ lọc thông cao, trên một ảnh
Trang 2bằng cách xử lý từng hàng một, thì đờng biên sẽ phần lớn đợc làm nổi bật dọc theo các đờng thẳng đứng Các đờng biên ảnh nằm theo các đ-ờng nằm ngang sẽ không đợc làm nổi một chút nào và các đờng biên nằm theo các hớng khác ngoài hai hớng này sẽ nhận đợc hiệu ứng làm nổi ảnh ít hơn các đờng biên dọc Để đạt đợc hiệu quả nh nhau theo mọi hớng, tín hiệu đợc lấy mẫu hai chiều phải đợc xử lý qua một hệ thống 2-D (Hình 2.2).
Trong hệ thống tuyến tính bất biến - TTBB (Linear Shift Invariant - LSI), đáp ứng đầu ra có thể tính theo công thức :
y(n1,n2) =x(n1,n2) * h(n1,n2) (2.1)Dấu * đợc hiểu là tích chập và h(n1,n2) là đáp ứng xung của hệ thống 2-D Biểu thức (2.1) có thể viết là:
( ) , ( )
,
k n k n h k k x n
với
với 0
0
1 ) , ( ) ,
n1Tv2Tv
Trang 30 , 1 ) ,
2 1 1
n n n
víi
víi 0
0 , )
,
2 1
2
a n
n x
n n
(2.5)
4 D·y tÝn hiÖu h×nh sin (phøc):
) (
−
=
) ( ) ( 2
k n k n
e n
=
2 1 2
2
) ,
2 1
k k j n
n
e n n
h(n1,n2)
Trang 4( )
2 1 2
2
2 1
1
) , ( )
Biểu thức e−j(ω +k1 ω2k2) đợc gọi là nhân Nếu khoảng cách cách lấy mẫu
T V ,T H đã đợc biết thì biểu thức (2.9) có thể viết lại thành
) , ( 2 2
( )
,
(
k
T vk T uk j H V k
H V e
T k T k h v
u
ω1, ω2 có thứ nguyên là radian/đơn vị, còn u và v có thứ nguyên là vòng/đơn vị Đơn vị ở đây có thể là đơn vị khoảng cách (nh cm, inch) hoặc là đơn vị thời gian (nh giây) Việc chọn đơn vị (thời gian hoặc khoảng cách) phụ thuộc nguồn gốc của ảnh, đó là một phép chiếu từ không gian ba chiều lên mặt phẳng hai chiều Nếu ta xử lý với một
ảnh lấy ra trực tiếp từ ma trận CCD camera thì TV và TH (và do đó là
đơn vị) phải tính theo chiều không gian (xem hình 2.3) Mặt khác, với một ảnh truyền hình thì TV và TH phải theo chiều thời gian (xem hình 2.4)
Từ (2.9) ta có thể viết
) , ( ) , 2
) , ( ) 2 ,
(2.11)
) , ( ) 2 , 2
Và từ (2.10) ta có thể viết
) , ( ,
1
v u H v T u H
1
T v u H
1 ,
1
v u H T
v T u H
H V
Trang 5H×nh 2.3 T V vµ TH 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Ï.
,
k k
e k k h
(2.13)
Trang 6Nếu chúng ta hạn chế h(n1 ,n 1 ) chỉ lấy các giá trị thực thì đáp ứng tần
số thoả mãn:
) , ( ) , (e jω 1 e jω 2 H e jω 1 e jω 2
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
5 0
125 0
125 0
125 0 ) , (n1 n2h
0
1 ,
0
0 , 1
1 ,
1
2 1
2 1
2 1
2 1
n n
n n
n n
Trang 72 1 2
1 , ) ( , ) 1 2 2
H(
n n
n n j e n n
ω
) (
2 1 2
2 2 1 ) , ( 4
1
d d e
(2.16)
Thay biểu thức (2.15) vào biểu thức (2.16) chúng ta đợc
2 1 ) (
) (
2 1 2
1 2
2 1 2
2
) , ( (
4
1
ω ω π
e n n h
n n
k k j n n j
∫ ∫ ∑∑
− −
+ +
−
Và có thể viết thành
) ( 1
) ( 2
1 2
1 ) ,
π
ω π
π
π ω π
π
e n
ω
) (
2 1
2 ( , ) 1 2 24
1
d d e
H
H V
) (
2 2
1
2 11 )
, ( )
1
1 ) (
2 1 2
4
1 ) ,
|
|,
|
| 1 ) ,
2
π ω
π ω
Trang 8H×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
2 1
2 1 ) (
2 2
1
) sin(bn ) sin(an
=
2
1 2
1
=
4
1 ) , (
2 2 1
2 2 1
n n
d e d
e
d d e
n n h
b
b
n j a
a
n j
π π
ω π
ω π
ω ω π
ω ω
ω ω
0
1 ) , (
2 2
2
2 1
2
e e
Trang 9hàm tuần hoàn đối xứng vòng tròn, tức là h n n( , )1 2 h n( 12 n )
22
= + Vì vậy cách dễ dàng nhất để tìm h(n1,n2)là tìm h(n1 , 0) và hàm 2
j d d e
n
4
1 ) 0 ,
π
ω
e
4
1
=
R
R -
j 2
2 1
) cos(
2
4
1 ) 0 , (
1
2 2
2 2 1
ω ϕ π
ω ω
π
ω
ω
ω ω
d R
d d
e n
Ta có ω1 =Rsin( ϕ )
ϕ ϕ
d 1 = cos( )
d cos
2 4
1 ) 0 , (
/2 /2 -
sin 2
2
π
π π
π
n
R n
2 /
sin 2
1 1
2 ) 0 , (
ω 1
R -R
Trang 102 2
2 1 1 2
1
2
) (
) , (
n n
n n R RJ n
n h
+
+
= π
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 h(n1,n2)
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
) , ( 1 2 1
1 )
, (
2 1
2 2
2 1
ω ω
ω ω
R D
H
o
− +
=
2
2 1 2
1 2
1 π , π ω π , ( ω , ω ) ω ω ω
Trang 11n1= − 5 , , + 5 ,n2 = − 5 , , + 5
Giải Vì H( ω1, ω2)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à
ω ω
1 1
1 2
n n
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 dx x f I
0 ) (
1
,
3 , 1
0 ) 4 ( ) 2 ( ) ( ) (
ở đây ∆x = (x m−x0) /m; và m là một số lẻ
Với tích phân kép
dxdy y x f I
n
m y y
x
x
) , ( 0 0
x f y
x f
+
∆
= ∫ ( 0 , ) 4=∑1,−31, ( , ) 2=∑2−,42, ( , ) ( , ) 3
0
chẵn lẻ
vậy có thể viết
Trang 12dy y x f
y x f
y x f
y x f I
m
y
y x
) , (
) , (
) , ( ] 241
14242 [
1 0
y x I
2 4 2 4 1
) , (
) , ( ) , ( ) , (
) , (
) , ( ) , ( ) , (
) , (
) , ( ) , ( ) , (
2 1
0
1 2
1 1 1 0 1
0 2
0 1 0 0 0
m m
n n
y x f y x f y x f y x f
y x f y x f y x f y x f
y x f y x f y x f y x f
1 2
1 0 0 2 2
1 , ) 1 ( , ) cos( ) cos( )
π
π π
d d n n
H n
n
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.*/ /* Chuong trinh nay dung de tinh dap ung xung cua bo
Trang 13loc 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) */
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.");
printf
("\n Enter the number of samples in the impulse response.");
Trang 14printf("\n e.g 7*7 (max 11*11) (number have to be odd.) >");
Trang 15/* 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) */
Trang 16for(n1=-NS;n1<=NS;n1++) for(n2=-NS;n2<=NS;n2++) sum+=h[n1+NS][n2+NS]*(float)cos((double)
(w1[i]*(float)n1+
w2[j]*(float)n2));
z[i]=sum;
}fprintf(fptr,"%e",w1[i]);
/* Dinh nghia ham cho tich phan */
float f(float x,float y)
{
float H(float,float),a;
Trang 17}
/*********************************************/
/*Chuong trinh con Simpson tinh tich phan kep*/
/*********************************************/
float simpson2( float(*f)(float,float),float xmin,float xmax, float
ymin, float ymax, int M, int N)
/* f la mot ham hai bien dinh nghia boi nguoi dung
xmin, xmax, va ymin, ymax la gioi han cua hai tich phan
M,N la so khoang cach tren huong x va y va chi co gia tri chan*/{
if((j%2)==0)sum1+=(*f)(x,y);
elsesum2+=(*f)(x,y);
y+=dy;
}
*(A+i)=(*f)(x,ymin)+2.0*sum1+4.0*sum2+(*f)(x,ymax);x+=dx;
}
sum1=sum2=0.0;
Trang 18{if((i%2)==0)sum1+=*(A+i);
elsesum2+=*(A+i);
} I=*A+2.0*sum1+4.0*sum2+*(A+M);
return(I*dx*dy/9.0);
}
/***************************************
* Dinh nghia ham bo loc H(w1,w2) Ham *
* xac dinh boi nguoi dung *
Trang 19{
k=(1.0)-(gamah-gamal))/(gamah-gamal);
a=(R2/(R2*DO*DO*k))+gamal;
} else
Trang 20Hình 2.13 Hình ảnh ba chiều đáp ứng biên độ của bộ lọc thông thấp.
Ví dụ 2.6 Lặp lại bài toán trớc với bộ lọc tuần hoàn đối xứng
Butterworth đợc cho bởi
) , (
) 1 2 ( 1
1 )
, (
2 1
2 0 2
1
ω ω
ω ω
D
D
H
− +
=
2
2 1 2
1 , )
D
Giải Thay hàm H(w1,w2) trong chơng trình 2.1, nh đã giải thích
trong phần cuối của chơng trình, chúng ta thu đợc hệ số đợc liệt kê trong bảng 2.2 Đáp ứng tần số đợc chỉ trong hình 2.14, và hầu nh
đúng với đáp ứng tần số gốc đợc tính từ biểu thức của H( ω 1 , ω 2 )
Trang 21Hình 2.14 Đáp ứng tần số đợc tính từ 11 ì 11 đáp ứng xung.
Bảng 2.2 Một phần t đáp ứng xung của bộ lọc thông cao
0.896408 -0.047501 -0.017311 -0.008811 -0.003712-0.002135
-0.047501 -0.031265 -0.014898 -0.007494 -0.003578-0.001873
-0.017311 -0.014898 -0.009506 -0.005306 -0.002844-0.001496
-0.008811 -0.007494 -0.005306 -0.003352 -0.001956-0.001102
-0.003712 -0.003578 -0.002844 -0.001956 -0.001242-0.000743
-0.002135 -0.001873 -0.001496 -0.001102 -0.000743-0.000473
Bài tập 2.2 Thay hàm H(w1,w2) trong chơng trình 2.1 để tính đáp
ứng xung trên cửa sổ 11 ì 11 có tâm tại điểm gốc, theo hàm truyền
đạt đợc cho dới đây:
1 Lọc thông thấp:
0 2
1 , / ( 347 0 2
1 , )
2 Lọc thông cao:
Trang 22) , ( / 347 0 2