2012-06-25 4 views
3

opencv를 사용하여 알고있는 3D 객체의 포즈를 추정하고 싶습니다. 3D 모델의 포인트와 이미지의 해당 지점이 주어지면 solvePnP를 ​​사용할 수 있습니다. 제 질문은 : 3D 모델과 이미지 투영 사이의 일치를 어떻게 찾을 수 있습니까? 고맙습니다.모델 기반 자세 추정

+0

통신으로 무엇을 의미합니까? 증강 현실에 대해 이야기하고 있습니까? –

+0

나는 AR에 관해 명시 적으로 말하고 있지 않다. AR은 포즈 추정이 필요한 유스 케이스 중 하나 일 수 있습니다. 서신이란 3D 모델이 어떤 점으로 이미지에 투영되는지를 의미합니다. 예를 들어이 블로그에서. http://www.morethantechnical.com/2010/03/19/quick-and-easy-head-pose-estimation-with-opencv-w-code/ 3D 모델의 요점은 알려져 있으며이 3D 모델의 요점은 , 이미지에 투영되는 이미지도 알려져 있습니다. 나는 그것을 잘 설명 할 수 있기를 바랍니다. –

답변

1

poseMatrix = solvePnP (objectPoints, imagePoints);

imagePoint_computed objectPoints = [I] * * poseMatrix cameraMatrix

제 j를 검색하는

imagePoints [J]에 ~ = imagePoint_computed.

objectPoints [j] 및 imagePoints [i]가 해당 지점입니다.

+0

그러나 solvePnP는 해당 순서대로 objectpoints와 imagepoints를 가져야합니까? 그게 문제입니다. 어떤 이미지 포인트가 어떤 객체 포인트와 일치하는지 알지 못합니다. 당신은 다른 대응을 시도하는 어떤 고리를 통해 달릴 수 있지만 그것은 신뢰할 수 없습니다. – hokiebird

3

3D 모델에서 포인트와 일치하는 부분이 있고 장면의 포인트가 있으면 cv :: findHomography()를 적용해야합니다. 이 함수는 3D 모델의 모든 점을 장면으로 투영하는 행렬을 계산합니다. 사실상 동조 계산에는 4 개의 일치 항목 만 필요합니다.

1

이것은 계속 나를 괴롭 히고 있었고, 그래서 계속 찾고있었습니다. SoftPOSIT 알고리즘이 원하는 것입니다. http://www.cfar.umd.edu/~daniel/Site_2/Code.html 에는 matlab 구현이 있습니다. 일부 사람들은 c/C++로 번역했습니다.