離散フーリエ変換のゼロ周波数の中心化


11

私は、離散フーリエ変換を使用してぼかし/シャープ化を実装する画像処理アプリケーションに取り組んでいます。アプリケーションは多かれ少なかれ動作していますが、メカニズムについてはまだ混乱しています。

特に、ゼロ周波数を中心にするプロセスがどのように行われているかです。

私が見た例では、入力画像(グレースケール強度)に、入力画像と等しいサイズの行列を乗算することによって前処理を行っています。その値はで、xは行、yは列です。したがって、11が交互になるパターン(1)x+yxy11

ノートによると、これは、軸とy軸をめくって行列の象限を入れ替えることと同じです。xy

これが行われる理由を理解し、コード/フーリエ関数が機能していることを理解したいのですが、入力マトリックスを1 / -1で乗算すると、ゼロ周波数成分が0を中心とする理由がわかりません。

ありがとう


また、第4章「4.6-Gonzalezによるデジタル画像処理からの実装」(第2版があります)にも参考資料があります。それが役に立てば幸い。
白波2013年

回答:


18

ああ!なんてクールなトリックでしょう!これは、たたみ込み定理のために機能します(つまり、空間/時間領域での乗算は、周波数領域でのたたみ込みと同等です)。

xy

これがテスト画像です: テスト画像。フーリエ変換は次のようになります。テスト画像のフーリエ変換

交互の画像(チェッカーボード画像)のフーリエ変換を行うと、フーリエ変換の中心にある単一の点になりますここに画像の説明を入力してください。(まだ回転を行っていないので、フーリエ変換の中心は高周波であり、低周波はまだコーナーにあります。)しかし、これは「回転カーネル」です。この回転と連動して、カーネルはすべてを右下に移動します(ただし、右下から落ちたものは左上に回転します)。

(画像領域の)回転カーネルで元の画像畳み込み画像を畳み込むと、次のようになります。回転カーネル(周波数領域の)でフーリエ変換画像を畳み込むと、次のようになります回転フーリエ変換

そして乗算画像、テストドメインに画像ドメインのチェッカーボードを掛けると、が得られることを確認できます再び回転したフーリエ変換


よくわかりません。これは畳み込みを使用して-のfftshiftような関数を実装していますか?4つの象限を直接並べ替えるだけの方が、計算量が少ないのではないでしょうか。
内部石

2
ここでは直接の畳み込みはありません。これは、画像領域でピクセル単位の乗算を使用して、フーリエ領域でのたたみ込みと同等のものを取得します。はい、fftshiftそれほど高価ではありませんが、このトリックの方がキャッシュ動作が優れている可能性があります。ピクセルごとの乗算は、実際には他のすべてのピクセルの符号を反転するだけです。ベクトル化が非常に簡単なため、読み取り-変更-書き込みの書き込みは保証されたキャッシュヒットであり、プロセッサーが読み取りをプリフェッチするのは簡単です。
Wandering Logic 2013年

ああ、それは本当の乗算ではなく、サインフリップです。
エンドリス2013年

テスト画像(2番目の画像)のフーリエ変換がなぜこのように見えるのですか?私は実際には2つの画像が見えます。
白波2013年

10

Wandering Logicの答えは正確で詳細です。写真の代わりにいくつかの数学を見たいと思っただけです:

(1)k=ejωω2π(k/2)

その効果は、以前はインデックス0であったゼロ周波数が画像の幅(または列または行を乗算するかどうかに応じて高さ)の半分になっていることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.