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

怎么由上面得到

1、打开Photoshop后,打开你想要改变的图像,然后选择图层并选择线性光。

2、一旦你完成了上一步,反向CTRL + I在复制的层。

3、然后,保留其他高对比度,并适当调整参数。

4、完成上一步后,应用滤镜-模糊-高斯模糊,并适当调整参数。

5、调整前景色为黑色,使用画笔工具在你想要保持清晰的区域上作画。

6、需要注意的是,画笔的不透明度和流量可以适当降低。

7、完成最后一步后,对摩尔波纹保留细节的方法就完成了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-27
这种是一种周期噪声,在频域某个频率处较大,把该频率抑制掉即可。建议你看下一冈萨雷斯的数字图像处理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,[]);

本回答被提问者和网友采纳