ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MATLAB图像处理——图像中余弦噪声去除(附代码)

2022-01-28 11:30:15  阅读:279  来源: 互联网

标签:滤波器 噪声 带阻 滤波 余弦 图像处理 MATLAB 图像 傅里叶


图像中规则余弦噪声去除

问题描述

有以下增加噪声后的图像:
请添加图片描述
从图上可以明显看出在x方向上叠加了一正弦规律变化的噪声,要对其进行去噪处理,比较简单的做法的映射到频域,观察噪声出现的位置,在频域进行滤波,最后再进行反傅里叶变化。

傅里叶变化

对原图进行傅里叶变换得到:
在这里插入图片描述
从上面的图中不太能看的出来,将其映射到x方向上,得到一维的分布得到:
在这里插入图片描述
可以看出存在三个尖峰,最中间的尖峰是有用信息,使我们需要保留的,旁边的两个尖峰都是噪声形成的,所以可以使用带阻滤波器将两个尖峰噪声进行滤除。

带阻滤波器

构造的两个带阻滤波器如下图所示,分别过滤掉峰值为120和138处的噪声。
使用带阻滤波器与傅里叶频谱图的投影相乘,其中带阻滤波器值的范围是0~1,越黑代表越接近0,越亮代表越接近1。

在这里插入图片描述

滤波

使用上述滤波器对傅里叶变换得到频谱进行滤波,并在x方向上进行可视化得到:
在这里插入图片描述
可以看出峰值为120和138处的噪声都已被过滤掉。

结果

将其再进行傅里叶反变换得到:
在这里插入图片描述
可以看出,经过傅里叶反变换之后得到的图像,有一些图片的失真,其原因可能是将图像的频谱图从二维降维成一维的操作,在一些没有噪声的地方,也进行了滤波操作,所以会有一定的信息损失。如果在全局信息上,也就是在二维信息上进行去噪应该能够得到更好的效果。

改进

对图中方框区域进行精细化滤波应该会得到更好的效果。
请添加图片描述

代码

close all
f=imread('grid.bmp');
[M,N,~] = size(f); %f为含噪图像
F = fftshift(fft2(f)); % 图像频域
figure;plot(abs(F(M/2+1,:))); % x方向横截线
% 构造n阶巴特沃兹陷波器,可以修改D0和n获得更好的效果。
u = 0:(M-1);
v = 0:(N-1);
[V,U] = meshgrid(v,u);
D0 = 7;
n = 1;
v0 = 120;
v1 = 138;
D1 = abs(V-v0);
D2 = abs(V-v1);
H = 1./(1+(D0^2./(D1.*D2)).^n);
figure;imshow(H,[])
% 滤波
G = fftshift(F.*H);
figure;plot(abs(F.*H(M/2+1,:))); % x方向横截线
g = real(ifft2(G));

figure;
subplot(121); imshow(f,[]);
subplot(122),imshow(g,[]);

标签:滤波器,噪声,带阻,滤波,余弦,图像处理,MATLAB,图像,傅里叶
来源: https://blog.csdn.net/qq_40608730/article/details/122728519

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有