永发信息网

图片中有摩尔波纹,用MATLAB怎么处理掉???

答案:1  悬赏:30  手机版
解决时间 2021-03-06 11:52
  • 提问者网友:绫月
  • 2021-03-06 08:27
图片中有摩尔波纹,用MATLAB怎么处理掉???
最佳答案
  • 五星知识达人网友:大漠
  • 2021-03-06 08:51
这种是一种周期噪声,在频域某个频率处较大,把该频率抑制掉即可。建议你看下一冈萨雷斯的数字图像处理matlab版,频域滤波方面的,我就不贴代码了。追问你好 初学不知 搞错了 能分分享一下你的代码吗?有注释更好!谢谢!谢谢!追答从第一幅图可以得知,周期性噪声沿着x方向,把图像转换到频域后,取过零频x方向的横截线,频域强度如下图

从图中可以看出,在x=113和145处有明显的频率增强,这就是周期噪声的频率。
构造一个n阶巴特沃兹陷波器H,进行频域滤波,把该频率滤除,再把图像频域转换到空域即可。
构造的陷波器如下图,最黑处为零,最白处为1,

处理后的图像如下

代码如下
close all
[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 = 10;
n = 2;
v0 = 113;
v1 = 145;
D1 = abs(V-v0);
D2 = abs(V-v1);
H = 1./(1+(D0^2./(D1.*D2)).^n);
figure;imshow(H,[])
% 滤波
G = fftshift(F.*H);
g = real(ifft2(G));
figure;
subplot(121); imshow(f,[]);
subplot(122),imshow(g,[]);

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