人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

画像のFFT処理でMatlabを使用しています。

Img=imread('Lenna.bmp')
をロードしまして
fft2を使って周波数とデータの関係に変換します
このままだと4隅が低周波成分ですのでfftshiftを使用して
中心を低周波にします。

そのあと、真ん中が1まわりが0の四角形を作って
変換したデータとかけることで低周波成分だけ取り出します(周波数領域でのローパス処理)

そのあと逆FFTするとぼやけたデータを得られるのですが、ここで問題です。
フィルタ演算するまえにシフトすることでデータは移動しているはずですが、
逆FFTする前に、元の位置にデータを戻さなくても、正しく画像が得られます。
元の位置に戻しても、正しく画像が得られます。

なぜ戻しても、戻さなくとも、データが得られるのかがわかりません。
FFTシフトとはいったいなんなのか、教えていただけるとありがたいです。






●質問者: central_dogma
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ita
●500ポイント

簡単のため1次元データ F[x]で考えます。
FFTしてK空間でkだけずらして逆FFTすると、F[x]はF[x]exp(ikx)に変化します。
絶対値は変化せず、複素数の位相が加わります。
なので例えばデータの実数成分を画像にすると明暗の波が出るはずですが、データの絶対値を画像にすると変化はありません。
複素数を画像にする部分がどうなっているかが問題かと思います。
http://vision.kuee.kyoto-u.ac.jp/lecture/dsp/?menu=mat_dsp

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