失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 用理想低通滤波器在频率域实现低通滤波 高通滤波。

用理想低通滤波器在频率域实现低通滤波 高通滤波。

时间:2019-06-11 18:48:41

相关推荐

用理想低通滤波器在频率域实现低通滤波 高通滤波。

文章目录

理想低通滤波理想高通滤波总结:

在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,​​whenwhen​D<D0​D>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,​​whenwhen​D<D0​D>D0​​}

滤波器的效果图为:

这里不在赘述代码,直接放出高通滤波的结果图:

相较于原图,图像轮廓清晰了很多,达到了图像增强的效果,实现了理想高通滤波。

总结:

本文讲述了基于matlab的频域处理图像的基本思路,并实现了理想低通滤波与理想高通滤波。高斯滤波、均值滤波的实现思路大同小异,只不过是更换不同的频域滤波器。。。

如果觉得《用理想低通滤波器在频率域实现低通滤波 高通滤波。》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。