关于matlab图像滤波详解(二维傅里叶滤波)
作者:袁德波 发布时间:2022-04-16 19:51:35
标签:matlab,图像滤波,二维傅里叶,滤波
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)到中心的距离】
在此我们以高斯低通滤波器为例,利用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显示
来源:https://blog.csdn.net/yuanhoushu/article/details/123893083
0
投稿
猜你喜欢
- 一、参数和共享引用:In [56]: def changer(a,b): ....: a=2 ....
- 而Easp类中提供了大量实用的ASP通用过程及方法,可以简化大部分的ASP操作。目前只提供了VBScript版,JScript版将来可能会提
- 1. datetime 库概述以不同格式显示日期和时间是程序中最常用到的功能。Python 提供了一个处理时间的标准函数库 datetime
- 有些时候我们需要从视频序列中均匀的随机采样,我们可以每隔x步进行一次采样,这就要求对一个list每隔x步进行一次截取,再从截取到的不同的子集
- 关于缓存剩下的问题是数据的隐私性以及在级联缓存中数据应该在何处储存的问题。通常用户将会面对两种缓存: 他或她自己的浏览器缓存(私有缓存)以及
- 如何阻止别人非法链接你网站的图片,防盗链?getimage.asp<% Option ExplicitDim&nb
- 刚刚看了bootstrap的导航栏,发现有点弄混了,现在来整理一下;导航栏是一个很好的功能,是 Bootstrap 网站的一个突出特点。导航
- 前言这篇博客将了解什么是特征,角点,哈里斯角点检测(Harris Corner Detection)的概念。并使用cv2.cornerHar
- !DOCTYPE--------------------------------------------------------------
- 8是典型的七段数码管的例子,因为刚好七段都有经过,这里我写的代码是从1开始右转。这是看Mooc视频写的一个关于用七段数码管显示当前时间# -
- Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库。许多Python的原生系统已经开始使用urllib3。Urlli
- 众所周知,Mac自带python2,但无奈我们想使用新版本,因此我们需要安装python3安装python3我使用了homebrew,网上也
- 瞎鼓捣系列~Numpy + matplotlib 画一个魔方前言NumPy是Python科学计算的基本包。它是一个Python库,提供了多维
- 比如有两个模块,一个aa.py,一个bb.py 代码如下:aa.py:#encoding:utf-8import bba=1bb.py:#e
- 介绍公司以前的一个exe包,我们需要查看里面python源码,但是以前的py源码文件找不到,所以只能反编译,介绍一下反编译的过程。首先准备:
- 惊现!表面下的隐藏信息——浅谈信息可视化1910年,病卧床上的魏格那(德国气象学家,以“大陆漂移学说”闻名),无意地注视着墙上的世界地图……
- 前言最近在使用Python的时候遇到浮点数运算,发现经常会碰到如下情况:出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些
- 首先贴出四种方法适用范围比较:注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件。而Excel 20
- 自己做了一个tcp工具,在学习动画的时候踩了坑,需求是根据上线变绿色,离线变灰色,如果连接断开了,则变为灰色问题现象:可以看到点击“连接”,
- Python 语言的优势在于其功能强大,可以用于网络数据采集、数据分析等各种应用场景。本篇文章将介绍如何使用 Python 获取网络数据、使