157
printf ( "
");
gotoxy(1,yt+3);
printf("File exists. Wish to overwrite? (y or n)-
->");
while(((ch1=tolower(getch()))!='y')&&(ch1!='n'));
putch(ch1);
switch(ch1)
{
case 'y':
ind=1;
break;
case 'n' :
gotoxy(1,yt+3);
printf("
");
gotoxy(1,yt+2);
printf("
");
gotoxy(1,yt+2);
printf("Enter file name >");
scanf("%s",file_name);
ind=access(file_name,0);
}
}
fptri=fopen(file_name,"w");
theta=pi/((float)N1*sqrt((double)2.0));
case '5':
if((i+i)==0);
{
printf("\n\nEnter a value for alpha (O to
8) >");
scanf("%f",&alpha);
alpha/=2.0;
}
beta=nsqrt/(float)N1;
beta*=beta;
beta=alpha*sqrt(fabs((double)(1.0-beta)));
T=alpha ;
sum1=1.0+T*T;
for(k=2;k<11;k++)
{
T=(1.0/(float)k)*alpha*T;
sum2+=T*T;
}
T=beta;
sum2=1.0+T*T;
for(k=2;k<11;k++)
{
T=(1.0/(float)k)*beta*T;
sum2+=T*T;
}
win=sum2/sum1;
h[i][j]*=win;
break;
}
fprintf(fptro,"%e",(float)0.0),
w=(float *)malloc((M1+1)*sizeof(float));
w[0]=-pi ;
winc=2.0*pi/(float)M1;
for(i=1;i<Nt;i++)
w[i]=w[i-1]+winc;
for(i=0;i<Nt;i++)
fprintf(fptro," %e",w[i]);
gotoxy(70,25);
textattr(WHITE+(GREEN<<4)+BLINK);
cputs("WAIT");
for(m=0;m<Nt;m++)
{
fprintf(fptro,"\n%e",w[m]);
for(n=0;n<Nt;n++)
{
zrt=zit=(float)0.0;
160
for(i=-N1;i<=N1;i++)
for(j=-N1;j<=N1;j++)
{
Hình 8.2 Bộ lọc 5 5 dùng hàm cửa sổ Blackmann.
xrm=(float)cos((double)(i*w[m]));
xim=(float)sin(-(double)(i*w[m]));
xrn=(float)cos((double)(j*w[n]));
xin=(float)sin(-(double)(j*w[n]));
r1=(xrm*xrn-xim*xin);
c
= 0.8. So sánh ảnh thu được với ảnh rút ra từ
các phép xấp xỉ FFT ta nhận thấy các ảnh này sáng hơn. Nguyên nhân có thể
là do ảnh gốc "CAMEL.IMG" chỉ hơi mờ và bộ lọc thông cao giảm thiểu được
mờ. Phương pháp FFT tuân theo định lý lấy mẫu vì vậy theo lý thuyết thì kết
quả cho ra sẽ tốt hơn. Tuy nhiên, phương pháp không gian dễ thực hiện hơn
nhiều, mà lại cho ra kết quả tương tự hoặc thậm chí tốt hơn. Cần chú ý rằng
mờ trên ảnh là một hàm của toán tử nội suy và không phải là ảnh. Do vậy, một
bộ lọc thông cao đã được thiết kế cho kết quả thoả mãn với một hàm nội suy
đặc biệt, nó có thể dùng cho tất cả các ảnh.
162
Hình 8.4 Bộ lọc 5 5 với cửa sổ hàm Kaiser với = 3.
Bài tập 8.1 Phóng đại ảnh "CAMEL.IMG " dùng phép nội suy ba chiều áp
dụng bộ lọc thông cao FIR dùng hàm cửa sổ Blackman và một tần số thông
thấp chuyển tiếp dốc đứng với tần số cát
c
= 1,4 rad/đơn vị.
Bài tập 8.2 Cho ảnh nằm trên đĩa có tên "MAHER.IMG ". Kích thước của
ảnh là 256 256 điểm ảnh.
1. Nhân đôi ảnh dùng phép nội suy hệ toạ độ ba chiều với bộ lọc thông cao.
Lựa chọn các
c
khác nhau, các loại hàm cửa sổ khác nhau và so sánh kết
quả .
2. Nhân đôi ảnh dùng phép nội suy của định lý lấy mẫu trong miền tần số
.So sánh kết quả thu được với kết quả tốt nhất của phần 1 bài tập.
c
= 0.6.
164Hình 8.6 Ảnh "CAMEL.IMG" sau khi dùng bộ lọc thông cao Butterworth với
c
= 0.8.
Bài tập 8.3 Lập một chương trình đưa ra phép nội suy dùng bộ lọc thông thấp
và thông cao FIR. Ảnh phóng đại ra bằng cách thêm các hàng zero và cột zero
với các hàng và cột của ảnh gốc, ảnh đã lọc phải chứa trong bộ đệm với kích
thước nhỏ nhất .
Hình 8.7 Ảnh "MAHER.IMG" gốc.
165
Hình 8.8 Ảnh "MAHER.IMG" dùng LPF tuần hoàn theo HPF.
Bài tập 8.4
1. Thiết kế bộ lọc thông thấp với điểm cắt tần số trong khoảng 1.7 đến
2.5 rad/giây với bước chia 1 rad/giây, kích thước là 7 7 và 11 11,
áp dụng một hàm cửa sổ xấp xỉ .
2. Vẽ ra đáp ứng tần số biên độ và so sánh kết quả .
3. Dùng chương trình trong bài tập 8.3 vào việc phóng đại ảnh
"IHAB.IMG" và "CAMEL.IMG" với các hệ số của phần 1.
-
0.010464
-
0.000057
0.013089
-
0.000057
-
0.010464
-
0.003200
-
0.009179
-
0.000057
0.0
79576
0.141409
0.079576
-
0.000057
-
0.009179
-
0.003200
-
0.010464
-
0.000057
0.013089
-
0.000057
-
0.010
464
-
0.003200
0.000517
-
0.003200
-
0.009179
-
0.011698