【问题标题】:FFT Images and its InverseFFT图像及其逆
【发布时间】:2014-06-05 08:19:13
【问题描述】:

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

如何在 MATLAB 中进行逆变换并将结果成像?

【问题讨论】:

    标签: image matlab image-processing fft


    【解决方案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 是执行log1p 逆运算的 MATLAB 运算。

    【讨论】:

      猜你喜欢
      • 2016-05-03
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 2018-07-12
      • 1970-01-01
      • 2013-05-22
      • 2015-11-15
      • 2018-03-16
      相关资源
      最近更新 更多