2016-09-28 3 views
0

실제로 Kinect v2 카메라를 사용하여 시상 계획에서 인간의 골격과 관련된 관절 위치를 측정했습니다 (x, y). 이제 Kinect v2와 스켈레톤 모션 방향 사이의 각도를 만들고 싶습니다 (이 그림에서와 같이 : http://www.mediafire.com/file/7wf8890ngnmi1d4/kinect.pdf).kinect v2 좌표를 다른 좌표로 변환

MATLAB을 사용하여 SpineBase 위치와 같은 스켈레톤의 특정 조인에 고정 된 좌표에 상대적인 조인트 위치를 어떻게 측정 할 수 있습니까 ??

변환에 필요한 것은 무엇입니까?

답변

0

는 지금 당장 사용 가능한 KINECT이 없지만, 여기에 내가이 태클을 얼마나 이론입니다 : 이미 다른 공동 좌표 수 액세스 것 같다의이 같은 STH을 가지고 있으므로,

첫째 :

if (body.IsTracked) 
{ 
    Joint spineMid = body.Joints[JointType.SpineMid]; 
    float x = spineMid.Position.X; 
    float y = spineMid.Position.Y; 
    float z = spineMid.Position.Z; 
} 

이렇게하면 x, y, z가 포함 된 spineMid 점을 얻을 수 있습니다. 각 프레임은 spineMid 포인트를 마지막 프레임의 spinMid 포인트와 비교합니다 (그리고 다음 프레임의 비교를 위해 나중에 저장합니다). 이 점을 P_newP_old이라고 부릅니다. 방향 벡터는 우리가 빼 얻으려면 두 그래서 같은 :

p_dir = P_new -

지금 우리가이 방향 벡터와 "아웃"벡터의 사이의 각도를 얻을 수 있습니다 P_old kinect는 좌표계와 함께 <00,1> 인 kinect입니다. 그러나 당신의 그림이 주어진다면 우리는 z_dir = < 0,0, -1>을 사용할 필요가 있습니다. 이 p_dir의 단위 벡터를 사용하여 p_dir_unit를 호출 할 수 있습니다, 우리는 z_dirp_dir_unit 사이의 각도를 얻을 수있는 내적을 사용할 수 있습니다. 만약 오직 X 방향이 필요한 경우, Z 평면 방금 0 p_dir 대한 Y 값을 설정하고, 기기를 얻을 수

쎄타 = ACOS (z_dir * p_dir_unit) 그 벡터에서 벡터. 의 절대 길이 p_dir에서 신체가 얼마나 빨리 움직이는 지에 대한 정보를 얻을 수도 있습니다.

희망이 있습니다.

관련 문제