====== Visio ====== ===== Techologies ===== 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... ?). ===== Calibration ===== Les lentilles des webcams donnent lieu à des distorsions dans l'image, tout particulièrement pour les camera grand angle. Il faut donc corriger cette distorsion. OpenCV dispose d'un attirail de méthodes dédiées à cela. Il suffit de disposer d'un échiquier de calibration. La transformation de perspective doit également être calibrée. On utilise la aussi un échiquier. On va détecter des points de l'échiquier dans l'image et leur faire correspondre les coordonnées du point de l'échiquier dans le repère réel désiré. Avec 4 points de correspondance, on peut définir la matrice de projection nécessaire à la transformation d'un point quelconque de l'image dans le plan réel associé. Il faut noter que cela permet de transposer l'image dans un plan, les objets à détecter ne peuvent donc pas se trouver à différentes hauteurs, sans quoi des erreurs seront comises. Pour une détection en trois dimensions, il faut se pencher par exemple sur la stéréovision, qui combine deux webcams pour détecter la distance d'un objet. Cependant, la stéréovision demande beaucoup plus de ressources que la simple détection de formes et de couleur. ===== Détection des triangles 2014 ===== 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.