文章目录理想低通滤波器理想高通滤波器总结:
在matlab中,处理频域图像的过程大致如下。
1 .对图像进行傅立叶变换。
2 .将频域图像中心化(即,将0频率表示为图像中心)以便于构建滤波器)。
3 .设计所需的频域滤波器
4 .用频域图像和滤波器相乘
5 .去中心化
6 .返回空间域
理想低通滤波器
空域低通滤波器可以通过构造n*n的低通滤波器,并调用imfilter函数来实现。
学习《信号与系统》或《数字信号处理》的学生知道时域卷积等效于频域乘法。 因此,本文通过在频域的操作,实现理想的低通滤波器。
理想的低通滤波器频域表现如下。
h(u,v ) )、whend0、whend0) h ) u,v ) )、begin ) bmatrix ) 1、whend_0)、whenddd_0(、whendd_0(end )
} 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:m for y=1:n if((x-cx)^2+(y-cy)^2)>(2*D0^2); H(x,y)=0; else H(x,y)=1; end endendc=H.*b;d=ifftshift(c);%反中心化e= ifft2(d);%回到空间域subplot(1,2,2);imshow(e);title('低通滤波之后');
实验结果图为:
原图:
效果图:
通过观测我们可以看出,处理之后的图像变得模糊,达到了低通滤波的效果,实现了低通滤波。
而频域内理想高通滤波的原理同低通类似,只是滤波器的设计相反:
H ( u , v ) = { 0 , w h e n D < D 0 1 , w h e n D > D 0 } 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的频域处理图像的基本思路,并实现了理想低通滤波与理想高通滤波。安详的朋友滤波、均值滤波的实现思路大同小异,只不过是更换不同的频域滤波器。。。