Tải bản đầy đủ (.doc) (23 trang)

Khôi phục ảnh trong xử lý ảnh số

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 (740.86 KB, 23 trang )

Chơng
10
Khôi phục ảnh
10.1 Chỉ dẫn
Trong các chơng trớc chúng ta đã khảo sát các giả thiết để làm mất đi các ảnh h-
ởng làm suy giảm chất lợng ảnh. Chúng bao gồm làm mất nhiễu xung thông qua các
bộ lọc đối xứng, tăng độ tơng phản thông qua các công cụ nh sửa đổi lợc đồ mức
xám, lọc đồng hình, và lọc tĩnh Wallis. Trong các phần này, chúng ta đã không xem
xét nguyên nhân của sự suy giảm cũng nh liệu nó đã đợc thoả mãn hay cha. Các
nguyên nhân khác nhau, bao gồm cả các vết mờ ảnh, đòi hỏi sự phát triển cho một
kiểu khắc phục các sự suy giảm gọi là hệ thống ảnh. Hệ thống ảnh có thể xây dựng
trên khái niệm hàm tán xạ điểm (Point-Spead-Funtion - PSF), ví dụ, tác động trên
ảnh ghi lại của một điểm gốc của độ sáng trên vật thể quan tâm. Biến đổi Fourier
của PSF trở thành hàm truyền đạt ánh sáng (Optical-Tranfer-Funtion - OTF).
Trong chơng này ta sẽ quan tâm đến các nguyên nhân làm mất sự hội tụ ảnh. Ba
dạng của vết mờ cần đợc quan tâm là: (1) ảnh không rõ nét, (2) dạng vết mờ chuyển
động đồng dạng, (3) vết mờ do ảnh hởng chiếu sáng lâu qua khí quyển. Tất cả các
nguyên nhân này gây ra các giá trị khác nhau của PSF đòi hỏi ta phải giới hạn phạm
vi các vết mờ.
10.2 Các PSF cho khác dạng khác nhau của các vết mờ
Nếu chúng ta coi rằng hệ thống ảnh là tuyến tính, thì ta có thể viết






=

ddyxihyxi
b


),(),(),(
(10.1)
ở đây i
b
(x,y) là ảnh mờ, h(x,y) là PSF, i(x,y) là ảnh nhập vào không bị suy giảm. Bởi
vì chúng ta đã đợc cho i
b
(x,y) và muốn phục hồi i(x,y) nên cần phải đánh giá h(x,y).
Nếu h(x,y) đã biết, thì vấn đề có thể giải quyết đợc và quá trình đó đợc gọi là giải
chập. Bởi vì biết rất ít về hệ thống mờ nên việc này đợc gọi là giải chập mù. Nếu
trong một số trờng hợp bằng cách này hay cách khác h đã đợc cho trớc thì giải pháp
đợc gọi là phơng pháp tiên nghiệm. Trong phần lớn các trờng hợp còn lại thì h đều
cha biết, giải pháp này thuộc loại phơng pháp hậu nghiệm.
PSF cho ba kiểu vết mờ đợc cho dới dạng phơng án giải quyết đợc đề cập đến ở
phần dới đây.
200
Hình 10.1 (a) Phơng pháp tìm đờng đi tia sáng.
(b) Sự tán xạ của điểm nằm trên và ngoài trục chính.
10.2.1 Tiêu điểm của thấu kính có dạng tròn
Hình 10.1b minh hoạ một hệ thống quang học đơn giản trong đó một điểm gốc
cho một hàm phân tán điểm do sự không chính xác của tiêu cự. Hình 10.1a giới
thiệu cách xác định đờng đi của tia sáng, làm sáng tỏ phơng pháp xác định ảnh trong
hình 10.1b. Cách xác định đờng đi của tia sáng từ một điểm nằm ngoài trục theo các
201
1
2
3
4
F
2

A
B
(a)
I
1
I
2
F
2
O
2
O
1
Màn chắn
ảnh của điểm trên
trục chính
ảnh của điểm
ngoài trục chính
bớc sau: Vẽ một tia bất kỳ đi qua điểm (1) gặp thấu kính tại A. Vẽ mặt phẳng tiêu
(thứ hai) của thấu kính. Vẽ tia (3) song song với tia 1, đi qua tâm của thấu kính. Tất
cả các tia nh thế này gọi là tia chính. Tia chính gặp mặt phẳng tia 2 tại B. Nối A và
B sau đó kéo dài. Đây chính là tia khúc xạ. Cho một điểm nằm trên quang trục tia
sáng phải đi qua tiêu điểm thứ hai. Dùng cách tìm đờng đi của tia sáng qua thấu kính
cho ta thấy hàm tán xạ điểm của một điểm nằm trên quang trục rất khác so với hàm
tán xạ của một điểm nằm ngoài quang trục. Cũng cần chú ý rằng vật thể xa thấu
kính sẽ có tán xạ khác với vật thể gần thấu kính.
Đạo hàm các PSF có dạng nh một Gauss hai chiều:

)
2

