今回の場合は 3 x 3 で考えているので、以下のようなフィルタを用いることにします。
これを使うと次のようなたたみこみ演算の図が得られると思います。
画像については画像の外側は0であると仮定しましょう。これについては画像処理におけるフーリエ変換(3/4)〜畳み込み〜ごご覧ください。
すると、成分は以下のように計算されることがわかります。畳み込みはフィルタHを
また画像が繰り返されている場合も同じように以下のように計算されます。
これによって行列を設定することができます。画像の外側が0であるとしたとき、
なんだかすごく仰々しくなりましたね。大変ですが、上の行列計算をしてみると畳み込みの式になっていることが確認できると思います。
このフィルターを理解するために、たたみこみ演算をOpenCVで実装してみましょう。
このフィルターを理解するために、たたみこみ演算をOpenCVで実装してみましょう。
それではOpenCVを使っていきます。まず、必要なパッケージを以下のようにインポートしてください。
ここで、#coding〜は日本語でコメントアウト(プログラムファイルにメモ)するのに必要なので、入れといてください。
3 x 3 のピクセルの画像を作ります。このために、numpyのlist構造を用いて、以下のように定義します。
3 x 3 のピクセルの画像を作ります。このために、numpyのlist構造を用いて、以下のように定義します。