Projets de Vision par Ordinateur

Dépot GitHub du projet

About

Ce dépôt présente tous les projets de codage (laboratoires) Mehmet et Jean sur lesquels ils ont travaillé pendant leur inscription à CSCI437 au cours du semestre d’automne 2020 à la Colorado School of Mines, couvrant la période du 28 août 2020 au 14 décembre 2020. Ces laboratoires, qui ont fourni une plateforme complète pour apprendre Python, OpenCV et les concepts de base de la vision par ordinateur.

About The Class

J’ai suivi Introduction à la Vision par Ordinateur (CSCI437) pendant le semestre d’automne 2020. Pendant cette période, le Dr William Hoff et le Dr Tom Williams ont enseigné le cours. CSCI437. Voici la description officielle du cours CSCI437 :

(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).

Credits

Il y a des scripts Python et/ou des extraits de code qui ont été fournis par le cours CSCI437 pendant les cours, dans les diapositives ou via Canvas. Le cours CSCI437 est dispensé à la Colorado School of Mines. Ces laboratoires ont été réalisés avec les partenaires suivants :

  • Jean Duong
  • Mehmet Yilmaz

Lab Descriptions

Laboratoire 1

Le laboratoire 1 se concentre sur les bases de l’utilisation d’OpenCV avec Python. Les participants doivent écrire un programme Python qui lit un fichier vidéo, projette quatre points formant un carré sur chaque image de la vidéo, et simule le retrait du carré dans la distance en ajustant progressivement la coordonnée Z de chaque point. De plus, le numéro de trame doit être affiché sur chaque image, et la vidéo finale avec les superpositions graphiques doit être téléchargée pour évaluation.

Laboratoire 2

Le laboratoire 2 traite des transformations d’image, en se concentrant spécifiquement sur les rotations autour des axes X, Y et Z en utilisant la convention « angles fixes XYZ ». Les étudiants doivent calculer les matrices de rotation, calculer les matrices de transformation homogène pour les poses de caméra, créer une matrice de calibration et projeter des points sur une image pour former un objet familier à l’aide de la fonction line d’OpenCV. Le laboratoire met l’accent sur la compréhension de la géométrie de la caméra et des matrices de transformation en vision par ordinateur.

Laboratoire 3

Le laboratoire 3 porte sur la recherche de modèles, où les étudiants doivent suivre une sous-image modèle à travers chaque image d’un fichier vidéo en utilisant la corrélation croisée normalisée. Le devoir consiste à permettre à l’utilisateur de choisir un modèle à partir de la première image du film, à suivre ce modèle à travers les images suivantes, à dessiner des rectangles pour indiquer l’emplacement du modèle sur chaque image, et à créer un fichier vidéo de sortie pour montrer ces emplacements. Les étudiants sont encouragés à expérimenter différents modèles afin de comprendre lequel permet le meilleur suivi et pourquoi, et à discuter des scores de corrélation observés lorsque les correspondances sont correctement identifiées.

Laboratoire 4

Le laboratoire 4 se concentre sur la segmentation des couleurs en utilisant l’espace colorimétrique HSV, une technique abordée lors des cours pour son efficacité dans le traitement des images couleur. Les étudiants doivent appliquer des opérations de seuillage pour segmenter les pixels du panneau d’arrêt à partir des images fournies, en utilisant un programme Python/OpenCV. Le devoir nécessite de trouver les valeurs de seuil qui détectent le mieux les pixels du panneau d’arrêt, d’effectuer des opérations morphologiques pour nettoyer le résultat, et de soumettre les images segmentées ainsi que le programme Python et les paramètres de seuil et d’opérations morphologiques utilisés.

Laboratoire 5

Le laboratoire 5 implique la tâche d’insérer une nouvelle texture d’image dans une zone spécifique d’une image existante de manière à ce que la projection paraisse correcte. Ce processus, connu sous le nom de remplacement de plan, nécessite que les étudiants utilisent des techniques de transformation projective (homographie) pour mapper une nouvelle image sur une zone plane d’une image existante. Le laboratoire met l’accent sur l’application pratique de l’homographie pour modifier le contenu d’une image tout en conservant la correction de la perspective. Les étudiants doivent soumettre l’image originale, l’image avec la texture de remplacement, l’image combinée et leur programme Python dans le cadre de leur soumission de laboratoire.

