Seguimiento de esqueleto lateral Kinect
Actualmente estoy usando Microsoft Kinect para medir ángulos entre juntas. La mayoría de las mediciones están funcionando correctamente. Cuando una persona está sentada de lado (en una silla), Kinect no rastreará el esqueleto con precisión. Para ilustrar mi problema, he agregado 3 imágenes de la vista en profundidad de Kinect.
Como se puede ver, 2 de cada 3 mediciones funcionan correctamente. Cada vez que levanto mi pierna, el Kinect detiene el seguimiento del esqueleto correctamente. ¿Alguien tiene una solución a este problema, o esto es solo una limitación del Kinect?
Gracias.
Actualización 1: losJointTrackingState-Enumeration
en estas uniones seguidas que se muestran en la captura de pantalla 2 están marcadas comoInferred
Sin embargo, la vista en profundidad está siguiendo mi cuerpo completo.
Actualización 2: En la captura de pantalla 2, estoy tratando de rastrear mi pierna delantera, resaltada en verde. Sé que la otra pierna no está rastreada, pero esto no importa, supongo.
Actualización 3: El siguiente código selecciona un esqueleto:
private Skeleton StickySkeleton(Skeleton[] skeletons)
{
if (skeletons.Count<Skeleton>(skeleton => skeleton.TrackingId == _trackedSkeletonId) <= 0)
{
_trackedSkeletonId = -1;
_skeleton = null;
}
if (_trackedSkeletonId == -1)
{
Skeleton foundSkeleton = skeletons.FirstOrDefault<Skeleton>(skeleton => skeleton.TrackingState == SkeletonTrackingState.Tracked);
if (foundSkeleton != null)
{
_trackedSkeletonId = foundSkeleton.TrackingId;
return foundSkeleton;
}
}
return _skeleton;
}
Cada vez que se rastrea un esqueleto, se utilizarán datos para dibujar los puntos de unión y calcular el ángulo entre las juntas.
Actualización 4: He probado sentarme en un 'bloque', mucho más simplificado que una silla. Desafortunadamente el Kinect sigue actuando igual.
A continuación 2 capturas de pantalla: