Projets de vision par ordinateur
À propos
Ce dépôt présente tous les projets de codage (labs) Mehmet et Jean ont réalisés pendant qu’ils étaient inscrits à CSCI437 durant le semestre d’automne 2020 à la Colorado School of Mines, couvrant la période du 28 août 2020 au 14 décembre 2020. Ces travaux pratiques ont fourni une plateforme complète pour apprendre Python, OpenCV et les concepts de base de la vision par ordinateur.
À propos du cours
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 pour 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).
Crédits
Certaines scripts Python et/ou segments de code ont été fournis par le cours CSCI437 pendant les conférences, dans les diapositives, ou via Canvas. Le cours CSCI437 est dispensé à la Colorado School of Mines. Ces travaux pratiques ont été réalisés avec les partenaires suivants :
- Jean Duong
- Mehmet Yilmaz
Descriptions des laboratoires
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 l’image doit être affiché sur chaque image, et la vidéo finale avec les superpositions graphiques doit être téléversée pour évaluation.
Laboratoire 2
Le laboratoire 2 traite des transformations d’images, en se concentrant spécifiquement sur les rotations autour des axes X, Y et Z en utilisant la convention des « angles fixes XYZ ». Les étudiants doivent calculer des matrices de rotation, calculer des matrices de transformation homogènes pour les poses de la caméra, créer une matrice d’étalonnage, et projeter des points sur une image pour former un objet familier en utilisant 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 le template matching (recherche de modèle), où les étudiants doivent suivre un sous-image modèle à travers chaque image d’un fichier vidéo en utilisant la corrélation croisée normalisée. L’exercice consiste à permettre à l’utilisateur de choisir un modèle depuis la première image de la vidéo, de suivre ce modèle à travers les images suivantes, de dessiner des rectangles pour indiquer l’emplacement du modèle sur chaque image, et de créer un fichier vidéo de sortie pour montrer ces emplacements. Les étudiants sont encouragés à expérimenter avec différents modèles pour 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 discutée en cours pour son efficacité dans le traitement des images en couleur. Les étudiants doivent appliquer des opérations de seuillage pour segmenter les pixels du panneau stop à partir des images fournies, en utilisant un programme Python/OpenCV. L’exercice exige de trouver les valeurs de seuil qui détectent le mieux les pixels du panneau stop, 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 seuillage et d’opérations morphologiques utilisés.
Laboratoire 5
Le laboratoire 5 consiste à 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, demande aux étudiants d’utiliser 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 justesse 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 rendu de laboratoire.
Laboratoire 6
Le laboratoire 6 demande 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 des 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 souligne l’application de concepts tels que la détection de cibles, l’estimation de pose, et la mise en forme de la sortie visuelle en vision par ordinateur.
Laboratoire 7
Le laboratoire 7 est centré sur la détection et la mise en correspondance des caractéristiques SIFT entre des 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 du code Python fourni et des 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 les performances du processus de mise en correspondance de 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 mise en correspondance de caractéristiques et l’ajustement d’une 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, rappel, et exactitude pour évaluer la performance du système de détection d’objets. Les étudiants sont censés modifier et exécuter le code Python fourni, analyser la performance du système dans différentes conditions, et soumettre leurs conclusions 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 mise en correspondance en utilisant le test du ratio 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 des images d’entraînement aux images de requête. La tâche critique est d’ajuster le nombre seuil de correspondances inliers pour trouver un équilibre entre faux positifs et faux 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 droite et identifier des ensembles de lignes parallèles au sein d’une image. Il utilise la transformée de Hough probabiliste via la fonction cv2.HoughLinesP() d’OpenCV pour détecter des segments de droite 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 droite, visant à comprendre l’orientation des lignes parallèles dans l’espace 3D telles qu’elles apparaissent dans le plan image 2D. Les étudiants doivent traiter des images de test pour trouver des segments de lignes parallèles, expérimenter avec les paramètres pour optimiser la détection, et soumettre leurs résultats ainsi que le programme Python.
Remarques
- Vous aurez besoin des packages Python tiers suivants pour exécuter ces scripts/labs : cv2 et numpy.
- Certains de ces laboratoires peuvent exiger que vous utilisiez une version spécifique de cv2. Malheureusement, les exigences n’ont pas été documentées, donc vous devrez le déterminer par vous-même. Si vous le découvrez ou si vous êtes bloqué, veuillez le signaler via le formulaire de signalement.