2014-11-04 2 views
0

kinect를 실험하고 있지만 스케일링에 문제가 있습니다. 아래는 kinect-kcb의 코드입니다. 얼굴 추적이 '메쉬'에서 작동하더라도 자체 클래스의 배율 값을 반환하는 데 문제가 있습니다. 아래의 코드는 완벽하게 작동하는 정확한 회전과 평행 이동을 반환하지만, 메쉬는 분명히 크기가 변하는 메쉬 임에도 불구하고 오랜 기간 동안 1을 반환 한 다음 서서히 작아 지지만 0.98 ... 등등하지만 스케일링 값은 정확하지 않습니다.Kinect Scaling in C++

float scale; 
float rotation[ 3 ]; 
float translation[ 3 ]; 
hr = mResult->Get3DPose(&scale, rotation, translation); 
if (SUCCEEDED(hr)) { 
    Vec3f r(rotation[ 0 ], rotation[ 1 ], rotation[ 2 ]); 
    Vec3f t(translation[ 0 ], translation[ 1 ], translation[ 2 ]); 

    face.mPoseMatrix.translate(t); 
    face.mPoseMatrix.rotate(r); 
    face.mPoseMatrix.translate(-t); 
    face.mPoseMatrix.translate(t); 
    face.mPoseMatrix.scale(Vec3f::one() * scale); 
} 

이 스케일 값은 코드 thoughout 반복적으로 사용되지만 자주 변경하지 않는 것 (예를 들어, 기능 - 않기 위해) :

hr = mModel->Get3DShape(shapeUnits, numShapeUnits, animationUnits, numAnimationUnits, scale, rotation, translation, pts, numVertices); 

hr = mModel->GetProjectedShape(&mConfigColor, mSensorData.ZoomFactor, viewOffset, shapeUnits, numShapeUnits, animationUnits, 
          numAnimationUnits, scale, rotation, translation, pts, numVertices); 

을 넥트 (함수 FaceModel.Scale있다) 그러나 이것은 단지 3D 모델의 초기 배율 값이라고 가정하는 상수 값을 반환합니다. 그리고 사용자가 카메라에서 더 멀리 그리고 멀리 이동할 때 위의 배율 값이 변할 것이라고 가정했습니다.

+0

그래서 당신이 목표를 추측하는 것은 스케일 값을 사용하여 카메라와의 거리를 판단하는 것입니다. – ldgorman

+0

3D 모델에 대한 z 값을 결국 찾았습니다 (더 좋은 방법이 있기를 바랬습니다). 당신의 도움을 주셔서 감사합니다 :). – user1546650

답변

1

특히 IFTResult::Get3DPose 방법은 얼굴 눈금 값을 제공합니다. 이 값이 1.0이면 얼굴 크기는로드 된 3D 모델과 같습니다 (아무 것도 할 수 없습니까?).

3d 모델을 다시로드 할 때 액면가가 1.0이 아닌 경우 모델에서 작업해야합니다.

IFTResult :: Get3DPose가 pScale에 할당하는 디버그 정보를 출력 해 보셨습니까?

해당 시스템이 추적에 실패했기 때문에 IFTResult::GetStatus으로 확인할 수 있습니다.

너가 뒤에있는 것이 face rectangle의 크기일지도 모른다. 이는 이미지 주체의 근접성에 따라 확장됩니다.

Heres 관련 코드 프로젝트 링크.

+0

안녕하세요, 응답 해 주셔서 감사합니다. 그것이 내가 한 일입니다. 나는 모델을 크기가 변하는 경우에도 pScale이 1.0을 출력하고 모델이 급속하게 크기 등을 계속 변경하더라도 잠시 동안 0.984683으로 점프한다. 예상대로 동작하지 않는 것 같은가? 내 디버그 pScale = 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 9.8 ..., 9.8, ..., 9.8 ... , 끊임없이 움직이는 사용자에도 불구하고 9.8. – user1546650

+0

당신이 직사각형의 크기에 관심이 있으십니까? 우리가 논의한 척도 값이 3d 기하학과 관련이 있다고 생각합니다. – ldgorman

+0

나는 이것에 대해 걱정했습니다. 나는 네가 무슨 뜻인지 알 것 같아. 가장 좋은 방법은 수동으로 계산하는 것입니다. 도와 주셔서 감사합니다 :). – user1546650