2012-05-22 6 views
0

표면에 고유 점이 n 개 (n = 4라고 가정 할 수 있음)의 작은 입방체가 있습니다. 이 점들은 번호가 매겨지며 (1-n) 점 # 1이 원점 인 좌표 공간을 형성합니다.좌표 집합에서 변환 행렬 계산 (OpenCV 사용)

이제 추적 카메라를 사용하여 카메라의 좌표 공간에 비례하여 해당 점의 좌표를 가져옵니다. 즉, 이제 카메라의 원점에서 큐브의 표면까지를 가리키는 n 개의 벡터 p_i이 있음을 의미합니다.

그 정보로, 나는이 두 좌표 공간 사이의 변환을 나타내는 아핀 변환 행렬 (rotation + translation)을 계산하려고합니다. 번역 부분은 매우 사소하지만 회전 행렬 계산에 어려움을 겪고 있습니다.

이 문제를 해결하는 데 도움이되는 OpenCV의 빌드 인 기능이 있습니까?

답변

1

cvGetPerspectiveTransform과 같은 소리가 당신이 찾고있는 것입니다. cvFindHomograpy도 도움이 될 수 있습니다.

+0

2D 정보와 함께 작동하는 것처럼 보이지만 내 데이터는 모두 3D입니다. – Niko

+1

아, 죄송합니다, 나는 그것을 놓쳤습니다. 나는 OpenCV가 그 사건에 대해 무엇이든 제공한다고 생각하지 않는다. 회전을 계산하려면 (스케일링이없고 이미 필요한 번역을 수행 한 경우) trig가 충분해야합니다. –

1

solvePnP은 회전 행렬과 번역 벡터를 제공해야합니다. CV_EPNP 또는 CV_ITERATIVE으로 시도해보십시오.

편집 : 또는 아마도 RQ decomposition을 찾고 있습니다.

1

OpenCV 용 Stereo Camera 튜토리얼을보십시오. OpenCV는 모든 계산에 평면 체스 판을 사용하고 Z 차원을 0으로 설정하여 3D 점 목록을 만듭니다. 이미 3D 점이 있으므로 3D 점 목록을 반영하도록 튜토리얼의 코드를 변경하십시오. 그런 다음 변환을 계산할 수 있습니다.