您的当前位置:首页正文

MatLab理想低通滤波及高通滤波实现高频增强实验报告

来源:帮我找美食网


实验作业5:

1、 用理想低通滤波器在频率域实现低通滤波

程序代码:

I=imread('d:/3.jpg'); I=rgb2gray(I);

figure(1),imshow(I); title('原图像'); s=fftshift(fft2(I)); figure(2);

imshow(abs(s),[]);

title('图像傅里叶变换所得频谱'); [a,b]=size(s); a0=round(a/2); b0=round(b/2); d=10; for i=1:a

for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=1; else h=0; end;

s(i,j)=h*s(i,j); end; end;

s=uint8(real(ifft2(ifftshift(s)))); figure(3); imshow(s);

title('低通滤波所得图像');

滤波d=10

增强

I=imread('d:/3.jpg'); I=rgb2gray(I);

figure(1),imshow(I); title('原图像'); s=fftshift(fft2(I)); figure(2);

imshow(abs(s),[]);

title('图像傅里叶变换所得频谱'); figure(3);

imshow(log(abs(s)),[]);

title('图像傅里叶变换取对数所得频谱');

[a,b]=size(s);

a0=round(a/2); b0=round(b/2); d=10;

p=0.2;q=0.5; for i=1:a

for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=0; else h=1; end;

s(i,j)=(p+q*h)*s(i,j); end;

2、用理想高通滤波器在频率域实现高频

end;

s=uint8(real(ifft2(ifftshift(s)))); figure(4);

imshow(s);title('高通滤波所得图像');

figure(5);

imshow(s+I);title('高通滤波所得高频增强图像');

心得体会:

这次按照低通滤波器和高通滤波器的定义,按照低通滤波的过程,一步一步写,先是进行傅里叶变换,再对其频谱进行平移,使其中心位于中心,再对此时的频谱进行‘圆形滤波’,刚开始纠结于公式,要怎么想出一个H(s)的滤波器的表达式,然后再进行相乘,后来没有想出来,就直接在每次循环里面直接进行乘法运算,如: for i=1:a for j=1:b

distance=sqrt((i-a0)^2+(j-b0)^2); if distance<=d h=1; else h=0; end;

s(i,j)=h*s(i,j); end; end;

后来低通滤波这么一写,高通滤波也就挺简单的了,没怎么想,把上面那个h=1和h=0的位置调换一下就变成了高通滤波器,至于高频增强,就改用了s(i,j)=(p+q*h)*s(i,j);

在想滤波器表达式怎么写的时候找了好多资料,结果别人的程序都没看懂,后来看到稍微有点接近的,就吸取了那种写法,写出以上程序。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top