La convolution est utilisée pour de nombreuses choses comme calculer des dérivées, détecter des contours, appliquer des flous, etc. et tout cela se fait à l'aide d'un « noyau de convolution ». Un noyau de convolution est une très petite matrice et dans cette matrice, chaque cellule a un numéro et aussi un point d'ancrage.
quelle est la taille de l'écran de mon ordinateur
Le point d'ancrage permet de connaître la position du noyau par rapport à l'image. Il commence dans le coin supérieur gauche de l’image et se déplace séquentiellement sur chaque pixel. Le noyau chevauche quelques pixels à chaque position de l'image. Chaque pixel superposé est multiplié puis ajouté. Et la somme est définie comme la valeur de la position actuelle.
La convolution est le processus dans lequel chaque élément de l'image est ajouté à ses voisins locaux, puis pondéré par le noyau. Elle est liée à une forme de convolution mathématique.
En Convolution, la matrice n'effectue pas de multiplication matricielle traditionnelle mais elle est notée *.
Supposons qu'il existe deux matrices 3x3, l'une est le noyau et l'autre est un morceau d'image. En convolution, les lignes et les colonnes du noyau sont inversées, puis multipliées, puis la sommation est effectuée. Les éléments qui sont présents au centre de la matrice, c'est-à-dire dans [2,2] de l'image, seront une combinaison pondérée de la matrice d'image et les poids seront donnés par le noyau. De même, tous les autres éléments de la matrice seront pondérés puis des poids seront calculés.
Voici le pseudo-code pour décrire le processus de convolution :
convertir un entier en double Java
For each image row in input image: For each pixel in image row: Set accumulator to zero For each kernel row in kernel: For each element in kernel row: If element position corresponding* to pixel position then Multiply element value corresponding*to pixelvalue Add result to accumulator Endif Set output image pixel to accumulator
La convolution peut être calculée à l'aide de plusieurs boucles for. Mais l'utilisation de boucles for entraîne de nombreux calculs répétés et la taille de l'image et du noyau augmente également. En utilisant la technique de transformée de Fourier discrète, le calcul de la convolution peut être effectué rapidement. Dans cette technique, toute l’opération de convolution est convertie en une simple multiplication.
convertir un entier en chaîne java
En convolution, le problème se produit lorsque le noyau est proche du bord ou des coins car le noyau est bidimensionnel.
Pour surmonter ces problèmes, les choses suivantes peuvent être faites :
- Ceux-là peuvent être ignorés
- Des pixels supplémentaires peuvent être créés près des bords.
Des pixels supplémentaires peuvent être créés des manières suivantes :
- Pixel de bord en double.
- Refléter les bords
- Les pixels peuvent être copiés depuis l'autre extrémité.