Laboratoire 6

Le laboratoire 6 indique aux étudiants de détecter et de calculer la pose d’une cible composée de cinq cercles concentriques contrastés (CCC) dans une image. La tâche consiste à utiliser OpenCV pour détecter les cibles CCC, les ordonner correctement, calculer la pose avec la fonction solvePnP() d’OpenCV, et dessiner les axes de coordonnées et la pose sur l’image. Le laboratoire met l’accent sur l’application de concepts tels que la détection de cibles, l’estimation de pose et le formatage de la sortie visuelle en vision par ordinateur.

Laboratoire 7

Le laboratoire 7 est centré sur la détection et la correspondance des caractéristiques SIFT entre images. L’objectif est d’identifier les correspondances correctes des caractéristiques SIFT d’une image à une autre et d’analyser la précision de ces correspondances. Le laboratoire implique l’utilisation d’un code Python fourni et d’images d’un jeu de données, l’ajustement des paramètres de l’algorithme pour optimiser la détection des correspondances, et le calcul des métriques de précision et de rappel pour évaluer la performance du processus de correspondance des caractéristiques. Les étudiants doivent soumettre leur programme Python et les valeurs de précision et de rappel calculées pour différents réglages de paramètres.

Laboratoire 8

Le laboratoire 8 se concentre sur la détection d’objets en utilisant la correspondance de caractéristiques et l’ajustement de transformation affine pour détecter et superposer des objets d’une image d’entraînement sur une image de requête. Le laboratoire implique la détection de l’objet dans différents scénarios, l’ajustement du seuil du nombre de correspondances inliers pour réduire les faux positifs, et le calcul des métriques de précision, de rappel et d’exactitude pour évaluer la performance du système de détection d’objets. Les étudiants doivent modifier et exécuter le code Python fourni, analyser la performance du système sous différentes conditions, et soumettre leurs résultats et le code modifié.

Laboratoire 9

Le laboratoire 9 consiste à placer des points d’annotation sur un objet dans une image d’entraînement et à afficher automatiquement ces points correctement sur l’objet dans les images de requête suivantes. Ce laboratoire met l’accent sur l’extraction de caractéristiques, la correspondance à l’aide du test du rapport pour éliminer les correspondances ambiguës, l’ajustement d’une transformation affine 2D à l’aide de RANSAC pour éliminer les valeurs aberrantes, et l’application de la transformation pour mapper les points d’annotation de l’image d’entraînement aux images de requête. La tâche critique consiste à ajuster le nombre de correspondances inliers seuil afin d’équilibrer les faux positifs et négatifs, visant la plus grande précision dans la classification correcte des images.

Laboratoire 10

Le laboratoire 10 est dédié à l’utilisation de la transformée de Hough pour trouver des segments de ligne et identifier des ensembles de lignes parallèles dans une image. Il utilise la transformée de Hough probabiliste via la fonction cv2.HoughLinesP() d’OpenCV pour détecter les segments de ligne représentés par leurs extrémités. Le laboratoire implique également l’identification des points de fuite en analysant les vecteurs de direction de ces segments de ligne, afin de comprendre l’orientation des lignes parallèles dans l’espace 3D telles qu’elles apparaissent dans le plan d’image 2D. Les étudiants doivent traiter des images de test pour trouver des segments de ligne parallèles, expérimenter avec les paramètres pour optimiser la détection, et soumettre leurs résultats ainsi qu’un programme Python.

Notes

  • Vous aurez besoin des packages python tiers suivants pour exécuter ces scripts/laboratoires : cv2 & numpy.
  • Certains de ces laboratoires peuvent nécessiter l’utilisation d’une version spécifique de cv2. Malheureusement, les exigences n’ont pas été documentées, vous devrez donc le découvrir par vous-même. Si vous le découvrez ou si vous êtes bloqué, veuillez le signaler via le formulaire d’incidents.