Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
informatique:visio [2014/06/19 17:40] qchateau créée |
informatique:visio [2014/06/19 17:54] (Version actuelle) qchateau |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
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 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 ===== | ===== Détection des triangles 2014 ===== | ||
Ligne 9: | Ligne 17: | ||
Nous devions détecter la position et la couleur de triangles rouges et jaunes. Voici l'algorithme utilisé : | 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) | Conversion de l'image en format HSV (plus adapté à la détection de couleur) | ||
Création de masques de détection des couleurs | 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 | Pour chaque pixel, blanc si la couleur se trouve dans les limites des teintes à détecter, noir sinon | ||
Filtrage du bruit | 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. | ||
+ | |||
+ | |||