300 likes | 577 Views
Plan. 1. Pr
E N D
1. Projet de fin d’étudesDéveloppement d’une plate-forme vidéo interactive Laboratoire des Images et des Signaux – LIS
Groupe GOTA
Sous la direction de Mme Alice Caplier et M. Laurent Bonnaud
3. Plan 1. Présentation du projet et du contexte
2. Présentation de la plate-forme
3. Présentation des étapes de développement
4. Le travail réalisé
5. Limitations, Conclusions et perspectives
4. 1. Présentation du projet et du contexte Le LIS – Groupe GOTA: analyse et interprétation des signaux et des images
Le réseau européen d’excellence SIMILAR:
interactions multimodales
Le projet ArtLive: 01/2000 – 05/2002
Réalisation d’espaces en réalité mixte: réalité virtuelle et réalité augmentée
Modules écrits en C++ - Classes
Point de départ du projet
Utilisation des classes «ArtLiveYUVImage» et «ArtLiveDisplay»
5. Plan 1. Présentation du projet et du contexte
2. Présentation de la plate-forme
3. Présentation des étapes de développement
4. Le travail réalisé
5. Limitations, Conclusions et perspectives
6. 2. Présentation de la plate-forme
7. 2. Présentation de la plate-forme
Le temps réel:
Notion dépendante de l’application
Au sein de la plate-forme:
Cas idéal:Temps-réel ? traitement des images à la volée (30 images/s)
Cadence minimum: 15 images/s
Latence: durée entre début et fin de traitement
8. 2. Présentation de la plate-forme Les caméras: SONY, DFW-VL 500
Caméra IIDC – IEEE 1394 -1995
30 images/s ? vidéo fluide
Données non compressées
Résolutions: 640x480 ou 320x240
La tourelle: Directed Perception Inc, PTU-D46-70
Connectée par câble série RS-232
Poids maximum: 4,08 Kg
Résolution: 0,0129°
9. 2. Présentation de la plate-forme Les applications souhaitées:
Analyse du comportement global d’un sujet humain
Les mouvements de la tête et des mains
Analyse des expressions du visage
Un exemple: « le suivi de regard »
Détection d’un sujet humain
Localisation de son visage
Détection des iris et suivi de regard
10. Plan 1. Présentation du projet et du contexte
2. Présentation de la plate-forme
3. Présentation des étapes de développement
4. Le travail réalisé
5. Limitations, Conclusions et perspectives
11. 3. Les étapes de développement Les outils:
Le contrôle des caméras et l’acquisition des images
Le contrôle de la tourelle
Interface utilisateur et optimisation
Les utilisations:
L’analyse vidéo
L’asservissement visuel
12. Plan 1. Présentation du projet et du contexte
2. Présentation de la plate-forme
3. Présentation des étapes de développement
4. Le travail réalisé
5. Limitations, Conclusions et perspectives
13. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
14. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
15. 4.1 Acquisition et contrôle des caméras Sous Linux, contrôle des caméras IIDC via les librairies C «libdc1394» et «libraw1394»
16. 4.1 Acquisition et contrôle des caméras
La conversion de format
Effet miroir
Le programme d’acquisition GrabYUVSequence:
1 ou 2 caméra(s)
Sauvegarde possible des séquences au format YUV 4:2:0
Réglages des paramètres d’acquisition et positionnement de la tourelle
17. Consommations des ressources CPU pour l’acquisition des images
Consommations négligeables
Limitations:
Capacité limite du bus: impossible d’acquérir simultanément avec 2 caméras en résolution 640x480 YUV 4:2:2
Latence à l’affichage lors d’une acquisition avec 2 caméras:
˜10 images
18. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
19. 4.2 Le contrôle de la tourelle Pan et Tilt Contrôle de la tourelle via une librairie dynamique « libPTU.so » générée à partir des méthodes fournies avec la tourelle.
Utilisation de la librairie au travers d’une classe C++: « PTU »
Finalement:
20. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
21. 4.3.1 Analyse vidéo: détection de têtes et de mains Objectif : Détection de têtes et de mains
Principe:
Adaptation d’un programme existant
22. 4.3.1 Analyse vidéo: détection de têtes et de mains Permettre le traitement direct des séquences acquises par les caméras
Permettre l’affichage des images résultats
Permettre les réglages temps réel des paramètres de traitements
23. 4.3.1 Analyse vidéo: détection de têtes et de mains Cadences de traitements – sans optimisation:
3 images/s pour une résolution de 640x480
15 images/s pour une résolution 320x240
24. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
25. 4.3.2 Analyse vidéo: détection d’iris
Objectif:Détecter les iris dans un visage
Principe:
une phase d’initialisation
Sélection de la zone du visage
Mesure du diamètre de l’iris
Une phase de suivi de visage par block-matching puis détection des iris
26. 4.3.2 Analyse vidéo: détection d’iris La phase d’initialisation:
27. 4.3.2 Analyse vidéo: détection d’iris La phase de suivi et de détection:
Centre de l’iris détecté lorsque :
est maximum
Cette recherche est limitée a 2 zones englobant chaque œil:
28. 4.3.2 Analyse vidéo: détection d’iris class IRIS_DETECTION {
public:
// Méthode de mesure du diamètre de l’iris
int measure_diameter(ArtLiveYUVImage& image);
// Méthodes de recherche des iris
COORD left_iris_detection(ArtLiveYUVImage& image, BLOCK zone);
COORD right_iris_detection(ArtLiveYUVImage& image, BLOCK zone);
// Méthodes de détection œil ouvert/fermé
bool open_left_eye(ArtLiveYUVImage& image,COORD iris);
bool open_right_eye(ArtLiveYUVImage& image,COORD iris);
private:
int diameter;
// Paramètres de détection œil ouvert/fermé
float NGF0_right,NGF0_left,NGFt_right,NGFt_left;
float NQL0_left;
float NQL0_right;
};
29. 4.3.2 Analyse vidéo: détection d’iris Les résultats:
Cadence de détection d’iris acceptable
Cadence de suivi trop faible
Limitations:
Cadences de suivi de 0,5 à 30 images/s => besoin d’une méthode rapide de détection de visage.
La distance entre le visage et la caméra doit rester quasi-constante : pas d’adaptation de la taille du visage et de l’iris.
30. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
31. 4.3.3 Détection automatique de visage Obtenir une méthode rapide de détection de visage
Adaptation sous forme d’une classe C++ «FACE_DETECTION » d’un algorithme existant:
Le visage est modélisé par une ellipse
Segmentation : teinte chair
Recherche de la meilleure ellipse
32. 4.3.3 Détection automatique de visage class FACE_DETECTION {
public:
//destructeur
// Libération des zone mémoires allouées
~FACE_DETECTION();
// Méthode d’initialisation
// 'w' et 'h' sont les dimensions de l’image traitée
void init_face_detection(int w,int h);
// Méthode de détection d’un visage
// Retourne un pointeur vers les coordonnées du rectangle résultat
// pCoordRect[0] : Xmin; pCoordRectAff[2] : Xmax;
// pCoordRect[1] : Ymin; pCoordRectAff[3] : Ymax;
int * face_detection(ArtLiveYUVImage& image);
// Méthode pour dessiner sur l’image le rectangle résultat
void draw_face_box(ArtLiveYUVImage& image,int color1,int color2);
private:
int * pCoordRect;
Des pointeurs vers int, *int , **int,…};
33. 4.3.3 Détection automatique de visage
Les résultats:
Cadence: supérieure à 90 images/s
Limitations:
La largeur des visages est limitée: 40 pixels à 100 pixels de large
Instabilité
34. 4.3.3 Détection automatique de visage Détection de visage et d’iris:
15 à 40 images/s
La cadence est limitée par la recherche des iris
Erreurs de détection
35. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
36. 4.4 Asservissement visuel La poursuite d’un objet en Pan et Tilt
Le principe:
Rendre nulle l’erreur:
e = s – s*
Travaux: Cretual Armel
La loi de commande:
Or notre tourelle n’est pas contrôlable directement en vitesse
Réglage de vitesse puis ordre de déplacement vers la butée
37. 4.4 Asservissement visuel La normalisation des coordonnées:
Si y constante, alors:
38. 4.4 Asservissement visuel Les résultats:
La rapidité et la qualité de la convergence dépend d’un compromis entre gain et cadence de traitement
Des dépassements de position peuvent survenir:
25 images/s : ? < 3
15 images/s :? < 2
5 images /s : ? <1
39. 4.4 Asservissement visuel Un exemple de recentrage: (? = 1)
40. Plan 4.Le travail réalisé
4.1 Acquisition des images et contrôle des caméras
4.2 Contrôle de la tourelle Pan & Tilt
4.3 Analyse vidéo
4.3.1 Détection de têtes et de mains
4.3.2 Détection d’iris
4.3.3 Détection automatique de visage
4.4 Asservissement visuel
4.5 Interface utilisateur et optimisation
41. 4.5 Interfaces utilisateur et optimisations Créer une interface simple et interactive pour une utilisation intuitive:
Librairie Simple Directmedia Layer (SDL) pour l’affichage et la gestion des événements clavier et souris
Affichage d’une ou deux images et des zones interactives
Réglages et positionnement de la tourelle et des caméras grâce au clavier et/ou la souris
Sélection de zones sur une image, mesure de distance…
42. 4.5 Interfaces utilisateur et optimisations Optimisation: utilisation de threads
43. Plan 1. Présentation du projet et du contexte
2. Présentation de la plate-forme
3. Présentation des étapes de développement
4. Le travail réalisé
5. Limitations, Conclusions et perspectives
44. 5. Limitations, conclusions et perspectives Limitation:
Blocage noyau bi-processeur lors d’un arrêt d’acquisition par ‘Control-C’
Conclusions:
Outils de base testés et validés
Outils d’analyse: détection visage, mains, iris
Asservissement visuel: suivi d’un objet d’intérêt
Perspectives:
Optimisation des cadences
Stabilisation de la détection automatique de visage
Asservissement du zoom et du focus
Intégration de nouveaux algorithmes