gpt4 book ai didi

matlab - 使用傅里叶变换从图像中去除周期性噪声

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:05 25 4
gpt4 key购买 nike

我正在对特定图像执行 2D FFT,并获得其光谱分量。现在这个图像已经与另一个图像叠加以产生周期性噪声。

原始图像以及周期噪声版本如下所示:

原图

enter image description here

周期性噪声图像

enter image description here

为了过滤掉这一点,我使用了手动框来屏蔽幅度谱中相对于其他分量相当大的分量,如下所示。

enter image description here

完成此操作后,我执行反向 FFT,但我没有取回原始图像。

enter image description here

有人知道我做错了什么吗?

下面是屏蔽值然后继续对屏蔽光谱图像执行逆二维 FFT 的代码:

pat1 = imread('Pattern1.png');

spec_orig = fft2(double(pat1));
spec_orig2 = abs(spec_orig);
spec_img = fftshift(spec_orig2);

for j = 115:125
for n = 96:106
spec_img(n,j) = 0;
end
for n = 216:226
spec_img(n,j) = 0;
end
for n = 274:284
spec_img(n,j) = 0;
end
for n = 298:308
spec_img(n,j) = 0;
end
for n = 12:22
spec_img(n,j) = 0;
end
for n = 37:47
spec_img(n,j) = 0;
end
end

%Getting Back the Image for Pattern1
figure;subplot(2,1,1);
spec_img = log(1 + spec_img);
imshow(spec_img,[]);

subplot(2,1,2);
ptnfx = ifft2(spec_img);
imshow(ptnfx);

最佳答案

在频域中进行滤波是一项棘手的工作。您的代码有一些错误会阻止您重建原始图像:

  1. 您正在仅对幅度分量应用过滤。您必须在原始图像频谱 上执行此操作,而不仅仅是幅度分量。该阶段对于正确重建至关重要。顺便说一句,创造一个信号处理术语,你正在实现的是 notch filter或带阻滤波器,它可以去除某些选定的频率。

  2. 您通过 fftshift 使频谱居中,但在过滤之后您忘记撤消偏移。您必须对生成的过滤图像调用 ifftshift 以撤消居中。

  3. 您正在寻找对数变换 图像的逆 FFT。请记住,对频谱执行对数变换仅用于显示。在过滤或求逆时,您不要使用它。这样做会给您带来意想不到的后果,因为大部分频谱已因非线性操作而发生变化。您必须在原始图像光谱本身上执行此操作。

  4. 一个小注意事项,但请确保在执行逆 FFT 后过滤结果后调用 real。很可能存在一些由于计算浮点错误而导致的残余虚部,因此调用 real 只会提取信号的实部。

经过这些更正,这就是我的代码。我已经直接从 StackOverflow 读取了您的图像以使其可重现:

pat1 = imread('http://i.stack.imgur.com/oIumJ.png');

%// Change
spec_orig = fft2(double(pat1));
spec_img = fftshift(spec_orig);

for j = 115:125
for n = 96:106
spec_img(n,j) = 0;
end
for n = 216:226
spec_img(n,j) = 0;
end
for n = 274:284
spec_img(n,j) = 0;
end
for n = 298:308
spec_img(n,j) = 0;
end
for n = 12:22
spec_img(n,j) = 0;
end
for n = 37:47
spec_img(n,j) = 0;
end
end

%// Change
ptnfx = real(ifft2(ifftshift(spec_img)));
imshow(ptnfx,[]);

我得到这张图片:

enter image description here

我将添加对原始图像的相当不错的重建。您仍然会看到一些条纹,这在很大程度上取决于陷波滤波器的形状和尺寸。或许将尺寸做得更大甚至更大,将陷波滤波器的形状做成圆形而不是方形。这倾向于保留更多原始图像,因为正方形角引入的硬边缘会产生意想不到的振铃效应。

关于matlab - 使用傅里叶变换从图像中去除周期性噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34027840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com