Ceci est une ancienne révision du document !
Nous traitons les images par OpenCV sur CPU, bien que n'étant que peu efficace, cela nous permet d'effectuer des traitements suffisants à l'aide une librairie comportant déjà la grande majorité des algorithmes de vision par ordinateur. De plus, nous disposons d'un Intel Core i5 dans le NUC, l'architecture x86 étant très adaptée à OpenCV (ou l'inverse… ?).
Nous devions détecter la position et la couleur de triangles rouges et jaunes. Voici l'algorithme utilisé :
Correction de la distorsion de l'image. Conversion de l'image en format HSV (plus adapté à la détection de couleur) Création de masques de détection des couleurs Pour chaque pixel, blanc si la couleur se trouve dans les limites des teintes à détecter, noir sinon Filtrage du bruit Fonctions morphologiques erode/dilate Détection des contours externes dans les masques de couleur (on détecte les formes de couleur) Projection de perspective des contours dans le repère réel relatif au robot Régression des contours en polygones La marge d'erreur d'approximation max est configurable Si le polygone a trois côtés : c'est un triangle, on alors un triangle et sa couleur Si le polygone a plus de trois côtés : on cherche des triangles équilatéraux dans le polygone Cela permet de détecter des triangles collés les uns aux autres Pour chaque triangle : calcul de la position au centre du contour
On obtiens ainsi une liste de triangles avec leurs coordonnées et leur couleur.