sobota, 31 marca 2012

Kinect - jak uzyskać odległość od sensora

Poniżej przedstawie jak można uzyskac informacje o odległości obiektu od sensora.


Odległość danego pixela jest zapisana na 16bitach. Trzy najmniej znaczące wskazują na identyfikator obiektu a pozostałe 13 na jego odległość.


{bity odległości}{numer obiektu}
{1101 0111 1101 1}{001}


Teraz aby wyłuskać z tego informacje należy użyć dwuch właściwości dostępnych w API.


DepthImageFrame.PlayerIndexBitmask - jeśli na pierwszej z nich wykonamy AND razem z naszą wartością to wyłuskamy numer obiektu.


(1101011111011001) AND (0000 0000 0000 0111) = 0000 0000 0000 0001 = 1




DepthImageFrame.PlayerIndexBitmaskWidth - przesuwając bity o ta długośc dostaniemy informacje o odległości.


0001101011111011 = 6907 = 6907mm


Oto przykład całego kodu: 

int objectNumber = depthData[depthIndex] & DepthImageFrame.PlayerIndexBitmask;
int objectDepth = depthData[depthIndex] >> DepthImageFrame.PlayerIndexBitmaskWidth;

Brak komentarzy:

Prześlij komentarz