【问题标题】:why image is rotated when i get Fourier transform of image in matlab为什么当我在matlab中获得图像的傅里叶变换时图像会旋转
【发布时间】:2016-09-11 04:12:46
【问题描述】:

我使用 MatLab 处理图像。

我对图像执行以下步骤:

  1. 我读取图像。
  2. 我对图像进行傅里叶处理。
  3. 我采用傅里叶变换图像的实数。

在执行上述步骤时,我得到了一个双重旋转的图像。我不知道发生这种情况的原因。

谁能解释一下为什么会产生双旋转图像的原因?

这段代码在这里:

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

【问题讨论】:

标签: image matlab image-processing fft


【解决方案1】:

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

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);

【讨论】:

  • 您好,感谢您的回答,但我的问题是为什么图像双旋转这背后的理论是什么我想知道,请解释...
【解决方案2】:

我经历了同样的问题并在两天前在dsp stackexchange上发布了它。

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

如果你有一个纯实的数据集,它的(逆)傅里叶变换将具有厄米对称性:如果你在 (x,y) 位置找到 z 值,那么你将在 (x,y) 找到复共轭值 z∗关于原点的点反射位置(-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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-26
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多