- ベストアンサー
画像を1次元(X軸)FFTした時の位相特性
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
以前にも同様のご質問がありましたが(http://okwave.jp/qa/q7795620.html)、問題解決していないのですね。 そのときも、よほど特殊なケースでないとそのようなことにはならない、とコメントしました。 今回も私のコメントは同じです。つまり、 「位相=Im/Reとすると」というのはarctanとかargumentとかを書き漏らしただけでしょうから、それはさておき、 「貼付画像のように直線位相特性になります。」は、普通はそうなりません。 何か特殊なデータを扱っておられるか、あるいは何かのお間違いをされているかのどちらかでしょう。 画像の横一ラインを取り出すのですよね。それは実数値ですね。 通常の場合は位相は直線にならないという、たとえばの一例を示します。 適当に実数値を次のようにしてみますね。ほんとにデタラメに数値を選びました。任意の画像と言うことで。 data = {1.5, 2.2, 3.4, 2.0, 1.1, 0.9, 3.6, 0.6} これをフーリエ変換すると、 ft={5.40937 + 0. I, 0.116421 + 0.604289 I, -1.55563 + 0.176777 I, 0.166421 + 0.745711 I, 1.37886 + 0. I, 0.166421 - 0.745711 I, -1.55563 - 0.176777 I, 0.116421 - 0.604289 I} で、arctan[Im[ft]/Re[ft]] あるいはargument[ft]は、 {0., 1.38047, 3.02844, 1.35122, 0., -1.35122, -3.02844, -1.38047} で、直線ではありません。
お礼
たびたび、すいません。 早速のご回答ありがとうございます。 確かに直線ではありませんね。 当方の画像を調査してみます。 なんだか間違っているような気がしてきました!
補足
当方の勘違いでした! 【原因】 直線位相特性になったのは、以下の理由によるものです。 (1)画像がx軸で1032ピクセルである (2)FFTを行う為にサンプリング周波数を2048ピクセルにする (↓ここから間違い!) (3)メモリの節約として、サンプリングの1032個目以降を 画像の右端から同じ画像を割り当てる。 つまり鏡像関係の様に、 0~1031までのデータが1032から2047まで 折返して入るのです! この為、小さな位相情報は無視され、とても大きな繰り返しデータの 情報を位相として出力していた様です! FFTを早く処理しようとした小細工が仇になったとは! おお!神よ!論文はすでに出てしまいました! 愚かな小生をお許したまえ!