【发布时间】:2019-03-05 15:59:24
【问题描述】:
我正在尝试解决一个问题, 给定大小为 N,M 的图像 f(x,y),傅立叶变换 F。 我们定义函数g,它的傅里叶变换G定义如下:
G(x,y)=F(x,y) 如果 x
这意味着我们用零填充图像。 我尝试使用带有此代码的 matlab 进行检查:
i1 = imread('1.bmp');
i1 = im2double(i1);
k=fft2(i1);
newmat = padarray(k,[84,84],0,'post');
mat2=ifft2(newmat);
imshow(mat2);
由于某种原因,我得到了一个复杂的矩阵,我无法真正说出有趣的事情, 我错过了什么? (澄清一下,我尝试的图像尺寸为 84x84)。
谢谢!
【问题讨论】:
-
您似乎正在用实数对复杂矩阵
k进行零填充。然后在执行 ifft 时,我怀疑这些实数会变得复杂。尝试用复数“0+i0”填充您的复数矩阵k。我不知道这是否真的能解决你的问题,但值得一试。 -
感谢它有效。请添加它作为答案并投票...另一件事,结果的解释是什么?(相同的图像但更暗...)
-
我已将其添加为答案。我不知道为什么你的图像变暗了。尝试在它的末尾填充等量的零,看看它是否有影响。同样,只是推测。
-
WilliamW,您的图像变暗是正常的,因为在进行傅立叶变换之前进行零填充的结果是幅度减小。如果您对原因感兴趣,请参阅数字信号处理堆栈交换上的this topic,那里有一个很好的解释。如果您将图像尺寸翻倍,亮度应该会降低两倍。
-
@FlorisSA 你搞错了,我把它带到傅里叶域后填充了
标签: image matlab image-processing fft