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

作者:袁德波 时间:2022-04-16 19:51:35 

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))会很大,图像不好看

结果如下

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

第二步:滤波

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

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

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

在此我们以高斯低通滤波器为例,利用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('滤波后的频谱')

结果如下

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

第三步:傅里叶逆变换

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

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

结果如下

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

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

来源:https://blog.csdn.net/yuanhoushu/article/details/123893083

标签:matlab,图像滤波,二维傅里叶,滤波
0
投稿

猜你喜欢

  • Scrapy项目实战之爬取某社区用户详情

    2022-04-16 11:36:31
  • python隐藏终端执行cmd命令的方法

    2022-01-09 05:19:37
  • Python使用装饰器模拟用户登陆验证功能示例

    2022-03-04 20:56:52
  • python网络编程学习笔记(五):socket的一些补充

    2022-02-03 23:22:48
  • Python数字图像处理之霍夫线变换实现详解

    2022-01-26 05:59:13
  • 番茄的js表单验证类

    2008-01-07 13:53:00
  • mysql 各种时间段查询

    2010-01-06 13:37:00
  • asp代码WinHttp.WinHttpRequest.5.1使用例子

    2010-03-11 21:28:00
  • python 设置文件编码格式的实现方法

    2021-06-22 14:49:52
  • Python版微信红包分配算法

    2022-04-10 12:48:22
  • python 实现dict转json并保存文件

    2022-04-17 10:24:17
  • 用Python实现批量生成法务函代码

    2022-05-27 15:05:28
  • Python实现多线程下载文件的代码实例

    2022-11-06 02:41:12
  • Python 安装setuptools和pip工具操作方法(必看)

    2023-11-06 11:46:07
  • PHP的mysqli_sqlstate()函数讲解

    2023-06-08 14:30:30
  • python数值基础知识浅析

    2021-12-10 07:07:49
  • Django DRF路由与扩展功能的实现

    2022-05-03 09:43:15
  • PyGame实现初始化导入所有模块方法详解

    2023-05-25 15:14:55
  • python opencv实现图像配准与比较

    2023-03-01 15:30:24
  • Python实现双轴组合图表柱状图和折线图的具体流程

    2021-08-24 03:23:33
  • asp之家 网络编程 m.aspxhome.com