## GeneralConvolution

`GeneralConvolution` (clip, int "bias", string "matrix", float "divisor", bool "auto")

このフィルタは、RGB32 のクリップに対して、行列コンボリューション*1を実行します。

clip | RGB32 クリップ
bias （デフォルト: 0） | 全体的な出力の強さを調節するための付加的なバイアス
matrix （デフォルト: "0 0 0 0 1 0 0 0 0"） | -256 から 256 までの 9 個ないし 25 個の整数からなる 3x3 または 5x5 の行列
divisor （デフォルト: 1.0） | コンボリューションの出力をこの値で割る（bias を追加する前に計算される）
auto （デフォルト: true） | 自動スケーリング機能を有効にする。自動スケーリングは、結果を行列の成分の合計で割る。divisor の値は、この自動スケーリングの倍率に追加で適用される。成分の合計が 0 なら、auto は無効になる。

divisor は、通常、行列の成分の合計です。しかし、合計が 0 のとき、ピクセル値を訂正するために、divisor と bias の設定を使用することができます。コンボリューションの結果、ピクセル値が負になる場合、bias が役に立ちます。bias を追加したあと、ピクセルは 0（もし 255 より大きいなら 255）でクリッピングされます。

縁の周辺では、行列に情報を提供するために、エッジのピクセルが単に反復されます。

いくつかの使用例:

    # ぼかし:

    GeneralConvolution(0, "
       10 10 10 10 10
       10 10 10 10 10
       10 10 16 10 10
       10 10 10 10 10
       10 10 10 10 10 ", 256, False)

    # 水平方向のエッジ検出（ゾーベル法）:

    GeneralConvolution(128, "
        1  2  1
        0  0  0
       -1 -2 -1 ", 8)

    # 垂直方向のエッジ検出（ゾーベル法）:

    GeneralConvolution(128, "
       1  0 -1
       2  0 -2
       1  0 -1 ", 8)

    # 置換（単に「1」の位置を
    # 左、右、上、下へ移動させる）

    GeneralConvolution(0,"
       0 1 0
       0 0 0
       0 0 0 ")

    # 0.5 ピクセル上と置換*2（自動スケーリング）:

    GeneralConvolution(0,"
       0 1 0
       0 1 0
       0 0 0 ")

    # 0.5 ピクセル右と置換*3（手動スケーリング）:

    GeneralConvolution(0,"
       0   0   0
       0 128 128
       0   0   0 ", 256, False)

    # シャープフィルタ:

    GeneralConvolution(0,"
       0   -1   0
      -1    5  -1
       0   -1   0 ", 1, True)

    この場合、新しいピクセル値 y(m,n) は、以下の計算式によって与えられる
    y(m,n) = (-1*x(m-1,n) - 1*x(m,n-1) + 5*x(m,n) - 1*x(m,n+1)
             - 1*x(m+1,n))/(-1-1+5-1-1)/1.0 + 0

    # 黒のレベルのクリッピングと 25% の明るさ増を伴う、軽いぼかしフィルタ:

    GeneralConvolution(-16,"
       0   12   0
      12  256  12
       0   12   0 ", 0.75 ,True)

    この場合、新しい画素の値 y(m,n) は、以下の計算式によって与えられる
    y(m,n) = ( 12*x(m-1,n) + 12*x(m,n-1) + 256*x(m,n) + 12*x(m,n+1)
             + 12*x(m+1,n) )/(12+12+256+12+12)/0.75 - 16

その他のいくつかの例が、こちらにあります。

更新履歴:

v2 | 初版
v2.55 | divisor と auto を追加

`原文 Date: 2008/05/28 21:24:49`
`日本語訳 $Date: 2008/08/13 02:48:39 $`

- 訳者註:
  - *1 参考: コンボリューション行列、Convolution Matrix
  - *2 結果的にクリップは下へ移動します。
  - *3 結果的にクリップは左へ移動します。