Le seuillage adaptatif est une technique cruciale de traitement d’image pour transformer des images en niveaux de gris en images binaires (noir et blanc). Contrairement au seuillage simple, qui utilise une seule valeur de seuil pour toute l’image, le seuillage adaptatif calcule dynamiquement un seuil pour différentes régions de l’image. Cette adaptabilité est particulièrement avantageuse lorsqu’on traite des images présentant un éclairage inégal, où un seuil global pourrait ne pas séparer correctement le premier plan de l’arrière-plan.
Le principe fondamental du seuillage adaptatif consiste à prendre en compte les caractéristiques locales de l’image lors de la détermination du seuil. Au lieu d’une valeur déterminée globalement, l’algorithme divise l’image en régions plus petites (blocs ou tuiles). Pour chaque région, un seuil est calculé en fonction des intensités des pixels à l’intérieur de cette région. Cette approche localisée compense efficacement les variations d’éclairage sur l’image. Les méthodes courantes pour calculer le seuil local incluent la moyenne des intensités des pixels dans la région ou l’utilisation d’une moyenne pondérée (gaussienne).
Fonction de seuillage adaptatif d’OpenCV
OpenCV, une puissante bibliothèque de vision par ordinateur, simplifie le seuillage adaptatif avec sa fonction cv2.adaptiveThreshold()
. Cette fonction accepte plusieurs paramètres clés :
src
: L’image en niveaux de gris d’entrée.maxValue
: La valeur maximale attribuée aux pixels dépassant le seuil (généralement 255 pour le blanc).adaptiveMethod
: La méthode de calcul du seuil. Les options incluent :cv2.ADAPTIVE_THRESH_MEAN_C
: Utilise la moyenne du voisinage comme seuil.cv2.ADAPTIVE_THRESH_GAUSSIAN_C
: Utilise une moyenne pondérée (gaussienne) du voisinage comme seuil.
thresholdType
: Le type de seuillage.cv2.THRESH_BINARY
est courant, définissant les pixels au-dessus du seuil surmaxValue
et ceux en dessous sur 0 (noir).blockSize
: La taille du voisinage (région) utilisé pour le calcul du seuil. Doit être un nombre impair.C
: Une constante soustraite de la moyenne ou de la moyenne pondérée, permettant d’affiner le seuil.
Implémentation pratique avec Python
Voici un exemple Python utilisant OpenCV :
import cv2
import numpy as np
# Charger l'image en niveaux de gris
img = cv2.imread('input.jpg', cv2.IMREAD_GRAYSCALE)
# Appliquer le seuillage adaptatif
thresh = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
# Afficher les résultats
cv2.imshow('Original', img)
cv2.imshow('Seuillage adaptatif', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ce code charge une image en niveaux de gris, applique un seuillage adaptatif en utilisant la méthode gaussienne (cv2.ADAPTIVE_THRESH_GAUSSIAN_C
), une taille de bloc de 11 et une constante de 2. Il affiche ensuite les images originales et seuillées. L’expérimentation avec blockSize
et C
est cruciale pour des résultats optimaux, tout comme la sélection de la adaptiveMethod
appropriée en fonction des caractéristiques de l’image.
Choisir les bons paramètres
L’efficacité du seuillage adaptatif dépend de la sélection des paramètres. Une valeur blockSize
plus grande prend en compte un voisinage plus large, ce qui entraîne des transitions plus fluides mais peut entraîner la perte de détails plus fins. Inversement, une valeur blockSize
plus petite est plus sensible aux variations locales mais peut introduire du bruit. La constante C
permet d’ajuster la sensibilité du seuil ; une valeur C
plus grande entraîne un seuil plus élevé.
Le choix entre cv2.ADAPTIVE_THRESH_MEAN_C
et cv2.ADAPTIVE_THRESH_GAUSSIAN_C
dépend des caractéristiques de bruit de l’image. cv2.ADAPTIVE_THRESH_GAUSSIAN_C
est généralement préféré pour les images présentant un bruit important, car la pondération gaussienne réduit l’influence des valeurs aberrantes.
Conclusion
Le seuillage adaptatif fournit une solution robuste pour binariser les images avec un éclairage inégal, améliorant considérablement la précision par rapport au seuillage simple. La fonction efficace cv2.adaptiveThreshold()
d’OpenCV permet aux utilisateurs d’implémenter facilement cette technique, en obtenant des résultats optimaux en ajustant soigneusement les paramètres et en choisissant la méthode adaptative appropriée. Sa flexibilité et son efficacité en font un outil indispensable dans diverses applications de vision par ordinateur.
Table des matières