Cours:Classif
TP Classification : détection d'objet en temps réel par vision
Le travail de cette étape va consister à
- analyser des images acquises en "temps réel" afin de détecter et identifier des objets
- les objets seront
- dans un premier temps des jetons de nain jaune
- dans un second temps des briques lego.
Sommaire
Technos matérielles et logicielles
Vous utiliserez :
- Une Rpi 4 que vous programmerez depuis des postes utilisés en terminaux connectés par
ssh, avec redirection graphique (option- X). - Une camera PiCam Wide (grand angle)
- Le langage Python accompagné de
- la librairie libcamera pour les acquisitions :
- PIL et numpy pour les traitements bas niveaux
- la librairie opencv et dlib pour la classification et la reconnaissance
Étapes :
- Connexion à la Rpi et test d'acquisition en ligne de commande
- Capture d'image et affichage en temps réel, avec Python
- Prétraitement
- Reconnaissance simple d'un seul objet, avec descripteurs géométriques
- Classifieur plus évolué (knn, svm)
- Plusieurs objets
Connexion à la Rpi et test d'acquisition en ligne de commande
- Connecter (si cela n'est pas fait) la PiCam à la Rpi4
- Dans un terminal, se connecter à la Rpi en ssh :
ssh -X root@10.98.33.XX - Tester la PiCam avec
libcamera-hello(la capture en video doit s'afficher sur l'écran de la Rpi). Avec les informations affichées, identifier :- le modèle du capteur,
- ses caractéristiques (résolution, format, cadence, etc ...).
- Tester l'acquisition d'image avec l'éxecutable
libcamera-still- Explorer les options de cette application (
libcamera-still -h), en particulier-n,--immediate,--width,--heightet-o - Voir la page suivante pour le détails des options possibles : https://www.raspberrypi.com/documentation/computers/camera_software.html
- Explorer les options de cette application (
Capture d'image et affichage en temps réel
En exploitant la documentation Picamera2 (principalement section 6 - Capturing images and requests)
- Tester les deux exemples Capturing arrays et Capturing PIL images
- PIL fait référence à Python Imaging Library : une bibliothèque Python de traitement d'images.
- Écrire un script Python qui :
- initialise la camera
- affiche en continu son image
- sur l'appui d'une touche, réalise une capture (dans un objet
array>/code> ou <code>PIL) et sauvegarde l'image dans un fichier
En pratique :
- Vous pouvez lancer un interpréteur Python dans le terminal pour tester des choses
- Vous pouvez accéder aux dossiers de la Rpi depuis votre PC fixe, depuis le navigateur Dolphin avec comme url
sftp://root@10.98.33.83:22/. Ce qui vous permettra par exemple d'éditer le fichier script depuis votre PC fixe. - Dans le terminal,
python monscript.pypour executer votre script - Référence Python :
Prétraitement
Cette partie est moins guidée, elle devra être incluse dans votre compte-rendu.
- Modification éventuelle de la zone de capture de la camera.
- Conversion en image niv. de gris.
- Binarisation.
- En ne plaçant qu'un seul objet dans le champ de la camera, calculer et afficher ses descripteurs de forme : longueur/largeur de l'objet, cf https://raphael.candelier.fr/?blog=Image%20Moments
Reconnaissance simple d'un seul objet, avec descripteurs géométriques
Classifieur plus évolué
Plusieurs objets
Références
OpenCV :
- OpenCV Tutorials
- Exemples OpenCV en c++
- K-Nearest Neighbour
- Image Segmentation with Watershed Algorithm
- connected Components et son exemple en cpp : https://docs.opencv.org/3.4/de/d01/samples_2cpp_2connected_components_8cpp-example.html#a3
- Introduction to Support Vector Machines
- Fourier Descriptors, voir également Contours example pour obtenir les contours d'un objet.
Archives de cette page :