循環および線形たたみ込み


7

循環たたみ込みと線形たたみ込みの違いは何ですか?いつどちらを選ぶか?フィルターをマスク付きの画像に適用する画像処理で、どのタイプのコンボリューションを選択する必要がありますか?


この質問を信号処理サイトdsp.SE
Dilip Sarwate

たぶん、あなたのことが可能と混乱のMathematicaデモよろしく

うーん、理解しますが...循環コンボリューションは有限サポートの信号に使用されるだけでなく、信号に周期性がある場合にも使用されることを常に読んでいます。有限サポートの信号に周期性があるとは限らないため、これは理解できません。たとえば、画像
Juan

回答:


7

あなたは、データのベクトルがある場合はの要素で構成され、、線形畳み込みが始まる、順序でそれらに動作しで終わる。dd1,d2,...dNd1dN

データベクトルが、要素が順番に書かれた紙片によって表されると想像してください。ここで、端(が書き込まれているところ)から始まり(が書き込まれているところ)にタッチして、紙片を円にするとします。畳み込みは循環畳み込みです。実際には、線形たたみ込みと循環たたみ込みはほぼ同じであり、違いは線形たたみ込みの開始時と終了時に発生します。線形畳み込みでは、(私たちは、「仮定すなわちゼロのあなたのデータの前と後があることを前提としてい」と「巡回畳み込みで、我々はそれを定期的にするためにデータをラップしながら、」0です)(すなわち" "dNdNd1d0dN+1d0dNおよび " "は等しい)。dN+1d1

同じ原理が多次元配列にも当てはまります。線形たたみ込みでは、各軸に明確な開始と終了があり、前後にゼロが想定されます。循環たたみ込みの場合、データは各軸で折り返されます。

When would I choose one over the other?

いくつかの非常にまれな例外を除いて、循環畳み込みを「選択」しません。ほとんど常に線形畳み込みが必要です。循環たたみ込みがポップアップする理由は、FFT(FFT、乗算、逆FFT)によるたたみ込みが線形ではなく循環たたみ込みであるためです。


ゼロをパディングせずに線形たたみ込みを使用した場合、境界の問題の名前はエイリアシングですか?そして別の質問何が最高のパフォーマンス(計算)線形または円形を持っていますか?
Juan

線形たたみ込みでは、実際にゼロを埋め込む必要はありません。これは、計算方法に暗黙的に含まれています。循環たたみ込みでは、ゼロを埋め込んで線形たたみ込みと同じ結果を生成します。
Jim Clay

小さなたたみ込みカーネルの場合、線形たたみ込みが最高のパフォーマンスを発揮します。大きなたたみ込みカーネルの場合、FFTによる循環たたみ込みが最高のパフォーマンスを発揮します。ただし、答えを正しく出すためにゼロを埋め込む必要があるという複雑さがあります。
Jim Clay

今、私は混乱しています。次の回答で、「欠損値を0で埋めると線形畳み込みのままでいる」と言いますが、「線形畳み込みでは実際にゼロを埋め込む必要はありません」と言います
Juan

線形または円形の畳み込みのいずれかを使用して、畳み込みカーネルの短縮を行うことができます。それは別の問題です。ゼロパディングは循環畳み込み用です。
Jim Clay

6

画像にたたみ込みを実装する場合は、境界値に注意する必要があります。ある時点で、たたみ込みマスクは画像から "処理"されなくなるためです。欠損値をどのように埋めるかに応じて、循環たたみ込みを実装するかどうかを決定します。

  • 欠損値を0で埋めると、線形畳み込みのままになります
  • 欠落した値を周期性で埋める場合は、循環たたみ込みを使用する可能性があります。

FFTアルゴリズムは画像を暗黙的に周期化するため、フーリエドメインでたたみ込みを実装する場合、循環たたみ込み以外に選択肢がないことに注意してください。

-編集-

畳み込みは、FFTアルゴリズムのおかげでほとんどの場合非常に高速であるため、多くの場合、フーリエドメイン(=>円形畳み込み)で実装されます。高速線形たたみ込みアルゴリズムは存在しますが、通常、画像を水平方向と垂直方向に別々にフィルタリングできる分離可能なカーネルの場合に予約されています。これにより、単純な2D実装よりも操作が少なくなります。


3
+1。このフーリエの「周期化」を回避するために、画像に十分なゼロを埋め込むことができます。
Andrey Rubshtein 2012

どちらが優れているのですか?
Juan

サーキュラーコンバージョン FFTのおかげで高速です。編集した回答を参照してください。
sansuiso 2012

今、私は混乱しています。次の答えで、「線形たたみ込みでは、実際にゼロで埋める必要はない」と言いますが、「欠落している値を0で埋めると、線形たたみ込みのままになります」
Juan

ジムクレイのコメントの最初の部分は正しいと思います:線形たたみ込みは通常、0による明示的なパディングを回避しますが、実装のアーティファクトです(境界をチェックしない場合、大きな画像を割り当ててパディングを使用する必要があります)。FFTベースのアプローチでは、i)高速実行(一部の適切な画像サイズにはさらに高速なアルゴリズムがあるため)またはii)画像ズーム(これはsinc補間と同等)にパディングを使用する場合があります。循環たたみ込み(FFTベースのたたみ込みを含む)は、それ自体パディングに依存しません。
sansuiso 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.