matlab图像滤波详解(二维傅里叶滤波)

在matlab中,图像滤波有很多中,比如平滑滤波(smooth()函数);中值滤波medfilt2()函数),这些相对简单,可以直接参考函数解释,不做详细解说

这里重点讲解一下傅里叶滤波,在matlab中,常用的为快速傅里叶变换。进行滤波的难点就在于如何将图像转换到频率域以及如何将频率域的图像逆变换为空间域中的图像

第一步:读取图像并对图像进行傅里叶变换

Path='images.jpg';
im=imread(Path);
img=rgb2gray(im);%将彩色图变成二维灰度图图像
img2=double(img);%将数据改成double类型,方便进行数据变换
subplot(131)
imshow(img);
title('原始图像')
f=fft2(img2);

此时,f为图像的二维频谱,但是此时的零频分量并不在中间,如果直接进行显示的话,会出现如下结果(见左图),matlab提供ffishift()函数,可以将图像零频分量移到中间,代码见下

subplot(121)
imshow(log(abs(f)+1),[]);%直接显示图像,未移动零频分量
title('未移动零频分量频谱图')

subplot(122)
f2=fftshift(f);
imshow(log(abs(f2)+1),[]);%直接显示图像,未移动零频分量
title('移动零频分量频谱图')

这里有人肯定会疑问 log(abs(f)+1)中为什么要+1,不加也行,就是为了画图的时候,让f为零 log(abs(f)+1),不加1的话 log(abs(f))会很大,图像不好看

 结果如下

  第二步:滤波

滤波分为低通、高通、带通、带阻、高斯低通、高低高通滤波,其本质就是令频谱F乘以滤波器H,针对不同的滤波器,H不同

低通滤波器【D(u,v)表示点(u,v)到中心的距离】

H(u,v)=\left\{\begin{matrix}1 D(u,v)\leq D0 \\ 0D(u,v)>D0 \end{matrix}\right.

高通滤波器

H(u,v)=\left\{\begin{matrix}0 D(u,v)\leq D0 \\ 1 D(u,v)>D0 \end{matrix}\right.

高斯低通滤波器

H(u,v)=e^{\frac{-D^{2}(u,v)}{2D_{0}^{2}}}

 高斯高通滤波器

H(u,v)=1-e^{\frac{-D^{2}(u,v)}{2D_{0}^{2}}}

在此我们以高斯低通滤波器为例,利用matlab设计滤波器(设D0为10)

D0=10;
[M,N]=size(f2);
m=floor(M/2);
n=floor(N/2);%(n,m)为中心点
for i=1:M
    for j=1:N
        D=sqrt((i-m)^2+(j-n)^2);
        H(i,j)=exp(-1/2*D^2/D0^2);
    end
end
figure
subplot(121)
imshow(H);
title('高斯低通滤波器')

 滤波器与频谱相乘,即得到滤波后的频谱

subplot(122)
f3=f2.*H;
imshow(log(abs(f3)+1),[])       
title('滤波后的频谱')

结果如下

 第三步:傅里叶逆变换

进行逆变换时,要先将频谱移动回原位置,即通过ifftshift( )函数实现,代码如下

img3 = (ifft2(ifftshift(f3)));
img4 = uint8(real(img3));%real函数表示留下复数的实部
figure
subplot(121)
imshow(img);
title('原图');
subplot(122)
imshow(img4);
title('逆变换');

结果如下

这里要注意的是逆变换后的img3为复数,要删除虚数部分,并转换成uint8图像格式数据才能用imshow显示

总结:1.其他滤波器原理只要在H函数定义部分稍微改动一下即可
           2.不必过多纠结log(abs(f3)+1)为什么取对数以及为何加1,只是单纯的为了显示更加直观

  • 22
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值