Filtrage bilatéral en Python
- Qu’est-ce que le filtrage bilatéral
- Étapes pour effectuer un filtrage bilatéral en Python
- 
          
            la fonction bilateralFilter()en Python
- 
          
            Utilisez la fonction bilateralFilter()pour effectuer un filtrage bilatéral en Python
 
Le filtrage est utilisé pour traiter les images dans les applications de vision par ordinateur. Cet article traitera de la mise en œuvre du filtrage bilatéral en Python à l’aide du module OpenCV.
Qu’est-ce que le filtrage bilatéral
Le filtrage bilatéral est une technique de filtrage lissant. Il s’agit d’un filtre non linéaire et réducteur de bruit qui remplace chaque valeur de pixel par la valeur de pixel moyenne pondérée des voisins.
Le filtrage bilatéral est également appelé filtrage préservant les bords car il ne fait pas la moyenne du pixel sur les bords.
Étapes pour effectuer un filtrage bilatéral en Python
Pour effectuer un filtrage bilatéral, nous effectuons principalement quatre tâches.
- 
Nous remplaçons chaque pixel de l’image par la moyenne pondérée de ses voisins. 
- 
La pondération de chaque voisin est déterminée par sa distance par rapport au pixel actuel. Nous attribuons à chaque pixel un poids où les pixels les plus proches obtiennent le poids le plus élevé et les pixels distants reçoivent le poids le plus faible. Pour effectuer cette tâche, nous utilisons un paramètre spatial. 
- 
La pondération du voisin dépend également de la différence d’intensité des pixels. Les pixels avec une intensité similaire au pixel actuel se voient attribuer plus de poids, tandis que les pixels avec de grandes différences d’intensité se voient attribuer des poids moindres. Pour effectuer cette tâche, nous utilisons un paramètre de plage. 
- 
En augmentant le paramètre spatial, vous pouvez lisser les plus grandes caractéristiques de l’image. En revanche, si vous augmentez le paramètre de plage, le filtrage bilatéral se comporte comme un filtrage gaussien. 
la fonction bilateralFilter() en Python
Nous pouvons effectuer un filtrage bilatéral en Python en utilisant le module OpenCV en utilisant la fonction bilateralFilter(). La syntaxe de la fonction bilateralFilter() est la suivante.
bilateralFilter(src, d, sigmaColor, sigmaSpace, borderType)
Ici,
- 
Le paramètre srcprend l’image source à traiter en argument d’entrée.
- 
Le paramètre dprend le diamètre du voisinage dans lequel les pixels sont à considérer lors du filtrage.
- 
Le paramètre sigmaColorest la valeur du filtre sigma dans l’espace colorimétrique. Avoir une valeur plus élevée desigmaColorsignifie que les couleurs les plus éloignées dans l’espace colorimétrique sont prises en compte lors du filtrage.Le paramètre sigmaColordoit contenir une valeur dans la plage desigmaSpace.
- 
Le paramètre sigmaSpacedésigne la valeur de sigma dans le domaine spatial. Une valeur plus élevée desigmaSpacesignifie que les pixels les plus éloignés du pixel courant sont pris en compte lors du filtrage.Le paramètre sigmaSpacedoit contenir une valeur dans la plage desigmaColor.
- 
Le paramètre borderTypepermet de définir un mode d’extrapolation des pixels hors image tout en filtrant les pixels dans les limites de l’image.
Utilisez la fonction bilateralFilter() pour effectuer un filtrage bilatéral en Python
Voici les étapes pour effectuer un filtrage bilatéral en Python.
- 
Tout d’abord, nous allons importercv2.
- 
Ensuite, nous allons ouvrir une image en utilisant la fonctionimread(), qui prend le chemin du fichier d’une image comme argument d’entrée et renvoie un tableau représentant l’image.
- 
Nous stockerons le tableau dans une variableimg.
- 
Après avoir chargé l’image, nous utiliserons la fonctionbilateralFilter()pour effectuer un fonctionnement bilatéral en Python. Après exécution, la fonctionbilateralFilter()renvoie un tableau contenant l’image traitée.
- 
Après avoir obtenu l’image traitée, nous l’enregistrerons dans le système de fichiers à l’aide de la fonctionimwrite(), qui prend une chaîne contenant le nom de fichier du fichier de sortie comme premier argument d’entrée et le tableau contenant l’image traitée comme deuxième entrée. dispute. Après l’exécution de la fonction, le fichier est enregistré dans le système de fichiers.
Vous trouverez ci-dessous l’image que nous utiliserons pour effectuer un filtrage bilatéral en Python.

Voici le code pour effectuer un filtrage bilatéral en Python.
import cv2
img = cv2.imread("pattern.jpg")
output_image = cv2.bilateralFilter(img, 15, 100, 100)
cv2.imwrite("processed_image.jpg", output_image)
Voici l’image de sortie après avoir effectué un filtrage bilatéral sur l’image d’entrée :

Dans l’image donnée, vous pouvez observer que les caractéristiques des bandes ont été floues dans l’image de sortie. En effet, les pixels voisins de chaque pixel sont pris en compte lors de la création du pixel de sortie.
La moyenne des pixels donne un effet de flou et les caractéristiques sont floues.
Comparé au filtrage gaussien, le filtrage bilatéral préserve les bords. Par conséquent, lors des opérations de lissage, vous pouvez toujours utiliser le filtrage bilatéral si vous avez besoin de préserver les contours de votre image.
Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.
GitHub