2010-02-03 3 views
10

MATLAB에서 정규화 된 Eight point algorithm을 사용하여 두 이미지 중 Fundamental matrix을 계산했습니다. 그에서 나는 triangulate에 3D 공간에있는 대응 심상 점을 필요로한다. 내가 이해하는 바에 따르면 이미지 카메라의 회전과 평행 이동이 필요합니다. 가장 쉬운 방법은 calibrate the cameras 일 것입니다. 그런 다음 이미지를 찍으십시오.하지만이 단계가 필요하므로 내 응용 프로그램에 너무 까다로운 내용입니다.3D 근본적인 행렬의 대응

이렇게하면 auto (self) camera calibration이됩니다. 나는 bundle adjustment에 대한 언급을보고 있지만, An Invitation to 3D Vision에는 초기 변환과 회전이 필요해 보입니다. 교정 된 카메라가 필요하거나 내 이해가 부족하다고 생각하게 만듭니다.

그럼 내 질문은 3D 공간으로 이미지 포인트를 재 투영/삼각 분할 할 수 있도록 자동으로 회전/평행을 추출 할 수있는 방법입니다. 모든 MATLAB 코드 또는 의사 코드는 환상적입니다. 당신의 3D 공간이 선택 될 수있는 경우

답변

8

기본 행렬을 사용하여 카메라 행렬을 복구하고 이미지에서 3D 점을 삼각형화할 수 있습니다. 그러나 얻을 수있는 재건은 유클리드 유적이 아닌 투영 재구성 일 것임을 알아야합니다. 교차 비, 선 교차점 등과 같은 원래 장면에서 사영 불변량을 측정하는 것이 목표이지만 각도와 거리를 측정하기에 충분하지 않은 경우 유용합니다 (카메라를 보정해야합니다).

Hartley and Zisserman's textbook에 액세스 할 수 있으면 9.5.3 단원을 검토하여 기본 행렬에서 투영 재구성을 계산할 수있는 카메라 행렬 쌍으로 이동할 필요가 있는지 확인하십시오. 이마의 책 6.4 절에도 같은 내용이 나와있다.) source code for the book's algorithms is available online 이래로 함수 vgg_P_from_F, vgg_X_from_xP_lin 및 vgg_X_from_xP_nonlin을 확인하고자 할 수 있습니다.

+0

Hartley/Zisserman 서적에서 알고리즘 12.1 "최적 삼각법"을 사용하여 끝 냈습니다. "Matlab 용 카메라 보정 도구 상자"로 카메라 보정 – yxk

1

임의의 첫 번째 카메라 행렬을 설정할 수

P = [I | 0] 

아니 번역, 아니 회전 등. 그러면 카메라 1에서 정의 된 좌표계가 유지됩니다. 그러면 두 번째 카메라를 보정하기가 너무 어려워서는 안됩니다.

+0

번들 조정과 같은 알고리즘을 사용 하시겠습니까? – yxk

+0

가능한 한 첫 번째 이상적인 카메라가 주어진 경우 두 번째 카메라의 회전을 찾기 위해 일종의 캘리브레이션 객체를 사용하려고합니다. 그렇지 않으면 번들 조정을 시작하는 것이 좋습니다. –

+1

보정을 수행하려면 바둑판처럼 일종의 보정 개체를 사용해야합니다.이것은 여전히 ​​비 보정 객체로 수행 할 수 있지만 많은 수의 정확한 * 일치를 추출 할 수 없다면 결과는 좋지 않습니다. 추가 정보에서 번들 조정은 캘리브레이션 결과가 존재하면이를 향상시키는 알고리즘입니다. – yxk

5

피터의 MATLAB 코드가 당신에게 많은 도움이 될 것입니다 생각 :

http://www.csse.uwa.edu.au/~pk/research/matlabfns/

베드로가 기본 매트릭스 솔루션의 수를 올렸습니다. 원래의 알고리즘은 당신이 그것을에있는 동안 기본 매트릭스 노래를 참조하는 것을 잊지 마세요,

http://www.amazon.com/exec/obidos/tg/detail/-/0521540518/qid=1126195435/sr=8-1/ref=pd_bbs_1/103-8055115-0657421?v=glance&s=books&n=507846

또한 zisserman 책에서 언급되었다 :에

http://danielwedge.com/fmatrix/

한 좋은 구성을 내 정직한 의견!