文章目录
理想低通滤波理想高通滤波总结:在matlab中,处理频域图像的过程大概为:
1.对图像进行傅里叶变换。
2.为了方便构建滤波器,将频域图像中心化(即将0频显示在图像中心)
3.设计所需要的频域滤波器
4.在频域图像和滤波器进行乘法运算
5.去中心化
6.转回到空间域
理想低通滤波
空间域的低通滤波,可以通过构造n*n的低通滤波器,然后调用imfilter函数实现。
学过《信号与系统》或者《数字信号处理》的同学都知道,时域卷积等效于频域相乘。所以在本文中,我们通过在频域内的操作,实现理想低通滤波。
理想低通滤波器的频域表示形式为:
H(u,v)={1,whenD<D00,whenD>D0}H(u,v)=\begin{Bmatrix} 1, & &when&D< D_0\\0, & & when&D> D_0 \\ \end{Bmatrix}H(u,v)={1,0,whenwhenD<D0D>D0}
其形状为:
下面,我们给出matlab中的代码,测试理想低通滤波的效果:
a=imread('aft.jpg');a=rgb2gray(a);%转换为灰度图subplot(1,2,1);imshow(a);title('原图');a=im2double(a);%为了处理方便,转换为double类型b=fft2(a);%傅里叶变换b=fftshift(b);%中心化%下面是求理想低通滤波器[m,n]=size(a);H=zeros(m,n);cx=m/2;cy=n/2;D0=90;%设置滤波器for x=1:mfor y=1:nif((x-cx)^2+(y-cy)^2)>(2*D0^2);H(x,y)=0;else H(x,y)=1;endendendc=H.*b;d=ifftshift(c);%反中心化e= ifft2(d);%回到空间域subplot(1,2,2);imshow(e);title('低通滤波之后');
实验结果图为:
原图:
效果图:
通过观测我们可以看出,处理之后的图像变得模糊,达到了低通滤波的效果,实现了低通滤波。
理想高通滤波
而频域内理想高通滤波的原理同低通类似,只是滤波器的设计相反:
H(u,v)={0,whenD<D01,whenD>D0}H(u,v)=\begin{Bmatrix} 0, & &when&D< D_0\\1, & & when&D> D_0 \\ \end{Bmatrix}H(u,v)={0,1,whenwhenD<D0D>D0}
滤波器的效果图为:
这里不在赘述代码,直接放出高通滤波的结果图:
相较于原图,图像轮廓清晰了很多,达到了图像增强的效果,实现了理想高通滤波。
总结:
本文讲述了基于matlab的频域处理图像的基本思路,并实现了理想低通滤波与理想高通滤波。高斯滤波、均值滤波的实现思路大同小异,只不过是更换不同的频域滤波器。。。
如果觉得《用理想低通滤波器在频率域实现低通滤波 高通滤波。》对你有帮助,请点赞、收藏,并留下你的观点哦!