GeneralConvolution

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

Tento filtr  provádí konvoluční (spirálovou) matici.

clip RGB32 klip
bias (výchozí 0) aditivní posun pro přizpůsobení celkové výstupní intenzity
matrix (výchozí "0 0 0 0 1 0 0 0 0") může být matice 3x3 nebo 5x5 s 9 nebo 25 celými čísly mezi -256 a 256
divisor (výchozí 1.0) dělí výstup konvoluce (vypočítává se před přidáním posunutí)
auto (výchozí true) Zapíná funkci automatické změny velikosti. Dělí výsledek součtem elementů matice. Hodnota  divisor je použita jako doplnění tohoto faktoru automatické změny velikosti. Pokud je součet elementů nula, auto je vypnuto.

Parametr  divisor je obvykle součtem elementů matice. Ale pokud je součet nula, musíte použít  divisor a nastavení posunu  bias pro korekci hodnot pixelů.  Parametr bias může být užitečný pokud jsou hodnoty pixelu záporné po konvoluci. Po přidání posunu, jsou hodnoty pixelů ze spodu oříznuty na nulu a shora na 255 (pokud jsou větší než 255).

Kolem okrajů se krajní pixely jednoduše opakují pro předání do matice.

Několik příkladů:

# Rozmazání:

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)
# Horizontální (Sobel) detekce hran:

GeneralConvolution(128, "
    1  2  1
    0  0  0
   -1 -2 -1 ", 8)
# Vertikální (Sobel) detekce hran:

GeneralConvolution(128, "
   1  0 -1
   2  0 -2
   1  0 -1 ", 8)
# Posunutí (jednoduše posune pozici
# "1" nalevo, doprava, nahoru, dolů)

GeneralConvolution(0,"
   0 1 0
   0 0 0
   0 0 0 ")
# Posunutí o polovinu pixelu nahoru (automatická změna velikosti):

GeneralConvolution(0,"
   0 1 0
   0 1 0
   0 0 0 ")
# Posunutí o polovinu pixelu doprava (ruční změna velikosti):

GeneralConvolution(0,"
   0   0   0
   0 128 128
   0   0   0 ", 256, False)
# Zostřující filtr:

GeneralConvolution(0,"
   0   -1    0
  -1    5   -1
   0   -1    0 ", 1, True)
V tomto případě, jsou hodnoty nových pixelů y(m,n) dány vztahem
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
# Mírně rozmazávající filtr s omezením úrovně černé a zjasněním (brightening) o 25%:

GeneralConvolution(-16,"
    0    12    0
   12   256   12
   0     12    0 ", 0.75 ,True)
V tomto případě, jsou hodnoty nových pixelů y(m,n) dány vztahem
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

Některé další příklady naleznete  zde.

Historie změn:

v2 Původní vydání
v2.55 přidáno divisor, auto

$English Date: 2008/05/28 21:24:49 $

Český překlad:13.10.2008