当我在matlab中对图像进行傅里叶变换时,为什么要旋转图像

时间:2016-05-15 07:58:36

标签: image matlab image-processing fft

我使用MatLab处理图像。

我在图片上执行以下步骤:

  1. 我看了一个图像。
  2. 我拍摄了图像的傅立叶。
  3. 我采用傅立叶变换图像的真实。
  4. 执行上述步骤时,我得到了双重旋转的图像。我不知道发生这种情况的原因。

    有人可以解释一下为什么会产生双旋转图像的原因吗?

    这段代码在这里:

    imfftreal = real(imfft);
    im = uint8(ifft2(imfftreal));
    imshow(im);
    Figure;
    

2 个答案:

答案 0 :(得分:0)

为了使图像正确,您还需要虚构部分。在进行逆变换时,您只使用了实部。

imfftReal = real(imfft);
imfftImag = imag(imfft);
re_imfft=imfftReal +1i*imfftImag;
im = uint8(ifft2(re_imfft));
imshow(im);

在幅度和相位的情况下

imfftMagnitude = abs(imfft);
imfftPhase = angle(imfft);
re_imfft=imfftMagnitude.*exp(1i*imfftPhase);
im = uint8(ifft2(re_imfft));
imshow(im);

答案 1 :(得分:0)

我确实遇到了同样的问题,仅在两天前将它发布在DSP StackExchange上。

@M529给出了一个非常好的简单解释:

  

如果你有一个纯粹真实的数据集,它的(逆)傅里叶变换将具有厄米特对称性:如果在位置(x,y)找到值z,那么你会发现复共轭值z * at关于原点的点反射位置(-x,-y)。请注意,此处的原点将是傅立叶空间的中心。当然,如果DC分量不在FFT实现的中心,则可以重新制定。这就是你在图像中看到的:点反射版本覆盖了真实图像 - 因为你强迫一个空间被真正重视。

     

此属性实际上用于加速磁场   在某些情况下共振成像(MRI):MRI直接获取数据   在傅立叶空间。由于可以通过实际描述理想的MR图像   只有值(所有激发的磁化矢量都有相位0),你只能   必须获得一半的数据空间,这样可以节省一半的数据空间   成像时间。当然,MR图像并非完全真正有价值   对现实的限制...但你可以用一些技巧   有利地使用这种技术。

如果你想看到背后的数学,你可以在@ThP找到详细的答案:https://dsp.stackexchange.com/questions/30770/why-real-part-of-fft-converts-image-into-rotation-original/30774#30774