そもそもなぜ2D畳み込みでカーネルを反転させる必要があるのでしょうか。これの利点は何ですか?では、なぜそれを裏返さないままにできないのでしょうか? http://www.songho.ca/dsp/convolution/convolution2d_example.html
入力
カーネル
出力
「最初に、影付きのボックスであるカーネルを水平方向と垂直方向の両方に反転させます」
そもそもなぜ2D畳み込みでカーネルを反転させる必要があるのでしょうか。これの利点は何ですか?では、なぜそれを裏返さないままにできないのでしょうか? http://www.songho.ca/dsp/convolution/convolution2d_example.html
入力
カーネル
出力
「最初に、影付きのボックスであるカーネルを水平方向と垂直方向の両方に反転させます」
回答:
カーネルをフリップしない場合は、相互相関と呼ばれる別の操作を取得するだけです。フィルターがガウスまたはラプラシアンのように対称である場合、畳み込みと相関は一致します。しかし、フィルターが微分のように対称でない場合、異なる結果が得られます。
相関よりも畳み込みが好まれる理由は、より優れた数学的特性があるためです。特に、畳み込みは結合的ですが、一般に相関はそうではありません。
より技術的な説明のために、周波数領域に入る必要があります。畳み込みの主定理は、2つの関数およびの畳み込みのフーリエ変換は、2つの関数のフーリエ変換の積に等しい(変換によっては定数まで)と述べています。シンボルで
ここで、はフーリエ変換です。相関の場合、複素共役による乗算が得られます。これはあまり好ましくなく、特に結合的ではありません。
畳み込みのもう1つの興味深い特性は、単位インパルスでカーネルを畳み込むことです(たとえば、中心に1が1、それ以外は0の行列)。結果としてカーネル自体が得られます。代わりに、相関はカーネルを反転します。