2017-12-28 43 views
0

opencv 및 컴퓨터 비전을 처음 사용합니다. 두 개의 카메라 포즈 사이에서 R과 t 행렬을 찾고 싶습니다.OpenCv는 필수 매트릭스에서 R 및 T를 얻습니다.

https://en.wikipedia.org/wiki/Essential_matrix#Determining_R_and_t_from_E

내가 두 이미지의 같은 지점의 관련 픽셀 위치의 그룹을 찾을 : 그래서 일반적으로 위키 피 디아를 따릅니다. 나는 필수 매트릭스를 얻는다. 그런 다음 SVD를 실행합니다. 가능한 2 개의 R과 2 개의 가능한 문자를 인쇄하십시오. 난 단지 혼자 회전 또는 단독 번역 (롤, 피치, 요 중 하나) (X, Y 중 하나, Z)를 변경하는 경우

[예상대로 실행됩니다 무엇, 그것을 완벽하게 작동

. 예를 들어 피치를 15도까지 증가 시키면 R을 얻고 델타 피치가 +14.9도라는 것을 알 수 있습니다. x를 10cm 증가 시키면 t 행렬은 [0.96, -0.2, -0.2]와 같습니다. [무엇이 잘못되었는지]

그러나, 나는 모두 회전과 번역의 R을 변경하고 t 비 감지됩니다. 예를 들어 x를 10cm 높이고 15도까지 피치를 증가 시키면 델타도는 [-23, 8,0.5]와 같고 t 행렬은 [0.7, 0.5, 0.5]와 같습니다.

[질문] 내가 동시에 회전 및 변환을 변경하면 내가 좋은 결과를 얻을 수없는 이유를

내가 궁금하네요. 또한, 관련없는 회전 또는 변환 (롤, 요, y, z)도 왜 그렇게 많이 변하는 지 혼란 스럽습니다.

누구든지 나를 알아낼 의향이 있습니까? 감사.


는 [해결하고 이유]

을 OpenCV는 오른손 좌표계를 사용한다. 즉, z 축은 xy 평면에서 뷰어 방향으로 투영됩니다. 그리고 우리 시스템은 왼손 좌표계를 사용하고 있습니다. 변경 사항이 z 축과 관련되어있는 한 결과는 의미가 없습니다.

답변

0

사용 된 좌표의 차이로 인해 해결되었습니다.

OpenCV는 오른쪽 좌표계를 사용합니다. 즉, z 축은 xy 평면에서 뷰어 방향으로 투영됩니다. 그리고 우리 시스템은 왼손 좌표계를 사용하고 있습니다. 변경 사항이 z 축과 관련되어있는 한 결과는 의미가 없습니다.