Qu’est-ce qu’un flou gaussien exactement ?

Le flou est un effet visuel couramment utilisé lors de l’édition numérique de photos et de vidéos. L’un des flous les plus couramment utilisés dans ces domaines est le flou gaussien. Vous avez peut-être utilisé cet outil des milliers de fois sans jamais y penser davantage. Après tout, cela fait du bon travail et rend les choses plus floues.

Bien sûr, nous aimons souvent creuser plus profondément ici à Hackaday, alors voici notre cours accéléré sur ce qui se passe lorsque vous exécutez une opération de flou gaussien.

C’est des maths ! Tout est mathématique.

Une distribution gaussienne 2D montrée dans un tracé 3D. Notez les valeurs plus élevées vers le centre et de plus en plus petites vers l’extérieur dans une forme de courbe en cloche.

Les images numériques ne sont en réalité que de nombreux nombres, nous pouvons donc les utiliser mathématiquement. Chaque pixel qui compose une image couleur numérique typique a trois valeurs : son intensité en rouge, vert et bleu. Bien sûr, les images en niveaux de gris se composent d’une seule valeur par pixel, représentant son intensité sur une échelle allant du noir au blanc, avec des gris entre les deux.

Quelle que soit l’image, qu’elle soit en couleur ou en niveaux de gris, le principe de base d’un flou gaussien reste le même. Chaque pixel de l’image que nous souhaitons flouter est considéré indépendamment, et sa valeur change en fonction de sa propre valeur et de celles de son environnement, sur la base d’une matrice de filtre appelée un noyau.

Ce diagramme montre la manière dont chaque pixel est traité. Pour un noyau 3×3, le pixel d’intérêt et tous les pixels directement environnants sont échantillonnés. Le noyau est ensuite utilisé pour générer une nouvelle valeur de pixel de sortie basée sur une moyenne pondérée des pixels échantillonnés basée sur la distribution gaussienne.

Le noyau se compose d’un tableau rectangulaire de nombres qui suivent une distribution gaussienne, AKA une distribution normale, ou une courbe en cloche. Notre noyau rectangulaire se compose de valeurs qui sont plus élevées au milieu et tombent vers les bords extérieurs du tableau carré, comme la hauteur d’une courbe en cloche en deux dimensions. Le noyau correspond au nombre de pixels que nous considérons lors du floutage de chaque pixel individuel. Les noyaux plus gros répartissent le flou autour d’une région plus large, car chaque pixel est modifié par davantage de pixels environnants.

Un noyau gaussien 5×5. Notez le facteur externe, qui garantit que les valeurs totales s’additionnent toutes à 1. Cela évite d’ajouter de l’intensité à l’image, faites uniquement la moyenne des pixels sans changer autrement leur intensité.

Pour chaque pixel à soumettre à l’opération de flou, une section rectangulaire égale à la taille du noyau est prise autour du pixel d’intérêt lui-même. Ces valeurs de pixels environnants sont utilisées pour calculer une moyenne pondérée pour la nouvelle valeur du pixel d’origine sur la base de la distribution gaussienne dans le noyau lui-même. Grâce à la distribution, la valeur d’origine du pixel central a le poids le plus élevé, de sorte qu’elle n’efface pas entièrement l’image. Pixels immédiatement voisins ayant la prochaine influence la plus élevée sur le nouveau pixel, et ainsi de suite. Cette moyenne locale lisse les valeurs des pixels, et c’est le flou.

Les cas Edge sont également simples. Lorsqu’un pixel de bord est échantillonné, les pixels environnants autrement inexistants reçoivent soit la même valeur que leur voisin le plus proche, soit une valeur correspondant à leur pixel opposé en miroir dans la zone échantillonnée.

A gauche, une image source. Tous les pixels à l’intérieur de la bordure rouge sont ceux échantillonnés pour calculer la valeur finale du pixel rouge central lors de l’exécution d’un flou gaussien avec un noyau 7×7. A droite, le résultat du flou.

Le même calcul est exécuté pour chaque pixel de l’image d’origine à flouter, l’image de sortie finale étant constituée des valeurs de pixel calculées tout au long du processus. Pour les images en niveaux de gris, c’est aussi simple que cela. Les images en couleur peuvent être réalisées de la même manière, le flou étant calculé séparément pour les valeurs rouge, verte et bleue de chaque pixel. Alternativement, vous pouvez spécifier les valeurs de pixels dans un autre espace colorimétrique et les lisser là-bas.

Ici, nous voyons une image originale et une version filtrée avec un flou gaussien de taille de noyau trois et de taille de noyau dix. Notez l’augmentation du flou à mesure que la taille du noyau augmente. Plus de pixels incorporés dans le calcul de la moyenne entraînent plus de lissage.

Bien sûr, les images plus grandes nécessitent plus de calculs pour traiter le plus grand nombre de pixels, et les tailles de noyau plus grandes échantillonnent plus de pixels environnants pour chaque pixel d’intérêt, et peuvent donc prendre beaucoup plus de temps à calculer. Cependant, sur les ordinateurs modernes, même le flou des images haute résolution avec des tailles de noyau énormes peut être fait en un clin d’œil. En règle générale, cependant, il est rare d’utiliser une taille de noyau supérieure à environ 50 environ, car les choses sont généralement déjà assez floues à ce stade.

Le flou gaussien est un excellent exemple de mathématiques simples mises à profit dans le traitement d’images. Vous savez maintenant comment cela fonctionne à un niveau fondamental !