## GeneralConvolution

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

Questo filtro esegue una matrix convolution.

clip | RGB32 clip
bias (default 0) | bias aggiuntiva per tarare la total output intensity
matrix (default "0 0 0 0 1 0 0 0 0") | può essere una matrice 3x3 o 5x5 con 9 o 25 numeri interi compresi tra -256 e 256
divisor (default 1.0) | divide l'output della convolution (calculato prima di aggiungere il bias)
auto (default true) | Abilita la funzionalità di auto scaling. Divide il risultato per la somma degli elementi della matrice. Il valore di divisor è applicato in aggiunta a questo fattore di auto scaling. Se la somma degli elementi è zero, auto viene disabilitato.

divisor è normalmente la somma degli elementi della matrice. Se questa somma è zero, si devono usare divisor e le impostazioni di bias per correggere i valori dei pixel. bias potrebbe servire se i valori del pixel fossero negativi a causa di convolution. Dopo aver aggiunto il bias, i pixels vengono tagliati a zero (o a 255 se più grandi di 255).

Alcuni esempi:

    # Blur:

    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)

    # Horizontal (Sobel) edge detection:

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

    # Vertical (Sobel) Edge Detection:

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

    # Displacement (simply move the position
    # of the "1" for left, right, up, down)

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

    # Displacement by half pixel up (auto scaling):

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

    # Displacement by half pixel right (manual scaling):

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

    # Sharpness filter:

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

    In this case, the the new pixel values y(m,n) are given by
    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

    # Slight blur filter with black level clipping and 25% brightening:

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

    In this case, the the new pixel values y(m,n) are given by
    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

Ulteriori esempi si trovano qui.

Changelog:

v2 | Initial Release
v2.55 | added divisor, auto

`$Date: 2004/09/26 19:49:40 $`