FFT图像及其逆

时间:2014-04-21 09:29:10

标签: image matlab image-processing fft

我有256x256图像数组(名为Mydata),我将FFT转换应用为fftshift(log1p(abs(fft2(Mydata))));

如何反转变换并在MATLAB中对结果进行成像?

1 个答案:

答案 0 :(得分:1)

要完全重建图像,您还需要相位。如果您回想起傅立叶变换的属性,您可以将任何信号分解为其幅度和相位对应物。你在这段代码中所拥有的只是幅度。如果没有相位,则无法忠实地重建信号。因此,您需要将阶段存储在某处。请记住,任何复数num都可以用欧拉形式表示,例如:

 num <-> abs(num)*exp(j*angle(num));

absnum的幅度,anglenum的阶段。现在,假设您存储了幅度和阶段:

  magData = abs(MyData);
  phaseData = angle(MyData);

巧合的是,angle是MATLAB函数,用于确定复值矩阵中每个元素的相位。要实现逆操作,您只需反转上面执行的操作即可获得原始图像:

  ifft2(expm1(ifftshift(magData.*exp(j*phaseData))));

expm1是MATLAB操作,执行log1p的反转。