2013-04-10 2 views
0

Kinect 센서로 찍은 장면에서 플레이어의 깊이 위치를 추정하여 손과 사람 사이의 거리를 평가해야하는 알고리즘에서이 정보를 사용하고 싶습니다. "선수의 시체". 이 경우, "플레이어의 몸"이라는 개념은 플레이어의 깊이 (즉 내가 찾고있는 것)의 위치를 ​​나타내는 값으로 변환 될 수 있습니다.플레이어의 대략적인 위치 추정

분명히 사람이 공간에서 볼륨을 차지하기 때문에 장면에서 플레이어의 정확한 위치를 정의 할 수 없다는 것을 알 수 있습니다.

내가 알고 싶은 것은 다음과 같습니다. 해골 데이터를 사용하여 사람의 대략적인 위치를 계산하는 가장 좋은 방법은 무엇입니까?

I는 다음 코드 시도 : 상기 방법으로

Skeleton playerSkeleton = (from s in skeletonData where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault(); 

... 

if (playerSkeleton != null) 
{ 
    Joint head = playerSkeleton.Joints[JointType.Head]; 

    float averagePlayerPosition = head.Z; 
} 

, I가 플레이어의 위치를 ​​정의하는 깊이 헤드를 사용했다.

좋은 선택인가요? (예 : 평균이 여러 개입니까? points of the skeleton)? 나의 선택이 개선 될 수 있다면, 더 나은 대안을 정당화 할 수있는 참고 문헌이 있는가?

답변

1

Head, Spine 또는 HipCenter 모두 빼내기에 충분합니다.

나는 머리 전체에 Spine 또는 HipCenter을 제안합니다. 사용자가 몸 전체를 움직이지 않으면 두 점이 많이 움직일 수 없기 때문입니다. 즉, 앞뒤로 기울여 Head.Z 위치를 변경할 수 있지만, 사용자가 물리적으로 몸 전체를 움직이지 않는 한 다른 두 점은 크게 변하지 않습니다.

응용 프로그램의 용도에 따라 Head도 사용자의 관점에서 이해할 수 있습니다. 귀하의 설명에서 나는이 가능성은 낮지 만, 아마도 전체적인 위치를 업데이트하기 위해 기울거나 기울이는 것은 사용자의 정신 모델에 적합하다고 생각합니다. http://msdn.microsoft.com/en-us/library/microsoft.kinect.skeleton.position.aspx

내가 그것을 사용한 적이로서 나는, 솔직히이 계산 방법은 잘 모르겠지만, Skeleton.Position.Z가 지속적으로 얻을 당신은 요청할 수 있습니다 :

뿐만 아니라 Skeleton 자체에 Position 특성이있다 Kinect에 따라 사용자의 계산 된 거리.

+0

다른 사람들은 '해골 포지션 (Fleetton.Position)'의 의미에 대해 이야기했으며 누군가가 "식별 된 사용자의 질량 중심"이 될 수 있다고 말했습니다 ... [링크] (http : // social.msdn.microsoft.com/Forums/en-US/kinectsdknuiapi/thread/ee12b17d-3606-4416-8924-12fa8e482421/) –

+0

알맞은 모양입니다. 특히 비활성 뼈대에서 사용할 수 있기 때문입니다. 나는 이전의 코드를 보았고 실제로 "가장 가까운"사람을 원할 때 추적 할 사용자를 결정할 때 이것을 사용했습니다. (미안합니다.) 아주 잘 작동합니다. –

0

정확한 정보를 얻으려면 사용중인 SDK 기능 외에 SDK 기능을 사용하십시오.