循環たたみ込みと線形たたみ込みの違いは何ですか?いつどちらを選ぶか?フィルターをマスク付きの画像に適用する画像処理で、どのタイプのコンボリューションを選択する必要がありますか?
循環たたみ込みと線形たたみ込みの違いは何ですか?いつどちらを選ぶか?フィルターをマスク付きの画像に適用する画像処理で、どのタイプのコンボリューションを選択する必要がありますか?
回答:
あなたは、データのベクトルがある場合はの要素で構成され、、線形畳み込みが始まる、順序でそれらに動作しで終わる。
データベクトルが、要素が順番に書かれた紙片によって表されると想像してください。ここで、端(が書き込まれているところ)から始まり(が書き込まれているところ)にタッチして、紙片を円にするとします。畳み込みは循環畳み込みです。実際には、線形たたみ込みと循環たたみ込みはほぼ同じであり、違いは線形たたみ込みの開始時と終了時に発生します。線形畳み込みでは、(私たちは、「仮定すなわちゼロのあなたのデータの前と後があることを前提としてい」と「巡回畳み込みで、我々はそれを定期的にするためにデータをラップしながら、」0です)(すなわち" "および " "は等しい)。
同じ原理が多次元配列にも当てはまります。線形たたみ込みでは、各軸に明確な開始と終了があり、前後にゼロが想定されます。循環たたみ込みの場合、データは各軸で折り返されます。
When would I choose one over the other?
いくつかの非常にまれな例外を除いて、循環畳み込みを「選択」しません。ほとんど常に線形畳み込みが必要です。循環たたみ込みがポップアップする理由は、FFT(FFT、乗算、逆FFT)によるたたみ込みが線形ではなく循環たたみ込みであるためです。
画像にたたみ込みを実装する場合は、境界値に注意する必要があります。ある時点で、たたみ込みマスクは画像から "処理"されなくなるためです。欠損値をどのように埋めるかに応じて、循環たたみ込みを実装するかどうかを決定します。
FFTアルゴリズムは画像を暗黙的に周期化するため、フーリエドメインでたたみ込みを実装する場合、循環たたみ込み以外に選択肢がないことに注意してください。
-編集-
畳み込みは、FFTアルゴリズムのおかげでほとんどの場合非常に高速であるため、多くの場合、フーリエドメイン(=>円形畳み込み)で実装されます。高速線形たたみ込みアルゴリズムは存在しますが、通常、画像を水平方向と垂直方向に別々にフィルタリングできる分離可能なカーネルの場合に予約されています。これにより、単純な2D実装よりも操作が少なくなります。