2012-03-06 1 views
3

저는 Kinect로 개발하는 법을 배우고 있습니다. 나는 그 알고리즘이 개별 픽셀에 대한 확률 분포를 사용하여이 지역의 신체 부위를 결정한다는 것을 안다.kinect를 사용하여 신체 이미지가없는 손 추적하기

제 질문은 전신을 보는 Kinect없이 손 위치에 액세스 할 수 있습니까? 시체가 장치에 너무 가깝거나 숨겨져있는 경우처럼? Microsoft의 KinectSDK를 사용하고 있습니다.

답변

3

MS Kinect SDK에서 가능한지 확실하지 않지만 새로운 "베타"OpenNI SDK를 사용하면 완전히보기/교정 및 핸드 포인트에 액세스하지 않고 사용자를 추적 할 수 있으며 그곳에도 있습니다. 시도해 볼만한 신체 추적 용 SDK를 제공하는 다른 공급 업체 (OMEK는 하나임).

1

처리 할 수있는 SimpleOpenNI를 사용하고 있지만 MS SDK에서 비슷한 방법을 사용할 수 있도록해야합니다. 당신은 3D 데이터에 관심이 있다면 당신은 convertRealWorldToProjective 방법을 사용할 필요가 없습니다주의 -

kinect.enableGesture(); 
    kinect.enableHands(); 
    kinect.addGesture ("RaiseHand"); //Wave, Swipe, RaiseHand and Click 

후 아래의 방법을 사용하십시오

먼저 당신은 손 추적을 활성화해야합니다.

void onCreateHands(int HandId, PVector position, float time) { 
    PVector convHand = new PVector(); 
    thisHand = position; 
    kinect.convertRealWorldToProjective(position, convHand); 
    currHand = convHand; 
    } 

    void onUpdateHands(int HandId, PVector position, float time) { 
    PVector convHand = new PVector(); 
    thisHand = position; 
    kinect.convertRealWorldToProjective(position, convHand); 
    currHand = convHand; 
    } 

    void onDestroyHands(int HandId, PVector position, float time) { 
    PVector convHand = new PVector(); 
    kinect.convertRealWorldToProjective(position, convHand); 
    currHand = new PVector (0, 0, 0); 
    } 

    void onRecognizeGesture (String strGesture, PVector idPosition, PVector endPosition)  { 
    kinect.startTrackingHands (endPosition); 
    kinect.removeGesture ("RaiseHand"); 
    } 

희망 하시겠습니까?

0

아직도 원하든 원하지 않든간에 kinect 앞에 손을 올려 놓아서 가장 가까운 대상으로 만들 수 있습니다. 깊이 맵에 액세스하여 다른 픽셀의 색상 값을 검정색으로 설정하는 동안

0

깊이 프레임을 사용하여 신체 부위 (예 : 손, 허벅지 등)를 분할 할 수 있습니다 픽셀 위치를 골격 세그먼트와 비교하고 비교합니다. 깊이 픽셀은 특정 골격 세그먼트와의 거리가 다른 골격 세그먼트에 비해 가장 작은 경우 특정 골격 세그먼트에 할당 할 수 있습니다. 조인트 (예 : 점)가 아닌 선분과의 거리를 계산하는 것이 중요합니다. enter image description here

이 문서에 대한 Kinect Avatars에서 그것을 구현하는 방법에 대한 자세한 기술 정보를 읽을 수 있습니다

이 예는 실시간 몸통, 머리, 팔, 팔뚝, 허벅지와 다리의 분할을 보여줍니다.