### 9.2. Matrice de convolution

#### 9.2.1. Généralités

Nous sommes là dans le coin des mathématiciens. La plupart des filtres de traitement des images utilisent des matrices de convolution. Avec le filtre Matrice de convolution, vous pouvez, si le cœur vous en dit, vous concocter un petit filtre sur mesure.

Mais qu’est-ce que c’est qu’une matrice de convolution? On peut s’en faire une idée approximative sans utiliser les outils mathématiques que bien peu connaissent. Une convolution est un traitement d’une matrice par une autre appelée matrice de convolution ou « noyau » (kernel).

Notre filtre « Matrice de convolution » utilise une première matrice qui est l’image, c.-à-d une collection de pixels en coordonnées rectangulaires 2D (il y a des matrices 3D…), et un noyau variable selon l’effet souhaité.

GIMP uses 5×5 or 3×3 matrices. We will consider only 3×3 matrices, they are the most used and they are enough for all effects you want. If all border values of a kernel are set to zero, then system will consider it as a 3×3 matrix.

Le filtre étudie successivement chacun des pixels de l’image. Pour chaque pixel, que nous appellerons « pixel initial », il multiplie la valeur de ce pixel et de chacun des 8 pixels qui l’entourent par la valeur correspondante dans le noyau. Il additionne l’ensemble des résultats et le pixel initial prend alors la valeur du résultat final.

Vite un exemple, simple :

À gauche se trouve la matrice de l’image: chaque pixel est indiqué par sa valeur. Le pixel initial est encadré de rouge. La zone d’action du noyau est encadrée de vert. Au centre, se trouve le noyau et, à droite, le résultat de la convolution.

Voici ce qui s’est passé: le filtre a lu successivement, de gauche à droite et de haut en bas, les pixels de la zone d’action du noyau et il a multiplié chacun d’eux par la valeur correspondante du noyau et additionné les résultats. Le pixel initial a pris la valeur 42 : (40*0)+(42*1)+(46*0) + (46*0)+(50*0)+(55*0) + (52*0)+(56*0)+(58*0) = 42 (le filtre dépose ses résultats sur une copie de l’image et pas directement dans l’image). Le résultat graphique est un décalage du pixel initial d’un pixel vers le bas.

#### 9.2.2. Activating the Filter

This filter is found in the main menu under Filters → Generic → Convolution Matrix….

#### 9.2.3. Options

Figure 17.182. Options du filtre « Matrice de convolution »

Presets, « Input Type », Rognage, Blending Options, Preview, Merge filter, Split view

  | Note
  Ces options sont décrites dans Section 2, « Options communes ».

Matrice

  This is the 5×5 kernel matrix: you enter wanted values directly into boxes.

  Diviseur

    The result of previous calculation will be divided by this divisor. You will hardly use anything else than 1, which leaves results unchanged, and 9 or 25 according to matrix size, which gives the average of pixel values. The divisor can only be changed when Normalize is unchecked.

  Décalage

    This value is added to the division result. This is useful if result may be negative. This offset may be negative. It can only be changed when Normalize is unchecked.

Canaux

  Here you can select which channels the filter should change.

Normaliser

  Quand cette option est cochée, le Diviseur prend la valeur du résultat du calcul de convolution. Si ce résultat est égal à 0 (on ne peut pas diviser par 0), un Décalage de 128 est appliqué. S’il est négatif (on ne peut pas avoir de couleur négative), c’est un décalage de 255 qui est appliqué (ce qui inverse le résultat).

Poids alpha

  Si cette option n’est pas cochée, le calcul ne tient pas compte du degré de transparence des couleurs, ce qui peut être cause d’artéfacts lors de l’application d’un flou.

Bordure

  When the initial pixel is on a border, a part of the kernel is outside the image. You have to decide what the filter should do:

  Figure 17.183. Border examples

  Source image

  Clamp border

  None border

  Loop border

  None

    This part of the kernel is not taken into account.

  Clamp

    Les pixels situés en bordure ne sont pas modifiés mais sont rognés.

  Loop

    This part of the kernel will be affected by pixels of the opposite border, so pixels disappearing from one side reappear on the other side.

  Black

    Pixels on borders are changed to black.

  White

    Pixels on borders are changed to white.

#### 9.2.4. Exemples

La création de noyaux nécessite des connaissances mathématiques de haut niveau. Mais vous en trouverez de tout faits sur la Toile. En voici quelques exemples:

Figure 17.184. Augmenter le contraste

Figure 17.185. Flou

Figure 17.186. Renforcement des bords

Figure 17.187. Détection des bords

Figure 17.188. Repoussage

9. Filtres génériques |  | 9.3. Carte de distance

Report a bug in GIMP Signalez une erreur de documentation