Trouver le seuil d’une image (Thresholding)
Afin de transformer une image colorée, telle que celle capturée par votre caméra, en une image binaire, avec la cible en « premier plan », nous devons seuiller l’image en utilisant la teinte, la saturation et la valeur de chaque pixel.
L’espace de couleur HSV (teinte, saturation et luminosité)
Il existe plusieurs façon de définir une même couleur: l’espace RGB (rouge, vert, bleu) et l’espace HSV. Ils ont chacun leur utilité selon le traitement désiré. Contrairement à l’espace RGB, l’espace HSV vous permet d’isoler le vert par exemple, peu importe son intensité sa luminosité.
Teinte: mesure la tonalité d’une couleur dans le spectre lumineux.
Saturation: mesure l’intensité de la couleur du pixel.
Value: Measures the brightness of the pixel.
Vous pouvez utiliser OpenCV pour convertir une matrice d’images BGR (bleu, vert, rouge) en HSV. En OpenCV, l’ordre des couleurs primaires, communément appelée l’espace RGB, est différente (BGR).
hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)
Note
La gamme de teintes d’OpenCV est de 1° à 180° au lieu des 1° à 360° habituels. Afin de convertir une valeur de teinte commune en OpenCV, divisez par 2.
Seuillage
Nous utiliserons cette image du terrain de jeu comme exemple pour l’ensemble du processus de traitement d’image.
En limitant l’image à l’aide de HSV, vous pouvez séparer l’image en la cible de vision (premier plan) et les autres éléments que la caméra voit (arrière-plan). L’exemple de code suivant convertit une image HSV en image binaire par seuillage avec des valeurs HSV.
binary_img = cv2.inRange(hsv_img, (min_hue, min_sat, min_val), (max_hue, max_sat, max_val))
Note
Ces valeurs peuvent devoir être ajustées sur le terrain, car l’éclairage ambiant peut différer d’un site à l’autre. Il est recommandé d’autoriser la modification de ces valeurs via NetworkTables afin de faciliter les changements rapides de valeurs.
Après le seuillage, votre image devrait ressembler à ceci.
Comme vous pouvez le voir, le processus de seuillage peut ne pas être 100% efficace. Vous pouvez utiliser des opérations morphologiques pour amenuiser le bruit.