2011-03-19 5 views
3

하나의 카메라를 사용하여 동일한 객체의 두 이미지를 다른 시각에서 가져 와서이 두 장면과 관련된 행렬을 계산할 수 있어야합니다. OpenCV에서 어떻게 완성 되었습니까?여러 이미지의 카메라 보정

+0

아마도 당신이 찾고있는 [cv :: calibrateCamera'] (http://opencv.willowgarage.com/documentation/cpp/camera_calibration_and_3d_reconstruction.html#cv-calibratecamera) 문서를보십시오. –

답변

1

상기 객체가 OpenCV에서 사용되는 체스 보드와 같은 교정 패턴 인 경우 ChrisO가 언급 한 카메라 보정 루틴은 카메라 내장 함수 (초점 거리, 주점 및 렌즈 왜곡)와 카메라 외인성 (그들은 상대적으로 공간에있다).

일반적인 개체가있는 경우 cvFindFundamentalMat에 입력 할 수있는 2D 대응 세트를 만들어야합니다. 이것은 두 가지 관점을 관련시키는 기본 매트릭스를 찾습니다. 즉, 카메라 1의 각 점 x와 카메라 2의 해당 점 x '에 대해 x'Fx = 0입니다. 유사하게 epipoles 등을 찾을 수 있습니다.이 점은 8 점 쌍의 점 대응을 필요로하는 8 점 알고리즘을 사용합니다.

MSER/Affine Harris + SIFT의 라인을 따라 수동으로 또는 강력한 기능 추출기 및 일치 프로그램을 사용하여 대응할 수 있습니다.

+0

체스 판과 같은 보정 패턴을 사용하고 두 이미지의 매개 변수를 얻은 경우 어떻게 서로 관련 지을 수 있습니까? 2 개의 카메라를 동시에 사용하는 경우, 2 개의 이미지가 아니라 2 개의 행렬을 어떻게 구해야하고, 어떤 상수 C에 대해 x '= Cx 점을 알고 있습니까? – soxarered

+0

카메라 축이 정렬되어 있지 않으면 일정한 스케일링만으로는 충분하지 않습니다. 그러나 카메라 A의 모든 점 P에 대해 카메라 B에서 [에피 폴라 선] (http://en.wikipedia.org/wiki/Epipolar_geometry#Epipolar_line)을 찾을 수 있습니다.이 점은 선인 이유는 A 점의 깊이를 말할 수 없다는 것입니다. – peakxu

+0

이론 상으로는 x 점에서 깊이를 말할 수 있다면 (깊이 카메라도 가지고 있다고 말할 수 있습니다), 각 점에 대해 행렬을 얻을 수 있습니까? x는 A에서, x '는 B에서 x = Mx'입니다. 여기서 M은 그와 관련된 몇 가지 매트릭스입니까? 이것이 내가 진정으로 관심을 갖고있는 것입니다. – soxarered