2016-06-13 8 views
-1

私は画像処理のためのアプリケーションを開発しようとしています。いくつかの画像が適切なフーリエと逆スペクトルを示すのはなぜですか?

Here is my complete code in DotNetFiddle

私はインターネットからの異なる画像を自分のアプリケーションをテストしています

バタフライおよびキジは、x 300300に再サイズです。

次の2つのイメージは、正しいフーリエ変換と逆フーリエスペクトルを示しています。

enter image description hereenter image description here

期待される結果を示していない、次の二つの画像

enter image description here

enter image description here

どのような理由があることだろうか?

後で2つの画像に問題はありますか?

画像処理アプリケーションをテストするために特定の品質の画像を使用する必要がありますか?

+2

これらの画像の違いは何ですか?フォーマット、圧縮、...あなたのFFTが特定のフォーマットを正しく処理できない限り、正しく表示された画像がFFTに問題を引き起こす原因はわかりません。 – Piglet

+0

また、コードを見ずにどのように知ることができますか?私たちは読者に気をつけませんが、少なくとも私はそうではありません。 – TheLethalCoder

+0

@ピグレットを更新しました。 – anonymous

答えて

1

code you linked toは、正確な2の累乗を持つ任意の画像で動作する基数2のFFTの実装です。なお、Cameramanの画像は256×256(2の累乗)であり、画像は512×512(2の累乗)である。別ウィンドウ(タブ)の大きな表示で見る300 x 300にリサイズされた他の2つの画像は、2の累乗ではありません。これらの画像を2の正確な累乗(たとえば256または512)にリサイズした後、最後の2つの画像の輝度成分の出力はFrequencyPlotになります

FFT mag of butterfly brightness

キジ

enter image description here

0:やや次のように

他のサイズの画像の一般的な回避策は、画像を2の正確な累乗にパッディングすることです。それ以外の場合、任意のサイズの画像を処理する必要がある場合、他の2D離散フーリエ変換(DFT)小さな素数の積であるサイズをサポートすることがよくあります。 出力を検証する目的で、直接DFT式を使用するオプションもあります(ただし、同じパフォーマンスが期待できません)。

+0

ありがとうございました。 – anonymous

0

私はあなたのコードを掘り下げる時間がありませんでした。私がコメントで言ったように、あなたはそれらのイメージの違いに焦点を当てるべきです。

イメージのFFTを計算できず、別のイメージのFFTを計算できない理由はありません。これらの画像の違いを処理できないコードで問題が発生している場合を除きます。あなたがそれらを表示することができれば、それらを処理することができるはずです。

私の目を引く最初のことは、両方の画像が均等な次元を持つ一方、アルゴリズムの画像には少なくとも1つの奇数次元があります。私はそれ以上のことを経験から見ていないでしょう。これがあなたの問題の原因であると確信しています。

他のことをしてください: うまく動作するイメージを1つ取り、1行または1行を削除して、良い結果が得られたかどうかを確認してください。次にコードを修正します。

関連する問題