Tài liệu Giáo trình Xử lý ảnh - Chương 10: Khôi phục ảnh: 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 chưa. 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ờ...
23 trang |
Chia sẻ: hunglv | Lượt xem: 1481 | Lượt tải: 1
Bạn đang xem trước 20 trang mẫu tài liệu Giáo trình Xử lý ảnh - Chương 10: Khôi phục ảnh, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
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 chưa. 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
(10.1)
ở đây ib(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 ib(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 chưa 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.
1
2
3
4
F2
A
B
(a)
I1
I2
F2
O2
O1
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
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 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:
(10.2)
ở đây s 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.
h(x,y)
Mẫu đơn vị
O
x
(a)
x
h(x,y)
h(x,y)
(b)
x
h(x,y)
(c)
x
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à:
(10.3)
ở đây Ki 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
(10.4)
ở đây K là hằng số khoảng cách biên độ, sx và sy 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 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 d tại vị trí (x0,y0), được định nghĩa như sau:
nếu h(x,y) là PSF, thì ảnh mờ được cho bởi
(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:
ở đây K là hằng số, và sx và sy là các hệ số tán xạ dọc theo các hướng x và y. Vì thế cho nên
(10.5)
Chú ý rằng cho đường biên dọc được định nghĩa như trên, i(a,b) chỉ là hàm của a, chúng ta có thể viết
(10.6)
Bởi vì
chúng ta có thể viết
biểu thức này có thể viết lại dưới dạng
Đạo hàm riêng ib(x,y) theo x chúng ta được
Dùng quy tắc Leibnitz cho đạo hàm của tích phân, được cho bởi
sau khi lấy giá trị tuyệt đối, chúng ta được kết quả sau đây:
(10.7)
Đặt (10.8)
và (10.9)
Vì thế, chúng ta có thể viết biểu thức (10.8) thành
(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
Điều này có thể xảy ra nếu vùng dưới C(x,y0) 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:
(10.11)
trong đó (10.12)
(10.13)
Tương tự có thể thu được công thức bằng việc thay chiều ngang.
10.4 OTF
OTF có thể rút ra từ biến đổi Fourier 2-D
Dùng PSF cho bởi biểu thức (10.4), chúng ta có thể viết:
hay có thể viết
Từ (xem tham khảo 3)
do vậy
(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:
(10.15)
Chú ý rằng nếu sx = sx = 0.0, thì , 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ạ độ (x0,y0). 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 sx và sy.
4. Tính đáp ứng tần số của hàm bị mờ từ OTF mô tả ở phần trên.
(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 sx không bằng sy 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ì sx và sy có thể thay bằng s.
(10.17)
Chương trình C cho đánh giá sx và sy 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 chưong 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
#include
#include
#include
#include
#include
#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)
{
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];
}
}
/* 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;
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ờ.
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) ;
}
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 sx ằ 2.9 và sx ằ 2.6, hoặc s ằ 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, nhưng 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
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".`
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.
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 độ nhưng lại gần camera sẽ chịu nhiều tác động mờ hơn vật thể chuyển động nhanh hoặc là cùng tốc độ nhưng 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ờ sx và sy. Trong phần nào không có đường biên, dùng sx và sy 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 chưa đượ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
(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ờ, sx và sy 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
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 .
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.
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 ở 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ì
(10.19)
Hình 10.9 "PARTY.IMG" minh hoạ ảnh mờ do chuyển động và ngoài tiêu cự.
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ó:
(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,
(10.22)
3. Rút ra đánh giá của |H(u,v)| theo:
hoặc
trung bình trên N ảnh con
(10.23)
Dễ thấy Fi(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á:
ở đây Pi kí hiệu cho ảnh con đồng dạng.
(10.24)
4. Giả sử = 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 và OTF tương ứng của nó là chúng ta có:
(10.25)
ở đây 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
(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ó
(10.27)
Lấy pha và biểu thị pha của như , chú ý rằng pha của là không đáng kể với sự chuyển động của khí quyển, chúng ta có thể viết:
(10.28)
Bằng cách đặt , 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ừ
(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,
(10.30)
tạo lên tích số
(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à:
(10.32)
hoặc (10.33)
Nếu 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 độ:
(10.34)
Sau đó tính tổng, chúng ta có
(10.35)
Bây giờ xem xét đến pha của OTF, chúng ta có
(10.36)
Nếu công thức (10.36) được trung bình với i, thì
(10.37)
Chú ý rằng qH(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
(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ỏ 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 lưu 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 lưu 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 lưu trữ sử dụng bộ lọc Wiener có thể được thực hiện như sau:
(10.39)
ở đây R(u,v) được cho bởi
(10.40)
trong đó ff(u,v) là mật độ năng lượng quang phổ của ảnh nguyên mẫu và fn(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
Mật độ năng lượng quang phổ của ảnh mờ có thể được biểu diễn như sau
(10.41)
Vì thế công thức (10.40) có thể viết:
(10.42)
Công thức (10.42) và (10.39) có thể được tận dụng để lưu trữ ảnh mờ.
Bài tập 10.4
Tính và vẽ sơ đồ log của biên độ tự tương quan của hai ảnh: "PARTY.IMG" và "YOSSRA.IMG".
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ờ.
Dùng một ảnh nguyên mẫu ước lượng OTF, và thực hiện việc lưu trữ qua lọc Wiener.
Các file đính kèm theo tài liệu này:
- CHUONG10-Khôi phục ảnh.DOC