我在 Matlab 中加载并显示了一些大米的图像:
g = imread('rice.png');
imshow(g);
我对这张图片进行 FFT 并移动它:
G = fft2(g);
imshow(log(abs(fftshift(G)) + 1), []);
如果我将 ax 和 y 轴放在图像的中心;我发现图像是对称的 g(-x,-y)=g(x,y)。对于一维信号,我们知道实信号的 FFT 具有对称的实部和不对称的虚部。我想这就是我们在这里看到的二维?
由于原始图像底部比顶部更暗,因此在周期性边界处存在强烈的水平不连续性,从而导致 FFT 中出现垂直线。
我想摆脱这种边界效应。一种常见的方法似乎是windowing。
但是我想通过我在一篇名为“镜像”的论文中找到的一种技术来解决这个问题。这篇论文不是很具体,所以我需要你的帮助来弄清楚这种方法:-)。
首先,我从原始图像创建一个对称的“平铺”:
tile=[flipdim(g,2) g; flipdim(flipdim(g,1),2) flipdim(g,1)];
imshow(tile);
现在我对这个“瓷砖”进行 FFT:
Tile=fft2(tile);
imshow(log(abs(fftshift(Tile)) + 1), [])
垂直线似乎(几乎)消失了:很好。然而,镜像似乎引入了更多的对称性。
什么是正确的结果:原始图像的 FFT 或“镜像”图像的 FFT?
有没有一种方法可以“镜像”,这样我既能摆脱边界效应,又能获得纯粹的真实 FFT?
提前感谢您的任何答案!