
現在、C言語で画像に2次元離散フーリエ変換を施し、高速フーリエ変換と比較しろという課題に取り組んでいます。
以下の様なプロセスで2次元フーリエ離散変換を施し、結果を表示しようと思っています。
・画像を読み込み、float型配列に入れる。
(画像は一番左上が原点とします。256×256のサイズです)
・上記のfloat型配列の、第1象限と第3象限、第2象限と第4象限を各々入れ替える。
・各行ごと、つまり、f[0][0]~f[0][255]、f[1][0]~f[1][255]、と順々)に1次元離散フーリエ変換を施す。
・上記のフーリエ変換の結果を各列ごと、つまり、f[0][0]~f[255][0],f[1][1]~f[255][1]という風に1次元離散フーリエ変換を施す。
・フーリエ変換の結果の、第1象限と第3象限、第2象限と第4象限を各々入れ替える。
・f[][]のパワースペクトル(実部の2乗+虚部の2乗の、自然対数をとったもの)を計算する。
・そのパワースペクトルとをfloat型なので、char型に置き換えて画像として出力する。
正規化等の少し細かいところは省略しました。
結果として、参考書等で見かけるもの(真ん中が直流成分で、含まれる周波数を濃淡で表したもの)になればいいのですが、上記のプロセスで大丈夫ですか?
パワースペクトルを計算した後に、何らかの移動の処理(つまり、画像の真ん中が直流成分となるような処理)を施す必要がなく、
フーリエ変換の計算の前と後に象限の入れ替えを施すだけで、直流成分が出力画像の真ん中に来るということですか?
フーリエ変換の前と後で、象限を入れ替えるだけで周波数空間では原点が真ん中になることが納得できないです。
ややこしい質問ですが、「プロセスのここが間違ってるよ」等を教えていただけると助かります。特にパワースペクトルの部分等。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
??
なんで象限の入れ替えが2回入ってるんだ?
2次元FFTの前か後どちらかで1回すればいいと思うけど。
> フーリエ変換の前と後で、象限を入れ替えるだけで周波数空間では原点が真ん中になることが納得できないです。
FFTの後で入れ替えたらDCが真ん中になるのは納得できますよね。
そのままですから・・・。
FFT前で入れ替えても同じことができます。
DFTは無限に続くデータに対して変換します。
例えば□という画像があったとして、これにフーリエ変換をかけようとするとき、変換している範囲は、□という画像の見えている範囲だけと考えるのは間違っています。
・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・
・・・・・・□□□・・・・・・
・・・・・・□□□・・・・・・
・・・・・・□□□・・・・・・
・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・無限に続く
というように□が縦横に無限に連なった画像を解析すると考えたほうがわかりやすいです。
もし□の象限が入れ替わってもx,yにオフセットするだけで同じ画像ですよね。
丁寧な解答、ありがとうございました。
http://www.ne.jp/asahi/ma-ku/104216/Excel1-2.htmlやhttp://www.metro-hs.ac.jp/rs/sinohara/dft_210/mr …というページに2回入れ替える、と書かれていましてそれを鵜呑みにして混乱してました…。
試しにエクセルで4×4行列で、
・FFTの前、後で入れ替える。
・FFTの後だけで入れ替える。
ということをしてみました。
結果は正負が所々違いましたが、値は同じでした。(実部、虚部の2乗の和は等しくなりました。)
FFT後だけ入れ替えた方が処理速度が速いですし、納得できますので、
FFT後だけ入れ替えてみます。
No.4
- 回答日時:
#2です。
ありゃ・・・(^^;そうですね。 >#3
フーリエ変換の前に入れ替えた場合、位相が回るだけでした。
DCを真ん中に持っていくにはフーリエ変換後ですね。
Tacosanさん、ICE_FALCONさん、ありがとうございました。
エクセルで試してみたところ、FFT前だけの入れ替えではダメでした。
これを機にフーリエ変換について理解を深めたいと思います
No.3
- 回答日時:
あれ? フーリエ変換の前に入れ替えてもしょうがないような気がするんですけど>#2.
「フーリエ変換して得られたスペクトルを平行移動しても同じ画像を復元できる」はずですよね.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 離散フーリエ逆変換が周波数分割数をNにできる理由について 4 2022/09/18 12:56
- 工学 周波数fで表現したフーリエ変換の対称性に関する質問です。 1 2022/09/14 12:27
- 数学 フーリエ変換後の負の周波数成分の扱いについて 4 2022/09/03 10:18
- 工学 フーリエ変換の質問です。 一定周波数の正弦波をフーリエ変換した結果のグラフはなぜか逆になっていますが 1 2022/05/05 18:37
- 数学 フーリエ変換、逆変換の「2π」の扱いについて 3 2022/10/07 08:31
- 数学 数学の質問です。 関数f(t)のフーリエ変換をF(ω)=∫[-∞→∞]f(t)exp(-iωt)dt 1 2023/07/29 01:08
- 物理学 移流熱拡散方程式の解き方 フーリエ変換 1 2022/08/15 15:25
- 数学 「FFTの基本は、DFTはサンプル数Nが偶数なら 2つのDFTに分解できるということ。 分解するとD 3 2022/03/31 21:01
- 物理学 量子力学のテキストのフーリエ変換の記述について 1 2022/10/16 17:00
- 物理学 フーリエ変換の振幅について 1 2022/09/04 08:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
背景画像の繰り返しについて
-
画像のピクセルデータの取得
-
一つの画像?にいくつもリンク
-
EXCEL VBA 複数のImageコントロ...
-
「using Windows」でエラーが出る
-
ラベリングした画像を抜き出す
-
【EXCEL VBA】ダブルクリックで...
-
Excel ユーザーフォームで表示...
-
uwscの画像認識に失敗します。
-
画像の輝度値のプログラムにつ...
-
C# Picturebox 縮小・拡大時の...
-
uwcs のマクロで画像認識をして...
-
画像のビット数を変更する方法
-
uwscの画像認識の不具合だと思...
-
UWSC「画像が無い場合」
-
VB6でプリントスクリーンを無効...
-
Jimdoで画像をポップアップ表示...
-
ExcelのVBAで教えてほしいです。
-
gif 画像上の ボタンに リン...
-
日本の白地図の画像に、都道府...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景画像の繰り返しについて
-
EXCEL VBA 複数のImageコントロ...
-
【EXCEL VBA】ダブルクリックで...
-
uwcs のマクロで画像認識をして...
-
UWSCの画像認識と条件分岐につ...
-
UWSCでループ処理がうまくいき...
-
vb.net 画像の透過について
-
「using Windows」でエラーが出る
-
Excel ユーザーフォームで表示...
-
UWSC 画像判定と条件分岐について
-
uwscの画像認識に失敗します。
-
画像のビット数を変更する方法
-
jqueryスライダーを2段でスライ...
-
画像処理したBitmapをピクチャ...
-
UWSCの色判定
-
UWSCについて
-
スマホでサイトの画像を長押し→...
-
VBAのユーザーフォームのイメー...
-
gif 画像上の ボタンに リン...
-
画像のピクセルデータの取得
おすすめ情報