Kinect seitwärts Skeleton Tracking

Derzeit benutze ich den Microsoft Kinect zum Messen von Winkeln zwischen Gelenken. Die meisten Messungen funktionieren ordnungsgemäß. Wenn eine Person seitlich sitzt (auf einem Stuhl), kann der Kinect das Skelett nicht genau verfolgen. Um mein Problem zu veranschaulichen, habe ich 3 Bilder der Tiefenansicht von Kinect hinzugefügt.

Wie Sie sehen, funktionieren 2 von 3 Messungen "richtig". Immer wenn ich mein Bein anhebe, stoppt der Kinect die korrekte Verfolgung des Skeletts. Hat jemand eine Lösung für dieses Problem, oder ist dies nur eine Einschränkung des Kinect?

Vielen Dank.

Update 1: DasJointTrackingState-Enumeration auf diesen verfolgten Gelenken sind die in Screenshot 2 gezeigten als markiertInferredDie Tiefenansicht verfolgt jedoch meinen ganzen Körper.

Update 2: In Screenshot 2 versuche ich, mein Vorderbein zu verfolgen, das als grün markiert ist. Ich weiß, dass das andere Bein nicht verfolgt wird, aber das spielt wohl keine Rolle.

Update 3: Der folgende Code wählt ein Skelett aus:

<code>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;
}
</code>

Wenn ein Skelett verfolgt wird, werden diese Daten zum Zeichnen der Gelenkpunkte und zum Berechnen des Winkels zwischen Gelenken verwendet.

Update 4: Ich habe getestet, wie man auf einem "Block" sitzt, der viel einfacher ist als ein Stuhl. Leider verhält sich der Kinect immer noch genauso.

Unten 2 Screenshots:

Antworten auf die Frage(3)

Ihre Antwort auf die Frage