## GeneralConvolution

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

Este filtro executa uma convolução de matriz.

clip | RGB32 clip
bias (padrão 0) | aditivo bias para ajustar a intensidade de saída total
matrix (padrão "0 0 0 0 1 0 0 0 0") | pode ser uma matriz 3x3 ou 5x5 com 9 ou 25 números inteiros entre -256 e 256
divisor (padrão 1.0) | divide a saída da convolução (calculado antes de incluir bias)
auto (padrão true) | Habilita a auto funcionalidade de escalagem. Divide o resultado pela soma dos elementos da matriz. O valor do divisor é aplicado além deste auto fator de escala. Se a soma de elementos for zero, auto fica desativado

O divisor normalmente é a soma dos elementos da matriz. Mas quando a soma for zero, você tem que usar divisor e a colocação de bias para corrigir os valores do píxel. O bias pode ser útil se os valores dos píxeis forem negativos devido à convolução. Depois de somar um bias, os píxeis são reduzidos a zero (e 255 se eles forem maiores de 255).

Exemplos:

    # Borrar:

    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)

    # Detecção de extremidade Horizontal (Sobel):

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

    # Detecção de extremidade Vertical (Sobel):

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

    # Deslocamento (simplesmente mover a posição
    # do "1" para esquerda, direita, para cima, para baixo)

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

    # Deslocamento de meio píxel acima (auto escala):

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

    # Deslocamento de meio píxel à direita (escalamento manual):

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

    # Filtro de agudez:

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

    Neste caso, o valor do novo píxel y(m,n) é determinado por
    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

    # Filtro de borrar levemente com recorte de nível preto e 25% de claro:

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

    Neste caso, o valor do novo píxel y(m,n) é determinado por
    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

Alguns outros exemplos podem ser achados aqui .

Mudanças:

v2 | Lançamento inicial
v2.55 | divisor incluído, auto

`$Date: 2006/03/26 18:11:19 $ Portuguese translation by RoLon`