二维傅里叶变换滤波降噪

二维傅里叶变换滤波降噪,第1张

这一篇文章中说明了用"二维卷积"的方法进行滤波/降噪( 二维卷积滤波 )。本文主要介绍另一种滤波的方法:在二维傅里叶变换后的" 频振谱 "中,用" 滤波器 "进行滤波,并对比这两种滤波方法的优劣。

滤波器没那么复杂,就是一个函数式而已,只不过这个函数式有一些特别的功能。本文选用的是" 巴特沃斯滤波器 ";图像的噪声还是" 高斯噪声 "和" 椒盐噪声 "。巴特沃斯滤波器的函数式为:

其中 是截止频率(高于这个频率值,就被滤掉了), 是阶次, 是" 中心化频振图( 中心化参考这里 ) "中各点" 距中心点的距离 "。非常简单的一个函数。而且注意到: 说明这就是在频域内的一个函数,所以它的用法就是直接和" F(u,v) F频域参看这里 "做" 矩阵点乘 "即可达到滤波~

下面我们就实 *** 一下,对一个原始图像做一下低神段通滤波看看(把图像" 变模糊 ",因为一些信号被滤掉了),对应的Matlab程序如下:

效果如下,图1是原始图像埋胡,图2是低通滤波后图像(记得ifft2回到原始xy空间):

利用这篇文章中 同样的噪声 (高斯随机噪声、椒盐噪声),看看用频域滤波效果如何。这里我就设定截止频率 ,阶次 进行" 巴特沃斯弯瞎拦低通滤波 ",加噪声后图像如下:

二维傅里叶变换后频域做低通滤波,效果说明:

最后,再补充一个" 加噪声-fft2-滤波-ifft2 "的完整流程的Matlab程序:

本文用到的" zxc.jpg "原图像, 在这里 。

小波的阈值去噪效果比较好。可以调用wden函数,比较简单

本题中前面改一下比较直观,可以把原始信号输出来subplot(2,2,1)后面去噪信号subplot(2,2,2)频谱图subplot(2,2,3)后面可加程序

xd=wden(x,'rigrsure','s','sln',5,'sym8')

subplot(2,2,4)plot(xd)

title('去噪信号'吵余);

err=x-xd

函数wden的调用格式有以下两种:

(1)[XD,CXD,LXD]=wden(X,TPTR,SORH,SCAL,N,'wname')

(2)[XD,CXD,LXD]=wden(C,L,TPTR,SORH,SCAL,N,'wname')

函数wden用于一维信号的自动消噪。X为原始信号,[C,L]为信号的小波分解,N为小波分解的层数。

THR为阈值选择规则:

*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。

*TPTR='heursure',使用启发式阈值选择。

*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).

*TPTR='minimaxi',配闷用极大极小原理选择阈值。

SORH是软阈值或硬阈值的选择(分别对应's'和'h')。

SCAL指所使用的阈值是否需要重新调整,包含下面三种:

*SCAL='one' 不调整升卖滚;

*SCAL='sln' 根据第一层的系数进行噪声层的估计来调整阈值。

*SCAL='mln' 根据不同的噪声估计来调整阈值。

XD为消噪后的信号,[CXD,LXD]为消噪后信号的小波分解结构。

什么样的信号,频率范围是多少?是要用FFT滤波,还是用其他的方式?灶毕补充一下,如果是用FFT滤波的话:

对于给定的序列x(n),和采样频率fs等信息,先求其FFT频谱

y=abs(fft(x))

plot((1:length(x))*fs/length(x),y)title('信号的频谱')xlabel('频率')

然后你大概确定一下,你需要滤除的频带,上面的图形中可以看出噪声的频带。

比如说,你想要滤除从f1~f2的噪声,最简单隐春芹的方法就是在频域将这一段置零,

y(200:300)=0; %这里我假设的是200到300这一段就是频率f1~f2的。这森棚就是频率域滤波了,然后再反变换回去就行了

x=ifft(y) % 信号滤波后重建

具体的如果设置参数,就要看你的信号的特征了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12409392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存