두개의 카메라를 이용하여 카메라의 이동 위치와 자세를 계산할 목적으로 다음과 같이 로지텍 QuickCam Pro c920을 두 개 이어붙여 스테레오 시스템을 만들었습니다. 하지만 두 카메라를 물리적으로 최대한 평행하게 정렬하더라도 다양한 왜곡 요인에 의해 행 정렬된 영상을 얻기는 불가능 하다고 봐야할 것입니다. 그래서 스테레오 보정(Stereo Calibration)과 스테레오 조정(Stereo Rectification) 과정이 필요합니다. 스테레오 보정은 두 카메라 사이의 기하학적인 관계(두 카메라 간의 회전 행렬과 이동 벡터)를 계산하여 두 영상이 동일 평면상에 위치하도록 하는 것이고 스테레오 조정은 각각의 영상들을 교정(correcting)하여 영상들이 행-정렬된 카메라에서 촬영된 것처럼 바꾸는 과정입니다(참조: Learning OpenCV).
여기서는 OpenCV에서 제공하는 스테레오 조정과 보정 알고리즘들을 사용하여 Stereo Camera Calibration 프로그램을 만들어 보았습니다.
Stereo Camera Calibration 프로그램은 OpenCV 라이브러리의 samples/cpp/stereo_calib.cpp 파일을 참조하여 작성하였습니다. Calibration 결과는 extrinsics.yml 파일과 intrinsics.yml 파일에 저장됩니다.
Calibration 인자의 조정은 다음 내용을 참조하세요:
스테레오 보정 과정:
스테레오 보정과 조정 후:
왜곡 보정 후 영상에서 녹색 직선을 따라가며 좌우 영상을 매칭해 보면 수평이 잘 맞도록 정렬되어 있는것을 볼 수 있습니다. 이와 같이 두 카메라 이미지를 행-정렬 되도록 만들어 둠으로 한쪽 영상에서 찾은 특징점을 다른쪽 영상에서 오직 한 행만을 검사하면 되기때문에 정확도를 높일 수 있고 계산 시간도 단축하게 됩니다.