GeneralConvolution のバックアップ差分(No.3)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#code{{
GeneralConvolution (clip, int "bias", string "matrix", float "divisor", bool "auto")
}}

このフィルタは、RGB32 のクリップに対して、行列コンボリューション((訳者註: 参考 - [[コンボリューション行列:http://www004.upp.so-net.ne.jp/iccii/usegimp/convolution.html]]))を実行します。
このフィルタは、RGB32 のクリップに対して、行列コンボリューション((訳者註: 参考 - [[コンボリューション行列:http://www004.upp.so-net.ne.jp/iccii/usegimp/convolution.html]]、[[Convolution Matrix:http://www.geocities.jp/gimpfile/gum_jp/33.html]]))を実行します。

|'''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)でクリッピングされます。

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

いくつかの使用例:

#code{{
# ぼかし:

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)
}}

#code{{
# 水平方向のエッジ検出(ゾーベル法):

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

#code{{
# 垂直方向のエッジ検出(ゾーベル法):

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

#code{{
# 移動(単に "1" の位置を
# 置換(単に「1」の位置を
# 左、右、上、下へ移動させる)

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

#code{{
# 0.5 ピクセルずつ上へ移動(自動スケーリング):
# 0.5 ピクセル上と置換(訳者註: 結果的にクリップは下へ移動)(自動スケーリング):

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

#code{{
# 0.5 ピクセルずつ右へ移動(手動スケーリング):
# 0.5 ピクセル右と置換(訳者註: 結果的にクリップは左へ移動)(手動スケーリング):

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

#code{{
# シャープフィルタ:

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
}}

#code{{
# 黒のレベルのクリッピングと 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
}}

その他のいくつかの例が、[[こちら:http://www.gamedev.net/reference/programming/features/imageproc/page2.asp]]にあります。

''更新履歴:''

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

#hr

註: このページは、AviSynth 2.5.7 に同梱されているマニュアル(英語版)の日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/convolution.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。