2016-05-15 11 views
2

で画像の変換を得るとき、私はMATLABを使用して画像を処理します。画像を回転させた理由を私はフーリエ変換は、MATLAB

は私が画像上で次の手順を実行します。

  1. 私が読み取った画像を作ります。
  2. 私はイメージのフーリエを取る。
  3. 私はフーリエ変換した画像の本物を取ります。

Iは結果二重回転画像を得、上記の手順を実行している間。私はその理由を知らない。

いくつかのいずれかが、なぜ結果にダブル回転した画像を生成することをその理由を説明していただけますか?

コードの一部はここにある:あなたも虚部を必要とする画像の権利を取得するには

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

私たちはより良いあなたの問題を理解できるように、入力画像と得られた「回転した画像を」添付してください。 – Shai

+0

は重複しているようだ。答えをhttp://dsp.stackexchange.com/questions/30770/why-real-part-of-fft-converts-image-into-rotation-original – hotpaw2

答えて

0

。逆変換を行っている間は実数部分のみを使用しました。振幅と位相

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

こんにちはおかげで、私の質問は、なぜ画像が二重に回転したのか、この背後にある理論は何かを説明してください... – Sipa

0

の場合

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

私は正確に同じ問題を経験し、わずか2日前にDSP StackExchange上に掲載。それは非常に良いと簡単な説明を与え

@M529:あなたは純粋に本当であるデータセットを持っている場合は、その(逆)フーリエ変換

はエルミート対称性を持つことになります:あなたはで値zを見つけた場合位置(x、y)の場合、原点についての点を反映した位置(-x、-y)に複素共役値z *があります。ここでの起源は、フーリエ空間の中心になることに注意してください。これは、DCコンポーネントがFFT実装の中心にない場合はもちろん、再構成することができます。そして、これはあなたのイメージで見られるものです。点を反映したバージョンが真のイメージの上に重なっています。

このプロパティは実際には磁気共鳴イメージング(MRI)を加速するために実際に使用されています。MRIはフーリエ空間で直接 のデータを取得します。理想的なMR画像は実際の 値によって記述することができるのでのみ(すべての励起された磁化ベクトルは、位相0を有する)、あなただけ あなた 撮像時間の半分を節約データ空間の半分を取得しなければなりません。もちろん、MR画像は完全に本当の現実のlimiationsに による評価されていません...しかし、いくつかのトリックをあなたはまだ 有利にこの技術を使用することができます。

あなたがその背後に数学を見たい場合は、あなたがそこに@ThPで詳細な回答を見つけることができます:https://dsp.stackexchange.com/questions/30770/why-real-part-of-fft-converts-image-into-rotation-original/30774#30774

+0

本当にありがとうございます... – Sipa

関連する問題