Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Traitement d’images Kinect – Partie 2
2
Plan de leçon Squelette : Description
Événement SkeletetonFrameReadyEventArgs Classe SkeletonFrame Classe Skeleton Propriété Joints Méthodes de concordance
3
Squelette : Description
Comme on le sait, la Kinect est capable de reconnaître les joueurs qui interagissent avec celle-ci Le processus consiste à répliquer le squelette du joueur Style bonhomme allumette Le squelette est une collection de points 3D avec un index pour identifier le joueur (1 à 6)
4
Squelette : Description
Dans la première version de la Kinect, chaque squelette est composé de 20 jointures qui sont les suivantes HipCenter ShoulderCenter Spine Head ShoulderLeft ShoulderRight ElbowLeft ElbowRight WristLeft WristRight HandLeft HandRight HipLeft HipRight KneeLeft KneeRight AnkleLeft AnkleRight FootLeft FootRight
5
SkeletetonFrameReadyEventArgs
L’événement permettant de récupérer les données reliées aux squelettes est SkeletetonFrameReadyEventArgs Cet événement retourne un objet de type SkeletonFrame avec la méthode OpenSkeletonFrame private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = new Skeleton[0]; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) if (skeletonFrame != null) skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletons); }
6
SkeletonFrame La classe SkeletonFrame contient l’information des squelettes que le système a pu détecté dans le flux de données La propriété SkeletonArrayLength indique le nombre de squelettes trouvés La méthode CopySkeletonData permet de recopier la collection de squelette vers un tableau de Skeleton private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { Skeleton[] skeletons = new Skeleton[0]; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) if (skeletonFrame != null) skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength]; skeletonFrame.CopySkeletonDataTo(skeletons); }
7
Classes Skeleton, Joint et SkeletonPoint
La classe Skeleton contient plusieurs propriétés permettant d’identifier un joueur dans le flux de données Chaque squelette est composé d’une collection de jointures (Joints) qui chacun est associé à un type (JointType) Chaque joint possède une propriété SkeletonPoint, JointType et TrackingState Un SkeletonPoint est un point 3D ainsi il a les propriétés X, Y et Z JointType est une énumération des points de flexion du corps humain JointTrackingState est une énumération des trois états possibles soit NotTracked, Inferred et Tracked Inferred : Le joint est estimé et ne peut être précisément suivi
8
Résumé du squelette SkeletonFrame peut posséder 0 à 6 squelette
Skeleton est composé de 20 joints Joint est composée des propriétés Position (SkeletonPoint), JointType et TrackingState JointType est une énumération de type de joint par exemple « HandLeft » IMPORTANT!! La position d’un joint est exprimée en mètre et est relative par rapport aux hanches La position Z est la distance du joint par rapport à la Kinect Source :
9
Méthodes de concordance
Étant donné que le capteur de profondeur et la caméra ne sont pas le même capteur, il y a un décalage au niveau de la position des points La librairie fournit des méthodes permettant de convertir les points du capteur de profondeur avec ceux de la caméra et vice versa Les méthodes disponibles sont les suivantes MapDepthPointToColorPoint MapDepthPointToSkeletonPoint MapSkeletonPointToColorPoint MapSkeletonPointToDepthPoint Ces dernières sont disponibles sous la propriété CoordinateMapper de la classe KinectSensor
10
Fonctions mathématiques
Distance entre 2 points 𝑑= 2 ∆ 𝑥 2 +∆ 𝑦 2 + ∆ 𝑧 2 Loi de cosinus 𝜃= cos −1 𝑎 2 + 𝑏 2 − 𝑐 2 2𝑎𝑏
11
Exercices À l’aide du projet « Skeleton Basics – WPF »
Ajouter une zone de texte où l’on pourra voir la position X, Y et Z des jointures de la main gauche, du coude gauche, de l’épaule gauche, de la tête et du centre des hanches Utiliser le format (X, Y, Z) avec 2 décimales Ajouter une zone de texte où l’on pourra voir l’angle formé par le coude Ajouter une zone permettant d’indiquer si le bras gauche est étendu ou encore s’il est plié à 90° (±15%)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.