畳み込みの概念
このチュートリアルは、信号とシステムの非常に重要な概念の1つについてです。畳み込みについて完全に説明します。それは何ですか?それはなぜです?それで何ができるでしょうか?
画像処理の基礎から畳み込みについて説明します。
画像処理とは
画像処理チュートリアルの概要と信号とシステムで説明したように、画像は2次元信号にすぎないため、画像処理は多かれ少なかれ信号とシステムの研究です。
また、画像処理では、入力が画像で出力が画像となるシステムを開発していることも説明しました。これは絵で表されます。

上の図に「デジタル画像処理システム」と表示されているボックスは、ブラックボックスと考えることができます。
次のように表すことができます。

今までどこにたどり着いたか
これまで、画像を操作するための2つの重要な方法について説明してきました。言い換えれば、私たちのブラックボックスはこれまで2つの異なる方法で機能していると言えます。
画像を操作する2つの異なる方法は
グラフ(ヒストグラム)

この方法は、ヒストグラム処理として知られています。コントラストの向上、画像の強調、明るさなどについては、以前のチュートリアルで詳しく説明しました。
変換関数

この方法は変換と呼ばれ、さまざまなタイプの変換といくつかのグレーレベル変換について説明しました。
画像を扱う別の方法
ここでは、画像を処理する別の方法について説明します。この他の方法は畳み込みとして知られています。通常、画像処理に使用されるブラックボックス(システム)は、LTIシステムまたは線形時不変システムです。線形とは、出力が常に線形であり、対数でも指数でもないシステムを意味します。そして、時不変とは、時間の間同じままであるシステムを意味します。
したがって、この3番目の方法を使用します。として表すことができます。

それは数学的に2つの方法として表すことができます
g(x,y) = h(x,y) * f(x,y)
それは「画像と畳み込まれたマスク」として説明することができます。
または
g(x,y) = f(x,y) * h(x,y)
「マスクで畳み込まれた画像」と説明できます。
畳み込み演算子(*)は可換であるため、これを表すには2つの方法があります。h(x、y)はマスクまたはフィルターです。
マスクとは?
マスクもシグナルです。これは、2次元の行列で表すことができます。マスクは通常、1x1、3x3、5x5、7x7のオーダーです。マスクは常に奇数である必要があります。そうしないと、マスクの中央が見つからないためです。なぜマスクの真ん中を見つける必要があるのですか。答えは、畳み込みを実行する方法のトピックで、以下にありますか?
畳み込みを実行する方法は?
画像に対して畳み込みを実行するには、次の手順を実行する必要があります。
- マスクを(水平および垂直に)1回だけ裏返します
- マスクを画像上にスライドさせます。
- 対応する要素を乗算してから追加します
- 画像のすべての値が計算されるまで、この手順を繰り返します。
畳み込みの例
畳み込みを実行してみましょう。ステップ1はマスクを裏返すことです。
マスク
マスクをこれにしましょう。
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 | 9 |
マスクを水平に反転させる
3 | 2 | 1 |
6 | 5 | 4 |
9 | 8 | 7 |
マスクを垂直に反転させる
9 | 8 | 7 |
6 | 5 | 4 |
3 | 2 | 1 |
画像
このような画像を考えてみましょう
2 | 4 | 6 |
8 | 10 | 12 |
14 | 16 | 18 |
畳み込み
画像上の畳み込みマスク。それはこのように行われます。画像の各要素にマスクの中心を配置します。対応する要素を乗算してから追加し、その結果をマスクの中心を配置する画像の要素に貼り付けます。

赤い色のボックスがマスクで、オレンジ色の値がマスクの値です。黒のカラーボックスと値は画像に属します。これで、画像の最初のピクセルについて、値は次のように計算されます。
最初のピクセル=(5 * 2)+(4 * 4)+(2 * 8)+(1 * 10)
= 10 + 16 + 16 + 10
= 52
元の画像の最初のインデックスに52を配置し、画像の各ピクセルに対してこの手順を繰り返します。
なぜ畳み込み
畳み込みは、画像を操作する前の2つの方法では達成できない何かを達成できます。それらには、ぼかし、シャープニング、エッジ検出、ノイズリダクションなどが含まれます