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 $