8.2. コンボリューション行列...

8.2.1. 概観

ここは数学者の独壇場です。 フィルタはほとんどがコンボリューション行列を使用しています。 コンボリューション行列... フィルタと想像力があればどんなフィルタも創れます。

コンボリューション (二次元畳み込み) 行列とは何なのでしょう。 数学の小道具をちょっとばかり知っていただければ大まかな理解が可能です。 コンボリューションとは行列式を「カーネル」と呼ばれる別の行列式で処理することです。

コンボリューション行列フィルタは「」を処理する最初の行列を使います。 像とは画素を縦横の座標に並べた2次元の集合です。 ほしい効果によって利用されるカーネルは異なります。

GIMPでは 5×5 行列か 3×3 行列が使われます。 ここでの説明は専ら 3×3 行列のみ扱いますが、 これは最もよく用いられているうえお望みの効果をこなすのに充分なものだからです。 ダイアログでは 5×5 行列の記入欄がありますが、 外縁の枠を全て 0 に設定すれば自動的にこれを 3×3 行列であると見做します。

画像でフィルタはそのあらゆる画素についてつぎつぎと検討します。 そのときの画素を「初期画素」と呼び毎回この画素とその周りの8つの画素の値に対しカーネルの相応する値との積をそれぞれ得ます。 それらの値の合計が初期画素の最終的な値となります。

つぎに簡単な例をご紹介します。

この図の左にあるのが画像の行列です。 各画素の値が書き込まれています。 初期画素は赤枠で囲ってあります。 カーネルによる処理が及ぶのは緑の枠で囲ってある画素です。 右にあるのがコンボリューションによる結果です。

この計算で何が起きているかご説明いたしましょう。 フィルタはカーネルの作用領域の全ての画素を左から右へ上から下へ順番に読みとります。 カーネルに相応する部分の値とそれぞれ掛け合わされそれらの和を求めます。 初期画素は (40×0)+(42×1)+(46×0) + (46×0)+(50×0)+(55×0) + (52×0)+(56×0)+(58×0) = 42 となります。 (このフィルタは元画像に直接作用せずその複製に結果を記録します)。 画像のほうでは初期画素が1ピクセル下に移動しました。

8.2.2. フィルタの呼び出し方

画像ウィンドウのメニューより フィルタ汎用コンボリューション行列...

8.2.3. オプション

図 16.148. 「コンボリューション行列」のオプション

コンボリューション行列のオプション

行列

これは 5×5 行列を表しています。 それぞれの数値記入欄に直接任意の数値を入れてください。

割る数: 計算結果をこの数で除算します。 1 は計算結果を変更しない値ですがめったに使われないでしょう。 行列の大きさである 9 や 25 は画素の値の平均で割ります。

オフセット: この値は除算のあとで加わります。 負の値が出てよい場合に便利です。 ここに負の値も設定できます。

境界

左から順に、 元画像、 拡張、 回り込み、 切抜き

初期画素が画像の縁にあるとカーネルの一部が画像からはみ出してしまいます。 このときフィルタはどうすべきかを設定します。

  • 拡張: カーネルのはみ出した部分は無視されます。

  • 回り込み: カーネルのはみ出した部分は反対側の縁の画素を読み取りますので、 一方の辺で消えた画素がもう一方の辺で復活することになります。

  • 切抜き: 画像の縁の画素は変更されず切り抜かれます。

チャンネル

ここでフィルタの操作対象に一つ乃至は複数のチャンネルを選べます。

正規化

このオプションを有効にすると「割る数」は算出数に応じた値がとられます。 ただしその値が 0 になった場合は (0 では除算できません)、 オフセット値に 128 が設定されます。 負の数となるときは (負の数の色はありません)、 オフセットに 255 が設定され (反転した結果になり) ます。

アルファ加重

このオプションを無効にするとこのフィルタは透明度を考慮しませんが、 ぼかしがかかったときに加工痕が現れるおそれがあります。

8.2.4. 使用例

カーネル行列の設計は高度な数学の裏打ちがあります。 出来合いのものがウェブ上で見付かるはずです。 それらの例を少しばかりご覧ください。

図 16.149. シャープ化

シャープ化
シャープ化

図 16.150. ぼかし

ぼかし
ぼかし

図 16.151. 輪郭強調

輪郭強調
輪郭強調

図 16.152. 輪郭抽出

輪郭抽出
輪郭抽出

図 16.153. エンボス加工

エンボス加工
エンボス加工