Cours:Classif : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(Technos matérielles et logicielles)
 
(19 révisions intermédiaires par le même utilisateur non affichées)
Ligne 19 : Ligne 19 :
 
*** https://pip-assets.raspberrypi.com/categories/652-raspberry-pi-camera-module-2/documents/RP-008156-DS-2-picamera2-manual.pdf?disposition=inline
 
*** https://pip-assets.raspberrypi.com/categories/652-raspberry-pi-camera-module-2/documents/RP-008156-DS-2-picamera2-manual.pdf?disposition=inline
 
** PIL et numpy pour les traitements bas niveaux
 
** PIL et numpy pour les traitements bas niveaux
** la librairie opencv et dlib pour la classification et la reconnaissance
+
** les librairies opencv et dlib pour la classification et la reconnaissance :
 
+
*** https://docs.opencv.org/4.5.1/index.html
=== Étapes ===
+
*** https://docs.opencv.org/4.5.1/d6/d00/tutorial_py_root.html
 +
*** https://dlib.net/
  
 +
Étapes :
 
* Connexion à la Rpi et test d'acquisition en ligne de commande
 
* Connexion à la Rpi et test d'acquisition en ligne de commande
 
* Capture d'image et affichage en temps réel, avec Python
 
* Capture d'image et affichage en temps réel, avec Python
Ligne 30 : Ligne 32 :
 
* Plusieurs objets
 
* 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 : <code>ssh -X root@10.98.33.XX</code>
 +
* Tester la PiCam avec <code>libcamera-hello</code> (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 <code>libcamera-still</code>
 +
** Explorer les options de cette application (<code>libcamera-still -h</code>), en particulier <code>-n</code>, <code>--immediate</code>, <code>--width</code>, <code>--height</code> et <code>-o</code>
 +
** Voir la page suivante pour le détails des options possibles : https://www.raspberrypi.com/documentation/computers/camera_software.html
 +
 +
=== Capture d'image et affichage en temps réel ===
 +
 +
En exploitant la documentation [https://pip-assets.raspberrypi.com/categories/652-raspberry-pi-camera-module-2/documents/RP-008156-DS-2-picamera2-manual.pdf?disposition=inline Picamera2] (principalement section 6 - ''Capturing images and requests'')
 +
* Tester les deux exemples ''Capturing arrays'' et ''Capturing PIL images''
 +
** PIL fait référence à [https://www.pythonware.com/products/pil/ 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 <code>array>/code> ou <code>PIL</code>) 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 <code>sftp://root@10.98.33.83:22/</code>. Ce qui vous permettra par exemple d'éditer le fichier script depuis votre PC fixe.
 +
* Dans le terminal, <code>python monscript.py</code> pour executer votre script
 +
* Référence Python :
 +
** [https://docs.python.org/fr/3/tutorial/ Le tutoriel Python]
 +
 +
=== Prétraitement ===
 +
 +
* Modification éventuelle de la zone de capture de la camera.
 +
* Conversion en image niv. de gris.
 +
* Binarisation.
 +
 +
=== Reconnaissance simple d'un seul objet, avec descripteurs géométriques ===
 +
 +
* 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
 +
* Construire une décision idoine à l'aide de la largeur et de la longueur de l'ellipse englobante, afin de discrimer trois classes d'objets (par exemple : jeton court, jeton long, jeton rond)
 +
 +
=== Classifieur plus évolué ===
 +
 +
* Redressement de la perspective
 +
* Descripteurs
 +
* KNN
 +
* SVM
 +
 +
=== Plusieurs objets ===
 +
 +
* Segmentation
  
 
=== Références  ===
 
=== Références  ===

Version actuelle datée du 26 janvier 2026 à 15:03

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.

Technos matérielles et logicielles

Vous utiliserez :

É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

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
  • É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.py pour executer votre script
  • Référence Python :

Prétraitement

  • Modification éventuelle de la zone de capture de la camera.
  • Conversion en image niv. de gris.
  • Binarisation.

Reconnaissance simple d'un seul objet, avec descripteurs géométriques

  • 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
  • Construire une décision idoine à l'aide de la largeur et de la longueur de l'ellipse englobante, afin de discrimer trois classes d'objets (par exemple : jeton court, jeton long, jeton rond)

Classifieur plus évolué

  • Redressement de la perspective
  • Descripteurs
  • KNN
  • SVM

Plusieurs objets

  • Segmentation

Références

OpenCV :

Archives de cette page :