=====Installations préliminaires===== ====Installation des paquets apt sur les machines (fait par l'enseignant avec des droits d'administration)==== su aip sudo apt-get install -y python3-venv idle geeqie ====Création de l'environnement virtuel pour les étudiants (à faire par l'étudiant 1 fois en début de séance)==== echo commence #sauvegarde de l'ancien dossier vers un dossier contenant date et heure mv "/home/etudiant/vision_lprorob" "/home/etudiant/vision_lprorob-$(date +%Y%m%d)-$(date +%H%M)" mkdir -p ~/vision_lprorob cd ~/vision_lprorob python3 -m venv env source env/bin/activate pip install -U pip pip3 install imutils opencv-python matplotlib rubik_solver numpy echo fini ====Pour ouvrir idle3 dans l'environnement virtuel==== cd ~/vision_lprorob source env/bin/activate python3 -m idlelib.idle =====Taches de vision affectées individuellement===== Discutez avec l'enseignant qui vous affectera une des taches de vision parmi les suivantes: ====Projet 1: Estimation de transformation rigide 2D==== Cette tache consiste à estimer 3 paramètres (2 en translation + 1 en rotation) pour une transformation rigide 2D entre 2 repères. Télécharger et compléter le programme python: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/rigid_transform_2D_a_completer.py Solution: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/rigid_transform_2D.py Vous devez compléter la fonction **def computeRigidTransform(P2Dimage,P2Drobot):** pour calculer la valeur des paramètres tx,ty et theta Exemple de fichier contenant les correspondances, à mettre dans le même dossier que le programme python pour la fonction main: 83,110,-138.5,520,9,103,-213,514,12,0,-213,410 Les données données sont organisées sous la forme: xvision1,yvision1,xrobot1,yrobot1,xvision2,yvision2,xrobot2,yrobot2,xvision3,yvision3,xrobot3,yrobot3 ====Projet 2: Génération d'une image synthétique du bouchon==== Cette tache consiste à synthétiser deux images du bouchon: une image de couleur et une image de masque. Télécharger et compléter le programme python: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/synthese_bouchon_a_completer.py Solution: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/synthese_bouchon.py Pour cela compléter la fonction **create_pattern_and_mask(width, height,d1,d2, bgr_color_center=(0, 0, 0),bgr_color_contour=(0, 0, 0)):** du programme * width représente la largeur de l'image à générer * height représente la hauteur de l'image à générer * d1 correspond au diamètre du contour du bouchon à colorier en **bgr_color_center** dans l'image **image** * d2 correspond au diamètre de la région centrale du bouchon à colorier en **bgr_color_contour** dans l'image **image** L'image **mask** doit contenir un disque de diamètre d1 blanc, entouré de noir. Les valeurs de couleurs sont indiquées dans un fichier à mettre dans le même dossier que le programme python: 160.0000, 119.0000, 109.0000 58.0000, 58.0000, 249.0000 exemple d'images à générer pour les paramètres par défaut du programme: image: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/template_bouchon_mm.png}} mask: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/template_mask_bouchon_mm.png}} ====Projet 3: Détection de la position du bouchon dans l'image rectifiée==== Cette tache consiste à rechercher la position dans l'image la plus similaire à l'image de bouchon composée de: * l'image de couleur: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/template_bouchon_mm.png}} * un masque indiquant le fond et la forme: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/template_mask_bouchon_mm.png}} différentes images à traiter: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon1_rect.jpg}} {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon2_rect.jpg}} {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon3_rect.jpg}} {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon4_rect.jpg}} {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon5_rect.jpg}} {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon6_rect.jpg}} Télécharger et compléter le programme python: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/correlation_a_completer.py Solution: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/correlation.py Vous devez compléter la fonction **def processImage(image): ** pour rechercher la meilleure correlation entre l'image de référence du bouchon et l'image fournie dans **image** en utilisant la fonction **matchTemplate** d'openCV. La fonction **def processImage(image): ** doit retourner l'image avec le bouchon détecté en surimpression, une variable indiquant si le bouchon est détecté dans l'image, et les position x et y du centre du bouchon détécté dans l'image. L'image suivante montre un résultat de détection du bouchon {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon1_rect_trouve.jpg}} ====Projet 4: Rectification de l'image grâce à une homographie==== Cette tache consiste à générer une image rectifiée à partir de l'image fournie par la caméra. Cette image rectifiée doit avoir une résolution de 1 pixel par millimètre et occuper une surface de 169x169 millimètres. Les quatre coins de cette image doivent correspondre aux quatre coins de la mire posée sur le plan de travail du robot. Télécharger et compléter le programme python: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/homographie_a_completer.py Solution: https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/homographie.py Vous devez compléter la fonction **processImage(image,srcPoints):** pour calculer la transformation homographique à partir des coordonnées de points 2D mis en correspondance (avec les 4 coins de l'image à générer). La fonction doit également génerer l'image **dst** rectifiée Exemple de fichier contenant les correspondances, à mettre dans le même dossier que le programme python pour la fonction main: 991.2868, 565.0504 655.7476, 490.5274 592.5595, 833.6786 948.9872, 903.2888 exemple d'image de la mire en entrée du programme: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imamire1.jpg}} image avec les contours en surimpression: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imamire1_contour.jpg}} exemple d'image de la mire en sortie du programme: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imamire1_rect.jpg}} En appliquant le même traitement à des images de bouchons sur la zone de la mire: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon1.jpg}} est rectifiée en: {{https://bvdp.inetdoc.net/files/iut/tp_lpro_vision/imabouchon1_rect.jpg}} =====Install linux iut===== travailler dans le dossier ~/adfs/vision python3 Python 3.9.2 import cv2 as cv cv.__version__ '4.5.1'