exp(
2
1
),(
2
2
2



r
rG

=
(10.2)
ở đây là bán kính của vết mờ, r là khoảng cách bán kính kể từ tâm vết mờ.
10.2.2 Các vết mờ chuyển động đồng dạng
Vết mờ chuyển động là kết quả của quá trình chụp phim ảnh của một vật thể
chuyển động trong một thời gian đủ lớn để ghi lại hàng loạt các vị trí của vật thể.
Chú ý rằng nếu thời gian chiếu sáng quá nhỏ so với chuyển động của ảnh thì vết mờ
sẽ không cần quan tâm đến. Vết mờ chuyển động cũng có thể là kết quả của chuyển
động của camera. Ta có thể tạo ra vết mờ chuyển động bằng cách trải rộng một đơn
vị mẫu dọc theo hớng chuyển động (xem hình 10.2). PSF có thể tạo ra bằng một
hình vuông gạch chéo trong đờng cong (a) của hình 10.2 khi phim ghi lại một loạt
các vị trí khác nhau vật thể với các thời gian chiếu sáng khác nhau. Thời gian chiếu
sáng lớn nhất đợc cho vị trí đầu tiên khi cửa sập camera mở ra lần đầu tiên, thời gian
chiếu sáng nhỏ nhất đợc cho vị trí cuối cùng vật thể chiếm giữ trớc khi của sập đợc
hạ xuống. Điều này giúp chúng ta lựa chọn hình tam giác hoặc là Gauss trong hình
10.2 nh những mô hình thực tế hơn cho vết mờ chuyển động.
10.2.3 Vết mờ do ảnh hởng của khí quyển

Bình thờng, hệ số khúc xạ của khí quyển là hằng số trong một vùng rộng lớn.
Trong một số trờng hợp sự thay đổi của khí quyển có thể tạo ra một dãy các hệ số
khúc xạ khác nhau. Đây là nguyên nhân gây ra các vết mờ trên ảnh. ảnh của vật thể
trong vũ trụ qua tầng khí quyển bao quanh trái đất là một ví dụ. Nếu những vật thể
này phải quan sát qua tầng khí quyển, với thời gian chụp ảnh lâu, độ hoàn hảo của
ảnh sẽ bị giới hạn.
202
Hình 10.2 Mô hình ảnh mờ do chuyển động.
Một PSF đã đợc sử dụng và kiểm tra qua thực nghiệm để mô hình hoá quá trình này
là:
6/52
3
2
2
)(
1
),(
yKxK
eKyxh
+
=
(10.3)
ở đây K
i
là các hằng số. Để cho tiện lợi trong phân tích, 5/6 thờng đợc thay thế bởi
tính đồng nhất để rút ra mô hình đáp ứng xung đờng cong Gauss có dạng
)
22
(
2

2
2
2
),(
yx
yx
Keyxh

+
=
(10.4)
ở đây K là hằng số khoảng cách biên độ,
x

y
là các hệ số phân tán vết mờ.
10.3 Đánh giá phạm vi vết mờ
Trong các bớc phân tích tiếp theo chúng ta sẽ coi rằng mô hình cho hệ thống ảnh
mờ là tuyến tính bất biến, LSI, hoặc ít nhất có thể đợc xấp xỉ nh một hệ thống. Hệ
thống quang học mà ta đợc biết là kính mắt có đặc điểm là ảnh của vật nhìn qua
kính sẽ có ít hoặc không có sự biến đổi nào. Cho các hệ thống quang học khác bạn
sẽ phải xem đây là một sự xấp xỉ và áp dụng một PSF duy nhất lên toàn bộ ảnh,
hoặc chia ảnh thành các miền nhỏ hơn và cho tất cả các miền ta nhận đợc một PSF.
Phép chia nhỏ trên ảnh này cho chúng ta kết quả gần đúng tốt hơn, khi trên tất cả
các miền nhỏ này chúng ta có thể coi rằng PSF sẽ xấp xỉ với một hằng số phân tán
tại tất cả các điểm. Dễ thấy rằng hình 10.1 biểu diễn trờng hợp hệ thống một thấu
kính. Trong camera ngời ta sử dụng nhiều thấu kính, và chúng đợc lắp ghép để làm
203
h(x,y)
Mẫu đơn vị

O
x
(a) x
h(x,y)
h(x,y)
(b) x
h(x,y)
(c)
x
rõ hơn những cảnh mờ.Xem xét một đờng biên dọc trong một ảnh không bị mờ với
độ lớn tại vị trí (x
0
,y
0
), đợc định nghĩa nh sau:

x< x
x x
),(
0
0



+
=
nếu
nếu
k
k

yxi

nếu h(x,y) là PSF, thì ảnh mờ đợc cho bởi





=

ddiyxhyxi
b
),(),(),(
(10.5)
Cho cả ba kiểu vết mờ nh trên, h(x,y) có thể biểu diễn tổng quát bởi mô hình dạng
Gauss nh sau:
)2/2/(
2222
),(
yx
yx
Keyxh

+
=
ở đây K là hằng số, và
x

y
là các hệ số tán xạ dọc theo các hớng x và y. Vì thế

cho nên





+
=


ddiKeyxi
yx
yx
b
),(),(
]2/)(2/)[(
2222
(10.5)
Chú ý rằng cho đờng biên dọc đợc định nghĩa nh trên, i(

,

) chỉ là hàm của

,
chúng ta có thể viết



diedeKyxi

x
y
x
y
b







= ),(),(
]2/)[(
]2/)[(
22
22
(10.6)
Bởi vì
1
2
10
2
2
2 2


e dx
x




=
( / )
.
chúng ta có thể viết
])([2),(
0
22
0
22
2/)(2/)(
2


dekdekKyxi
x
x
x
x
yb
xx





++=
biểu thức này có thể viết lại dới dạng


}]){([2),(
0
2222
0
22
2/)(2/)(2/)(
2


dedekdekKyxi
x
xx
x
x
yb
xxx








++=
Đạo hàm riêng i
b
(x,y) theo x chúng ta đợc











=










de
x
K
x
yxi
x
x
y
b
x
0

22
2/)(
2
2
),(
Dùng quy tắc Leibnitz cho đạo hàm của tích phân, đợc cho bởi
204

+=
)(
)(
2
2
1
1
)(
)(
2
1
2
1
),(),(
),(
),(
x
x
x
x
dx
d

xF
dx
d
xFd
x
xF
dxF
dx
d












sau khi lấy giá trị tuyệt đối, chúng ta đợc kết quả sau đây:

22
0
2/)(
2
2|
),(
|

x
xx
y
b
eK
x
yxi





=
(10.7)
Đặt
|
),(
|),(
x
yxi
yxC
b


=
(10.8)


2
1

2
y
KK =
(10.9)
Vì thế, chúng ta có thể viết biểu thức (10.8) thành
22
0
2/)(
1
),(
x
xx
eKyxC


=
(10.10)
Biểu thức (10.10) sẽ biểu diễn một phân bố Gauss dọc theo hớng x nếu
2
1
2
1
x
K

=

Điều này có thể xảy ra nếu vùng dới C(x,y
0
) bằng 1. Để đạt đợc điều kiện này

chúng ta cần chia tung độ bởi khu vực dới đờng cong. Nếu F(x) mô tả đờng cong
chia độ, thì chúng ta có thể viết:
2
2
2
)(
2
2
1
)(
x
x
x
x
exF

à


=
(10.11)
trong đó

=
x
x
xxF )(
à
(10.12)


=
x
xx
xFx )()(
2
à
(10.13)
Tơng tự có thể thu đợc công thức
y

bằng việc thay chiều ngang.
10.4 OTF
OTF có thể rút ra từ biến đổi Fourier 2-D





+
= dxdyeyxhvuH
vyuxj )(
),(),(
Dùng PSF cho bởi biểu thức (10.4), chúng ta có thể viết:
[ ]





+

+
= dxdyeeKvuH
vyuxj
yx
yx
)(
2/2/
2222
),(

205
hay có thể viết
dyedxeKvuH
jvy
y
jux
x
y
x












+










+
=
2
2
2
2
2
2
),(


Từ (xem tham khảo 3)
a
acb
cbxax
e
a
dxe
4

)4(
)(
2
2



++
=


do vậy
2
)(
22
2222
22),(
yx
vu
yx
eKvuH


+
=
(10.14)
Biểu thức ở trên cung cấp dạng phân tích cho OTF áp dụng cho các trờng hợp ảnh
nằm ngoài tiêu điểm. Bởi vì OTF giảm dần theo hàm mũ, nó sẽ giảm gần về không
tại miền tần số cao. Điều này dẫn đến các chi tiết trong ảnh mờ sẽ sẽ bị mất sạch.
Trong phần lớn trờng hợp điều này là không đúng. Trên thực tế điều thực sự xảy ra

là tần số cao bị suy giảm đến một số giới hạn, phụ thuộc vào ảnh hởng của vết mờ,
và vì vậy mà không bị xoá sạch. Sự nhận xét này giúp chúng ta xây dựng hàm
truyền đạt phía trên thành:
0.12),(
2/)(
2222
+=
+
yx
vu
yx
evuH


(10.15)
Chú ý rằng nếu
x
=
x
= 0.0, thì
0.1),( =vuH
, ví dụ, nếu ảnh thu đợc hoàn toàn
nằm trong tiêu điểm, thì hàm suy giảm H(u,v) là lọc thông toàn phần.
10.5 Thuật toán khôi phục ảnh
Dựa trên các phân tích phía trên chúng ta có thể xây dựng một thuật toán dùng để
khôi phục lại ảnh nằm ngoài tiêu điểm. Thuật toán này bao gồm các bớc sau :
1. Tách biên ảnh (xem trong chơng 5).
2. Quét ảnh bắt đầu từ hàng N/4 và cột N/4, N
ì
N là kích thớc của ảnh tính theo

số điểm, tới khi một đờng biên đợc tìm thấy tại các điểm có toạ độ (x
0
,y
0
). Làm nh
vậy chúng ta tránh đợc các đờng biên tại mép của ảnh, với điều kiện là vật thể chính
trong ảnh nằm tại tâm của ảnh.
3. Tính
x

y
.
4. Tính đáp ứng tần số của hàm bị mờ từ OTF mô tả ở phần trên.
0.12
0.1
),(

2/)(
2222
+
=
+
yx
vu
yx
e
vuH


(10.16)

5. Thiết kế một bộ lọc IIR hoặc FIR dùng một trong các kỹ thuật cho ở các chơng
trên xấp xỉ hàm truyền đạt cho ở biểu thức (10.16) .Chú ý là nếu
x
không bằng
y
thì bộ lọc không đối xứng tròn.
6. áp dụng bộ lọc trên ảnh bị mờ khôi phục lại nó. Nếu vết mờ có dạng là hình
tròn cho một hệ thống thấu kính điển hình thì
x

y
có thể thay bằng .
206
22
yx

+=
(10.17)
Chơng trình C cho đánh giá
x

y
dựa trên các biểu thức ở phần trên đợc cho ở
dới đây. Kết quả cuối cùng của chơng trình này là một file chứa đáp ứng tần số biên
độ mà bạn có thể dùng với các chong trình khác thiết kế bộ lọc 2-D. Ví dụ để thiết kế
bộ lọc IIR bạn cần có IMPULSE.EXE và IIRD.EXE theo tên của file lấy từ chơng
trình này. Để chạy chơng trình này bạn cần tách các đờng biên dùng một trong các
chơng trình hoặc biểu đồ đã mô tả ở trong chơng 5. Chơng trình bắt nguồn từ tên của
file chứa ảnh mờ và độ đậm đờng biên ảnh. Độ đậm đờng biên ảnh là file chứa ảnh
sau khi đã tách ra các đờng biên.

Chơng trình 10.1 :DEBLUR.C Tính độ lớn của đáp ứng
/*ProgramlO.1 "DEBLUR.C".Calculating the magnitude response
of the deblurring function.*/
/* This program calculates the inverse magnitude response of the extracted blurring
function.Theprogram requires the file names of the blurred imageand the edge
strength image for the blurred image.To obtain the edge strength image you can use
Kirsh.exe or Sobel.exe. */
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <io.h>
#include <conio.h>
#include <ctype.h>
#define pi 3.1414
void main()
{
FILE *fptr1,*fptr2,*fptr;
char file_name1[12],file_name2[12];
unsigned char *buff;
int M,M1,z,i,j,*wv,*wh,x0,y0,sign_max;
float sum,A,*cv,*ch,mu1,mu2,pi2;
float sigmax,sigmay,sx2,sy2,u,v,du,dv;
float H[32][32],G,x;
double nsq;
char file_name[14],ch1;
clrscr();
printf
("Enter file name for blurred image before obtaining edges >");
scanf("%s",file_name1);
fptr1=fopen(file_name1,"rb");

if(fptr1=NULL)
{
207
printf("File does not exist.");
exit(1);
}
printf("Enter file name for edge strength image >");
scanf("%s",file_name2);
fptr2=fopen(file_name2,"rb");
if(fptr2=NULL)
{
printf("File does not exist.");
exit(1);
}
nsq=filelength(fileno(fptr1));
M=sqrt(nsq);
M1=M/4;
buff=(char *)malloc(M);
wv=(int *)malloc(11*sizeof(int));
wh=(int *)malloc(11*sizeof(int));
ch=(float *)malloc(11*sizeof(float));
cv-(float *)malloc(11*sizeof(float));
fseek(fptr2,(long)(M*M1),0);
for(i-M/4;i<(3*M/4);i++)
{
fread(buff,M,1,fptr2);
for(j=M/4;j<(3*M/4);j++)
{
z=(int)(buff[j]-buff[j-1]);
if(abs(z)>(int)30)

{
printf("\An edge has been detected at (%d, %d)",j,i);
x0=j; y0=i;
goto one;
}
}
}
printf("\nNo edges has been located.");
fclose(fptr2);
exit(1);
one:
fclose(fptr2);
fseek(fptr1,(long)(M*(y0-5)),0);
for(i=0;i<11;i++)
{
fread(buff,M,1,fptr1);
wv[i]=buff[x0];
if(i==5)
{
for(j=0;j<11;j++)
wh[j]=buff[j+x0-5];
}
208
}
/* Obtaining the derivatives of the image about the edge. */
for(j=1;j<11;j++)
{
ch[j]=(float)(abs((wh[j]-wh[j-1])));
cv[j]=(float)(abs((wv[j]-wv[j-1])));
}

ch[0]=ch[1];
cv[0]=cv[1];
fclose(fptr1);
printf("\nDo you wish to store horizontal and vertical difference");
printf("\n data for plotting (y or n) >");
while(((ch1=tolower(getch()))=='y')&&(ch1=='n'));
putch(ch1);
if(ch1== 'y')
{
/* Preparing data for plotting. */
printf("\nEnter file name for storing data");
printf("\n taken along a horizontal line >");
scanf ( "%s", file_name1);
printf("Enter file name for storing data ");
printf("\n taken along a vertical line >");
scanf("%s " , file_name2);
fptr1=fopen(file_name1,"w");
fptr2=fopen(file_name2,"w");
fprintf(fptr1,"%d %d\n",11,2);
fprintf(fptr2, "%d %d\n",11,2);
for(i=0;i<11;i++)
{
fprintf(fptr1,"%e %e\n",(float)i,ch[i]);
fprintf(fptr2,"%e %e\n",(float)i,cv[i]);
}
fclose(fptr1);
fclose(fptr2);
}
A=(ch[0]+ch[10])/2.0;
for (i=1;i<10; i++)

A+=ch[i];
for(i=0;i<11;i++)
ch[i]/=A;
mu1=0.0;
for(i=0;i<11;i++)
mu1+=(float)i*ch[i];
sum=0.0;
for(i=0;i<11;i++)
sum+=(i-mu1)*(i-mu1)*ch[i];
sigmax=sqrt((double)sum);
printf("\n mul=%f sigmax=%f\n",mu1,sigmax);
A=(cv[0]+cv[10])/2.0;
209
for(i=1;i<10;i++)
A+=cv[i];
for(i=0;i<11;i++)
cv[i]/=A;
mu2=0.0;
for(i=0;i<11;i++)
mu2+=(float)i*cv[i];
sum=0.0;
for(i=0;i<11;i++)
sum+=(i-mu2)*(i-mu2)*cv[i];
sigmay=sqrt((double)sum);
printf("\n mu2=%f sigmay=%f\n",mu2,sigmay);
sx2=sigmax*sigmax;
sy2=sigmay*sigmay;
printf("\n Does the source of the blur imposes equal extent \n");
printf(" of blurs in both the x and y directions?(y or n) >");
while(((ch1=getche())!='y')&&(ch1!='n'));

if(ch1=='y')
sx2=sy2=sx2+sy2;
printf("\nEnter name of file for storing magnitude- frequency");
printf("\nresponse in a form suitable for plotting >");
scanf("%s",file_name);
fptr=fopen(file_name,"w");
u=-pi;
pi2=2.0*pi*sigmax*sigmay;;
du=dv=(2.0*pi)/32.0;
H×nh 10.3 Hµm kh«i phôc ¶nh mê.
210
for(i=0;i<32;i++)
{
v=-pi;
for(j=0;j<32;j++)
{
x=(u*u*sx2+v*v*sy2)/2.0;
if(x>=20.0)
G=(float)0.0;
else
G=(float)exp((double)(-x));
H[i][j]=1.0/(pi2*G+1.0);
v+=dv;
}
u+=du ;
}
fprintf(fptr,"%d %d\n",32,32);
fprintf(fptr,"%e ",0.0);
v=-pi;
for(i=0;i<32;i++)

{
fprintf(fptr,"%e ",v);
v+=dv;
}
fprintf(fptr,"\n");
u=-pi;
for(i=0;i<32;i++)
{
fprintf (fptr, "%e " , u) ;
for(j=0;j<32;j++)
fprintf(fptr,"%e ",H[i][j]);
fprintf(fptr, " \n ");
u+=du;
}
fclose(fptr);
printf("\nEnter file name for storing mag .
-freq . response in a");
printf ( "\nformat that can be used by IMPULSE.
C or FIRD.C > " );
scanf ( "%s " , file_name);
fptr=fopen(file_name,"w");
fprintf(fptr , "%d %d ", 32, 32);
for(i=0;i<32;i++)
for (j=0 ;j<32 ; j++)
fprintf(fptr,"%f ", H[i][j]);
fclose(fptr) ;
}
211
Bài tập 10.1
Kiểm tra thủ tục trên đây với ảnh "CAMEL.IMG" (hình 7.7a) đã đợc phóng to,

dùng hàm nội suy chốt B bậc ba. Kết quả đợc cho trong hình 7.9 đó là ảnh hơi mờ.
Với yêu cầu nhận dạng đờng biên ảnh mà tại đó phạm vi vết mờ theo cả hai hớng
ngang và dọc có thể đánh giá đợc, chơng trình trên đã cho ra một đờng biên ảnh rõ
nét trên cả hai hớng ngang và dọc. Kết quả này có thể thu đợc khi sử dụng toán tử
Kirsh (chơng 5, chơng trình 5.3). So sánh kết quả đó với hình 7.7b, 8.5, và 8.6 trong
các chơng trớc.
Hình 10.3 chỉ ra hàm giảm mờ, đó là kết quả từ bài tập này. Vết mờ đợc xem nh
tròn trong trờng hợp này. Hình 7.9 là ảnh kết quả của chơng trình trên với
x
2.9

x
2.6, hoặc

3.89. Hình 10.4 đa ra đáp ứng tần số-biên độ của bộ lọc IIR 2 ì
2 đợc thiết kế để xấp xỉ hàm giảm mờ. Đầu tiên bộ lọc đợc thiết kế với phơng pháp
Shanks và sau đó là phơng pháp lặp của chơng 9. Kết quả áp dụng bộ lọc IIR 2-D với
ảnh đã nói ở trên có sự cải thiện đáng chú ý so với ảnh gốc. Tuy nhiên, ph ơng pháp
lọc thông thấp mô tả trong chơng 9 cho kết quả gần với phơng pháp FFT hơn, so với
cách tiếp cận này. Các hệ số thu đợc của bộ lọc IIR trong ví dụ này đợc ghi trong
bảng 10.1.
Bây giờ chúng ta tăng cờng ảnh sao hoả thu đợc qua kính thiên văn đợc cho trên
hình 10.5. Nguyên nhân của vết mờ này là do hệ số khúc xạ thay đổi theo áp xuất
khí quyển, và cũng có thể là do mở ống kính trong khoảng thời gian dài. áp dụng thủ
tục đờng biên trong phần này, chúng ta thu đợc ảnh chỉ ra trên hình 10.6. Mặt dù
ảnh nét hơn, nhng nó không cung cấp cho ta nhiều chi tiết mới. Chúng ta cần chỉ ra
rằng đây là một ảnh của toàn bộ sao hoả với độ phân giải chỉ có 256 ì 256 điểm
ảnh. Đây là một ảnh dới mẫu, và không có thông tin nào về ảnh đợc rút ra ở đây mà
lại không rút ra đợc từ ảnh gốc. Hình 10.7 chỉ ra một ảnh mờ là kết quả của ảnh của
vật nằm ngoài tiêu cự. áp dụng cùng thủ tục và dùng bộ lọc FIR 7 ì 7 thiết kế sử

dụng cửa sổ Blackmann chúng ta thu đợc ảnh chỉ trên hình 10.8.
Bảng 10.1 các hệ số của bộ lọc khôi phục
-0.034139 1.000000
-0.014686 -0.650127
-0.012220 0.007701
-0.014683 -0.650224
0.991926 0.474917
-0.655115 0.005353
-0.012214 0.007699
-0.655211 0.005351
0.468586 0.005273
212
Hình 10.4 Đáp ứng biên độ của bộ lọc 2-D IIR đợc xấp xỉ bởi hàm khôi phục ảnh
mờ.
Bài tập 10.2
1. "MARS.IMG" và "YOSSRA.IMG" là các tên file tơng ứng của các ảnh trong
hình 10.5 và 10.7. Thực hiện quá trình khôi phục.
Để làm bài tập này chúng ta cần chạy các chơng trình sau theo thứ tự:
a. KIRSH để có đợc đờng biên rõ nét của ảnh.
b. DEBLUR để tính hàm chuyển đổi giảm mờ.
c. IMPULSE để thu đợc đáp ứng không gian của hàm giảm mờ.
d. IIRD để thiết kế bộ lọc IIR từ đáp ứng không gian.
e. IIRDITER để tăng cờng bộ lọc đợc thiết kế (dùng một hoặc hai bớc lặp).
Bạn cần phải tự viết chơng trình cho bạn.
2. Lặp lại phần 1 dùng các bộ lọc kiểu FIR.
3. áp dụng lọc trung bình để khôi phục ảnh "YOSSRA.IMG".
4. áp dụng bộ lọc thống kê Wallis với ảnh "YOSSRA.IMG".`
213
H×nh 10.5 ¶nh sao ho¶ bÞ mê do ¶nh hëng cña khÝ quyÓn.
H×nh 10.6 Kh«i phôc ¶nh h×nh 10.5.

214
Hình 10.7 ảnh mờ do ngoài tiêu cự.
Hình 10.8 Khôi phục ảnh hình 10.7.
10.6 Khôi phục lại ảnh qua phép xử lý vùng
Các phép gần đúng ở phần trên dựa trên cơ sở coi rằng tất cả các vật thể trên bề
mặt đều chịu một tác động bằng nhau của các vết mờ. Điều này sẽ đúng nếu chỉ có
một độ sâu nhỏ trên ảnh hoặc tất cả các vật thể cùng chuyển động theo một hớng.
Một điều chúng ta biết rất rõ là một vật thể chuyển động gần camera sẽ có nhiều vết
mờ hơn các vật thể xa camera. Trong trờng hợp vết mờ chuyển động, vật thể chuyển
động chậm hoặc cùng tốc độ nhng lại gần camera sẽ chịu nhiều tác động mờ hơn vật
215
thể chuyển động nhanh hoặc là cùng tốc độ nhng ra xa camera. Điều này dẫn chúng
ta quay lại với các giả thiết ban đầu của chúng ta (coi PSF là bất biến khoảng cách),
dùng một OTF duy nhất cho tất cả các trờng hợp có thể không chấp nhận đợc trong
một số trờng hợp. Để khắc phục vấn đề này chúng ta sẽ xem xét giải thuật sau đây :
1. Chia ảnh thành các miền chữ nhật hoặc là vuông không chồng lên nhau.
2. Trong các miền này cần đo phạm vi của vết mờ
x

y
. Trong phần nào
không có đờng biên, dùng
x

y
của miền gần nhất.
3. Từ phạm vi của vết mờ tính các hàm khôi phục cho tất cả các phần.
4. Thiết kế một bộ lọc cho mỗi phần để xấp xỉ các hàm khôi phục .
5. Đa ra ảnh khôi phục dùng bộ lọc theo các bớc:
a. Miền đầu tiên trên cao bên tay trái đợc khôi phục với bộ lọc có điều kiện ban

đầu là zero.
b. Các miền còn lại đợc khôi phục với các bộ lọc khôi phục tơng ứng của chúng;
dù thế nào đi chăng nữa; điều kiện ban đầu các bộ lọc phụ thuộc đợc lấy từ
các phần trớc. Nhập vào phần trớc cần lấy từ những miền cha đợc khôi phục
và xuất ra phần trớc lấy từ những miền đã khôi phục. Chú ý là ảnh coi nh là
đợc bao quanh bởi zero, điều này sẽ đặt điều kiện ban đầu trên bộ lọc dùng
trên các khối cao nhất và trái nhất.
Để tránh hiệu ứng khối, ví dụ nh sự khác nhau của quá nhiều của các giá trị hàm
mức xám trung bình giữa các khối gần nhau, hàm khôi phục vết mờ sẽ có dạng
0.1
0.1
),(

2/)(
2222
+
=
+
yx
vu
Ke
vuH

(10.18)
ở đây K chọn trên giá trị của thử nghiệm và sai số làm giảm tác động khối. Chú ý
là trong thuật toán trên các phần trùng nhau có thể dùng tác động khối nhỏ nhất.
Để giải quyết vấn đề trên bạn cần phát triển ba chơng trình. Chơng trình đầu tiên
tính phạm vi vết mờ,
x


y
cho tất cả các phần cắt. Chơng trình thứ hai dùng
thông tin này tính hệ số hồi phục cho tất cả các bộ lọc (bộ lọc IIR đã đợc dùng). Ch-
ơng trình thứ ba và là chơng trình cuối cùng sẽ lấy kết quả của chơng trình thứ hai
để khôi phục lại ảnh bị mờ.
Bài tập 10.3
1. Viết một chơng trình tính phân tán vết mờ của các khối ảnh mà có thể trùng
lên nhau (kích thớc khối chọn bởi ngời dùng), chia nhỏ ảnh số. Nhập vào của
chơng trình này là một nền đờng biên ảnh. Để có một khối không có đờng
biên, dùng phạm vi vết mờ của các miền bên cạnh .
2. Viết một chơng trình dùng các phạm vi của tất cả các khối tính các hệ số bộ
lọc cho cả hai kiểu bộ lọc FIR và IIR, dựa trên yêu cầu của ngời sử dụng. Giá
trị K của biểu thức 10.8 cũng đợc ngời sử dụng lựa chọn.
3. Viết một chơng trình dùng các bộ lọc thiết kế trong phần 1 để loại bỏ các vết
mờ. Giá trị nhập vào cần cho các khối tại trên cao và bên trái ngoài rìa của tất
cả các khối đợc cho riêng từng khối lấy từ phía trên và bên trái khối nằm xung
quanh đã đợc xử lý .

Để kiểm tra giải thuật trên ta dùng ảnh " PARTY.IMG" cho ở hình 10.9. Vết mờ
của ảnh có nguyên nhân là do sự chuyển động khác hớng của cặp này cùng với vết
mờ do nằm ngoài tiêu cự gây ra. Dùng ảnh thu đợc khi áp dụng các bớc khôi phục ở
216
phần 10.5 cho chúng ta một ảnh có chất lợng tốt hơn. Hình 10.10 là ảnh thu đợc khi
dùng lọc FIR 5 ì 5 trên toàn bộ ảnh thiết kế dùng cửa sổ Blackmann và hàm khôi
phục vết mờ dùng các giả thiết và điều kiện ban đầu cho ở phần này.
10.7 Khôi phục dùng ảnh đồng dạng
Phơng pháp này rất hiệu quả khi khôi phục ảnh bị sai tiêu cự. Chú ý là nếu F(u,v)
và G(u,v) là biến đổi Fourier của ảnh mờ và ảnh không mờ thì
),(),(),(),( vuNvuFvuHvuG +=
(10.19)

Hình 10.9 "PARTY.IMG" minh hoạ ảnh mờ do chuyển động và ngoài tiêu cự.
217
Hình 10.10 Khôi phục ảnh "PARTY.IMG".
Nếu F(u,v) đợc biết, thì OTF, H(u,v) có thể tính đợc. Tuy nhiên, tất cả dữ liệu mà
chúng ta có là G(u,v), và vì thế chúng ta có hai chọn lựa: hoặc là loại trừ H(u,v) từ
G(u,v) nh cách chúng ta đã làm ở phần trên hoặc dự đoán F(u,v) và từ biểu thức
(10.20) rút ra một đánh giá cho H(u,v). Nếu biến đổi Fourier của một ảnh không mờ
dùng để đánh giá F(u,v) thì H(u,v) có thể đánh giá đợc.
Một kỹ thuật khôi phục ảnh rất hiệu quả phát triển bởi Stockham, Cole, và
Cannon đợc tiến hành theo các bớc sau:
1. Chia ảnh mờ thành các ảnh nhỏ có thể chồng lên nhau.
2. Với các ảnh nhỏ chúng ta có:
),(),(),( vuFvuHvuG
ii

(10.21)
ở đây chỉ số i là chỉ ảnh con thứ i. Chú ý là nếu trong miền Fourier các hàm
là phức. Vì vậy,
),(
),(
),(),(),(
),(
vuj
i
vuj
j
i
i
F
H

vu
i
G
evuFevuHevuG




(10.22)
3. Rút ra đánh giá của |H(u,v)| theo:
|),(||),(||),(| vuFvuHvuG
ii

hoặc
|),(|ln|),(|ln|),(|ln vuFvuHvuG
ii
+
trung bình trên N ảnh con


==
+
N
i
i
N
i
i
vuF
N

vuHvuG
N
11
|),(|ln
1
|),(|ln|),(|ln
1
(10.23)
Dễ thấy F
i
(u,v) có thể thay bằng một ảnh cùng dạng (một ảnh trong cùng tiêu
cự) nh là một đánh giá:
|),(||),(| vuPvuF
ii

ở đây P
i
kí hiệu cho ảnh con đồng dạng.

==

N
i
i
N
i
i
vuP
N
vuG

N
vuH
11
|),(|ln
1
|),(|ln
1
|),(ln(
(10.24)
4. Giả sử
),( vu
H

= 0.0 cho hầu hết các OTF, và bằng cách dùng biểu thức
(10.20) và tính các OTF, khôi phục ảnh.
Một phơng pháp tơng tự nhờ vào Knox. Knox đợc quan tâm đến việc làm rõ
những bức ảnh trong thiên văn. Bởi vì những đối tợng xung quanh trái đất đợc kính
thiên văn chụp qua khí quyển, sự rõ ràng của những bức ảnh này bị giới hạn bởi sự
chuyển động của khí quyển. Biến đổi Fourier của ảnh số hoá thứ i bằng
),( vuG
i

OTF tơng ứng của nó là
),( vuH
i
chúng ta có:
),(),(),( vuFvuHvuG
ii
=
(10.25)

218
ở đây
),( vuF
là biến đổi Fourier của ảnh không chia độ.
Bây giờ chúng ta quan tâm đến sự tơng quan tự động
),(),(
),(),(),(),(
*
**
vvuuFvuF
vvuuHvuHvvuuGvuG
iiii
++ì
++=++
(10.26)
ở đây dấu viết trên "*" biểu thị liên hợp phức. Trung bình trên nhiều ảnh ta có

[ ] [ ]
),(),(
),(),(
1
),(),(
1
*
1 1
**
vvuuFvuF
vuHvuH
N
vvuuGvuG

N
N
i
N
i
i
i
i
++ì
=++

= =
(10.27)
Lấy pha và biểu thị pha của
),( vuF
nh
),( vu
F

, chú ý rằng pha của
),( vuH
i

không đáng kể với sự chuyển động của khí quyển, chúng ta có thể viết:









++=++

=
),(),(
1
),(),(
1
*
N
i
i
iFF
vvuuGvuG
N
phasevvuuvu

(10.28)
Bằng cách đặt
0)0,0( =
F

, tất cả các pha có thể đợc tính tuần hoàn vô hạn từ
công thức (10.28), ở đây chỉ yêu cầu những thông tin thu đợc từ ảnh mờ. Bởi vì, nh
chúng ta đã đợc chú ý từ trớc, pha mang hầu hết các thông tin (xem chơng 7) về ảnh,
ảnh có thể đợc khôi phục từ
),(
),(),(
vu

F
evuGvuF

=
(10.29)
Phơng pháp xen kẽ đợc đa ra bởi Morton và Andrews, phơng pháp này không bị
hạn chế để khôi phục ảnh mờ do chuyển động của khí quyển, mà cũng có thể đợc sử
dụng cho những dạng ảnh mờ khác đã nói trớc đây. Chia ảnh mờ thành những ảnh
nhỏ, chúng có thể phủ chồng lên nhau, và dùng i để chỉ mục cho những ảnh nhỏ
này,
),(),(),( vuFvuHvuG
ii
=
(10.30)
tạo lên tích số
),(),(
),(),(),(),(
*
**
vvuuFvuF
vvuuHvuHvvuuGvuG
i
i
i
i
++ì
++=++
(10.31)
Phơng pháp hớng đến việc ớc lợng H(u,v) bằng cách trung bình trên các ảnh nhỏ.
Đó là:

219



=
=
++ì
++=++
N
i
i
i
N
i
i
i
vvuuFvuF
N
vvuuHvuHvvuuGvuG
N
0
*
1
**
),(),(
1
),(),(),(),(
1
(10.32)
hoặc



=
=
++
++
=++
N
i
i
i
N
i
i
i
vvuuFvuF
N
vuH
vvuuGvuG
N
vvuuH
1
*
1
*
*
),(),(
1
),(
),(),(

1
),(
(10.33)
Nếu

=
++
N
i
ii
vvuuFvuF
N
1
*
),(),(
1
có thể đợc ớc lợng, ảnh nguyên mẫu có thể
đợc sử dụng cho điều này, và chúng ta có một sự làm mờ đi nhỏ nhất, ví dụ với
H(0,0) = 1, điều đó có nghĩa là lợng dới g(x,y) bằng với lợng dới f(x,y); H(u,v) có thể
đợc tính tuần hoàn vô hạn từ công thức (10.33). Chú ý rằng công thức (10.33) tính
đồng thời cả biên độ và pha của H(u,v). Tuy nhiên, qua kiểm nghiệm cho thấy độ ổn
định rất ít. Một phơng pháp cũng đợc phát triển bởi Morton và Andrews xem biên độ
và pha độc lập. Đầu tiên, dùng phơng pháp Cannon để tính biên độ:
222
),(),(),( vuFvuHvuG
ii
=
(10.34)
Sau đó tính tổng, chúng ta có



=
=
=
N
i
i
N
i
i
vuF
N
vuG
N
vuH
1
2
1
2
2
),(
1
),(
1
),(
(10.35)
Bây giờ xem xét đến pha của OTF, chúng ta có

),(),(
),(),(),(),(

vvuuvu
vvuuvuvvuuvu
ii
ii
FF
HHGG
+++
++=++


(10.36)
Nếu công thức (10.36) đợc trung bình với i, thì

av
vuFF
av
vuGGHvuH
vuvu
vuvuvuvu
ii
ii
),(),(
),(),(),(),(
++
++=++


(10.37)
Chú ý rằng


H
(0,0) = 0 và biểu thức cuối cùng trong công thức (10.37), biểu thức
mẫu số trong công thức (10.35) có thể đợc ớc lợng từ ảnh nguyên gốc.
Morton và Andrews chứng minh rằng bất kỳ ảnh nào có biên độ tự tơng quan đợc
định nghĩa bởi
),1(),(
*
vuFvuF +
(10.38)
Điều đó giống nh biên độ tự tơng quan của ảnh mờ có thể đợc tận dụng nh một
ảnh nguyên mẫu. Một điểm khác cần phải nói đến là vì H(u,v) đợc tính từ ảnh nhỏ
220
thu đợc từ cả ảnh nguyên mẫu và ảnh mờ, nó sẽ có số mẫu ít hơn ảnh mờ. Nếu sự
khôi phục đợc thực hiện trực tiếp qua việc chia tần số, nghĩa là G(u,v) bằng H(u,v),
thì một dạng của nội suy tuyến tính cần đợc áp dụng trên mẫu của H(u,v) chuyển
những số của chúng thành những số của mẫu trên ảnh mờ. Bất kỳ dạng nội suy nào
có thể đợc tận dụng; ví dụ, những dạng đợc sử dụng trong "blowing up" một ảnh đợc
cho và miêu tả trong chơng 7, phần 7.5.2 sẽ là quy tắc thu hút ứng dụng này.
Biên độ và pha của OTF đợc xác định rõ, ảnh có thể đợc lu trữ qua hoặc là lọc
nghịch đảo hoặc qua ứng dụng của bộ lọc bình phơng cực tiểu (Wiener). Bộ lọc
Wiener thu đợc xuất phát từ hàm chuyển đổi mà sẽ cực tiểu theo hớng bình phơng
cực tiểu sự khác nhau giữa ảnh đợc lu trữ, f(x,y), và ảnh nếu không có nhiễu và lí t-
ởng về tiêu cự. Ta có thể nhận thấy chi tiết về kết quả của bộ lọc Wiener, ví dụ,
trong phần tham khảo 1. Việc lu trữ sử dụng bộ lọc Wiener có thể đợc thực hiện nh
sau:
v)v)R(u,G(u,v)F(u, =
(10.39)
ở đây R(u,v) đợc cho bởi
)v,u()v,u()v,u(H
)v,u()v,u(*H

)v,u(R
nf
2
f


+
=
(10.40)
trong đó

f
(u,v) là mật độ năng lợng quang phổ của ảnh nguyên mẫu và

n
(u,v) là
mật độ năng lợng quang phổ của nhiễu. Mật độ năng lợng quang phổ hay năng lợng
quang phổ là biến đổi Fourier của tín hiệu tự tơng quan. Ta có thể viết
2
n
2
f
)v,u(N)v,u(
)v,u(F)v,u(
=
=


Mật độ năng lợng quang phổ của ảnh mờ có thể đợc biểu diễn nh sau
)v,u()v,u()v,u(H)v,u(

nf
2
g

+=
(10.41)
Vì thế công thức (10.40) có thể viết:
)v,u(
)v,u()v,u(H
)v,u(R
g
f
*


=
(10.42)
Công thức (10.42) và (10.39) có thể đợc tận dụng để lu trữ ảnh mờ.
Bài tập 10.4
1. Tính và vẽ sơ đồ log của biên độ tự tơng quan của hai ảnh: "PARTY.IMG" và
"YOSSRA.IMG".
2. Tìm ảnh nguyên mẫu mà log biên độ tự tơng quan phân phối xấp xỉ tơng tự
nh ảnh mờ.
3. Dùng một ảnh nguyên mẫu ớc lợng OTF, và thực hiện việc lu trữ qua lọc
Wiener.
221
222

×