[Stereo Vision] Epipolar Geometry (에피폴라 기하학)
참고자료 1 : http://docs.opencv.org/master/da/de9/tutorial_py_epipolar_geometry.html
참고자료 2 : http://darkpgmr.tistory.com/83
Epipolar Geometry (에피폴라 기하학)
에피폴라 기하학 개념은 스테레오 비전분야에서 3차원 영상을 다룰 때 필수적이라고 할 수 있는 개념이다. pin-hole camera를 이용하여 이미지를 얻을 때 이미지의 depth 같은 정보를 잃어버리게 된다.
이는 Epipolar Geometry 개념을 이용하여 depth 정보를 얻을 수 있게 된다. 에피폴라 기하학을 다룰 때 두 개의 카메라를 아래와 같은 그림처럼 배치하고 depth information을 생성하기 위해 계산을 수행하게 된다.
만일 카메라를 한 대만(왼쪽 카메라 기준) 사용하게 되면 너무나 당연한 이야기지만, 그림의 점 x와 부합되는 3D point를 찾을 수 없게 된다. 왜냐면 선분 OX에 있는 모든 점들은 평면상에서 같은 지점에 projection 되기 때문이다. 그러니까 오직 카메라 한 대로만으로는 depth 정보를 얻을 수 없다는 이야기이다. 그러나 그림의 오른쪽 카메라에서 선분 OX에 있는 다른 점들은 오른쪽 평면에 대해 x'로 나타내어지게 된다. 그래서 점 O, O', 그리고 선분 OX상에 있는 점 x 까지 세가지 Point는 삼각형 구도(Triangulation, 삼각측량법)를 이루게 된다. 이는 두 이미지 평면 사이의 기하학적 관계가 주어지고, 두 이미지 평면상의 매칭쌍 P, P'가 주어지면 이로부터 3차원 공간자표를 결정 할 수 있다는 것을 말한다.
이렇게 만들어진 삼각형 구도 중 맨 꼭대기에 있는 x들은 depth information을 생성할 수 있게 된다. 여기까지가 에피폴라 기하학의 전체적인 개념이다. 선분 OX에서 점x가 오른쪽 평면과 만나는 점을 x'라고 하고, 이 점x'들을 이은 선분을 l'라고 한다. 이 선분을 epiline(epipolar line)이라고 한다. 이는 오른쪽 평면에서 점x를 찾을 수 있게 된다. 그리고 에피폴라 기하학에서 에피폴라 라인과 중요한 것이 Epipolar Constraint(에피폴라 제약)이다. 이는 두 이미지 평면 사이의 기하학적 관계에 따른 Constrain(제약)이다. 이는 모든 점들은 다른 이미지에서 에피폴라 라인에 해당하는 것을 가지고 있어야 한다는 것이다. XOO'를 Epipolar Plane(에피폴라 평면)이라고 부른다.
점 O와 O'는 카메라의 중심부(Center)이다. 위에 주어진 환경으로부터 우리는 카메라 점 O'에 대해 보여지는 투영이 점e에서 왼쪽이미지에 보여질 수 있다. 이를 Epipole라고 한다. 즉, 두 카메라 원점을 잇는 선과 이미지 평면이 만나는 점 e, e'를 epipole이라고 하고, 그 epipole을 잇는 직선 l, l'을 epiline(에피폴라 라인)이라고 하는것이다. Epipole은 카메라 중심부와 이미지 평면을 통해 교차되는 점이다. 우리는 이미지에서 epipole을 찾을 수 없다. 하나의 카메라는 다른 카메라를 볼 수 없기 때문이다. (당연한 얘기!)
모든 Epilines(에피폴라 라인)은 Epipole을 통과하게 된다. 그리고 epipole을 찾기 위해서 우리는 많은 에피폴라 라인과, 그들의 교차점을 찾을 수 있다.
그리고 또한, 에피폴라 라인과 에피폴을 찾기 위해 focus를 맞춰야한다. 그러나 그것을 찾기 위해서는 두가지 ingredients가 필요하다. 바로 Fundamental Matrix (F)와 Essential Matrix (E)이다. Essential Martrix는 translation과 rotation에 대한 정보를 포함하고 있다. 이는 글로벌좌표에서 두번째 카메라의 상대적인 위치를 알 수 있다. 아래 그림과 같다.
그 다음 Fundamental Matrix는 Essential Matrix와 같은 정보를 포함하고 있다. 게다가 두 카메라의 intrinsics(내장 함수)에 대한 정보를 담고 있다. 즉, Fundamental Matrix F는 다른이미지에서 epiline의 점을 보여준다. 이는 두 이미지로부터 매칭되는 점으로부터 계산될 수 있다. 이는 알고리즘에 따라 8쌍의 매칭점을 필요로 하는 경우도 있고, 더 많은 Points(점들)를 필요로 한다면 RANSAC 알고리즘을 이용하여 강건한 결과를 얻을 수 있다.
OpenCV 문서를 그냥 쌩으로 해석해서 정리도안하고 쓰다보니 내용은 뒤죽박죽인데 나는 이해가 됬는데 정작 읽는 사람들은 이해가 안될지도 모르겠다. 그냥 기본적인 에피폴라 기하학 개념만 알고싶은 사람들에게 도움이 될만한 글이다. 더 자세히 알아보기 위해선 Fundamental Matrix, Essential Matrix, Epiline, Epipolar Constraint 와 같은 개념을 하나씩 찾아보면서 공부하는게 좋을 듯 하다.
'AI Research Topic > 3D Reconstruction' 카테고리의 다른 글
[Stereo Vision] kinect 설치하기 (Visual Studio 2015, Windows 10, 64 bit, usb 3.0) (0) | 2017.01.19 |
---|---|
[3D Reconstruction] Trifocal tensor 정리 (0) | 2016.12.27 |
[Stereo Vision] Disparity Map 생성 (12) | 2016.11.04 |
[Stereo Vision] Stereo Image Processing (0) | 2016.07.12 |
[3D Reconstruction] 3D Reconstruction 접근법 (1) | 2016.04.12 |