Convolução

Veja a imagem RGB a seguir

Após a convolução terá o seguinte resultado:

O código responsável pela transformação é o seguinte:

Mas afinal o que é a convolução?

A convolução em imagens é o procedimento de calcular uma nova matriz através do cálculo entre a matriz da imagem e uma matriz de convolução, também chamada de kernel.

Veja o exemplo a seguir. Dada a matriz:

30   92   43    1   79   30   59   58
26   18   83   51   63   50   40   63
34   87   55   62   46   29   50   13
46   32   51   73   41   34   38    8
19   21   45   26   96   86    6   17
42   28   23   39   71   10   87   81
84   33   89   12   74   43   79   25
 9   58   69   10   33   76   15   15

E o kernel:

-1   0   1
-2   0   2
-1   0   1

O resultado é:

148   -50   -13    -6   -62    38
104    24   -48  -106   -18   -45
 57    62    22   -51   -92  -137
 38    62   140    52  -167   -93
 -7     6   132    33   -53    55
 51   -79   -18    99     8   -26

Vejamos as três primeiras operações

30 * (-1) + 92 * 0 + 43 * 1 +
26 * (-2) + 18 * 0 + 83 * 2 +
34 * (-1) + 87 * 0 + 55 * 1
= 148
92 * (-1) + 43 * 0 + 1 * 1 +
18 * (-2) + 83 * 0 + 51 * 2 +
87 * (-1) + 55 * 0 + 62 * 1
= -50
43 * (-1) + 1 * 0 + 79 * 1 + 
83 * (-2) + 51 * 0 + 63 * 2 +
55 * (-1) + 62 * 0 + 46 * 1
= -13