Śledzenie szkieletu bocznego Kinect
Obecnie używam Microsoft Kinect do mierzenia kątów między stawami. Większość pomiarów działa poprawnie. Ilekroć ktoś siedzi bokiem (na krześle), Kinect nie będzie dokładnie śledził szkieletu. Aby zilustrować mój problem, dodałem 3 zdjęcia z widoku głębi Kinect.
Jak widać 2 z 3 pomiarów działa poprawnie. Kiedy podnoszę nogę, Kinect zatrzymuje poprawnie śledzenie szkieletu. Czy ktoś ma rozwiązanie tego problemu, czy jest to tylko ograniczenie Kinect?
Dzięki.
Aktualizacja 1: TheJointTrackingState-Enumeration
na tych połączeniach śledzonych pokazane na zrzucie 2 są oznaczone jakoInferred
, jednak widok głębi śledzi moje całe ciało.
Aktualizacja 2: Na zrzucie 2 próbuję śledzić moją przednią nogę, podświetloną na zielono. Wiem, że druga noga nie jest śledzona, ale chyba nie ma to znaczenia.
Aktualizacja 3: Poniższy kod wybiera szkielet:
<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>
Za każdym razem, gdy śledzony jest szkielet, dane będą wykorzystywane do rysowania punktów połączenia i obliczania kąta między stawami.
Aktualizacja 4: Testowałem siedzenie na „bloku”, znacznie bardziej uproszczonym niż krzesło. Niestety Kinect nadal działa tak samo.
Poniżej 2 zrzuty ekranu: