튀빙겐 대학교의 Lecture: Computer Vision 3.2을 공부하며 정리한 자료입니다.
와우 태어나서 처음보는... 이해하기 쉽지 않았다..
Epipolar Geometry
- Epipolar Geometry는 두 개의 카메라 이미지를 사용하여, 두 이미지 사이의 기하학적 관계를 파악하고 카메라의 위치 및 방향을 추정하는 것.
- $\mathtt{R}$은 회전 행렬(rotation matrix)을 나타내는 변수이며, t는 평행 이동 벡터(translation vector)를 나타내는 변수.
- 3D point $\mathtt{x}$는 image 1에서 $\overline{x_1}$로 image 2에서는 $\overline{x_2}$로 투영된다.
- 카메라 원점 $O_1$, $O_2$ 두 개를 이은 선과 이미지 평면이 만나는 점을 epipole이라고 한다. 그리고 3D point $\mathtt{x}$와 카메라 원점을 이어서 생긴 평면을 epipolar plane이라고 한다.
- Epipole과 투영점($\overline{x_1}$, $\overline{x_2}$)를 이은 선을 epipolar line이라고 한다. 아래 [그림 2]에서 파란선이다. Epipolar line은 epipolar plane과 이미지 평면의 교선으로 볼 수도 있다. 그리고 epipolar line은 모든 epipole을 지난다.
- 모든 epipolar line은 epipole을 지난다. epipole은 다른 이미지에 대한 모든 epipolar lines의 기하학적 중심점으로 볼 수 있다는 뜻이다.
우선 $\propto$가 proportional(비례항)임을 알아두자.
$K_i$는 카메라 $i$의 $3 \times 3$ 모양을 갖는 camera matrix이다. 그리고 $\tilde{x_i} = K_{i}^{-1} \overline{x_i}$는 카메라 $i$에서 이미지에서 특정한 픽셀 $x_i$에 대한 local ray direction을 의미한다. 이것은 픽셀 위치 $x_i$에서 카메라 중심으로 향하는 벡터와 같다.
[그림 3]에서 조금 헷갈릴만한 부분은 $\tilde{x_2}^\intercal [t] \times \mathtt{R} \tilde{x_1} \propto \tilde{x_2}^\intercal \times \tilde{x_2} = 0$이 어떻게 되냐는건데 위에 있는 $[t] \times \tilde{x_2} \propto [t] \times \mathtt{R} \tilde{x_1}$을 $[t] \times \mathtt{R} \tilde{x_1} \propto [t] \times \tilde{x_2}$로 생각해서 양쪽에 $\tilde{x_2}^\intercal$을 준다고 생각하면 된다.
이렇게 얻게된 식 $\tilde{x_2}^\intercal \times R \tilde{x_1} = 0$은 아래 [그림 4]처럼 이야기할 수 있다.
$\tilde{x_2}^\intercal \times R \tilde{x_1} = 0$라면 $\tilde{x_2}^\intercal \mathtt{E} \tilde{x_1} = 0$이라고 할 수 있고 그렇다면 $\tilde{\mathtt{E}} = [t] \times R$이다. 이 $\tilde{\mathtt{E}}$를 essential matrix라고 하고, $\tilde{x_2}^\intercal \mathtt{E} \tilde{x_1} = 0$를 epipolar constraint라고 한다. Epipolar constraint는 Epipolar line 위에 존재하는 포인트가 다른 카메라의 이미지 평면 상에 위치할 때 해당 포인트가 취할 수 있는 가능한 위치에 대한 제약 조건을 나타낸다.
$\tilde{l_2} = \tilde{E} \tilde{x_1}$은 essential matrix가 이미지 1에서 관찰된 포인트 $\tilde{x_1}$을 이미지 2에서 해당 포인트에 대응하는 epipolar line으로 매핑한다는 것을 의미한다. 그리고 위에서 $\tilde{x_2}^\intercal \mathtt{E} \tilde{x_1} = 0$이기 때문에 $\tilde{l_2} = \tilde{E} \tilde{x_1}$를 대입하면 $\tilde{x_2}^\intercal \tilde{l}=0$이라고 할 수 있다.
Epipole은 무조건 epipole line 위에 있으므로 $\tilde{e}^\intercal \tilde{l_2} = 0$이다. 그리고 [그림 4]에서 알게된 $\tilde{l_2} = \tilde{E}\tilde{x_1}$을 $\tilde{e}^\intercal \tilde{l_2} = 0$ 여기에 넣으면 $\tilde{e}^\intercal \tilde{l_2} = \tilde{e}\tilde{E}\tilde{x_1} = 0$이 된다.
그리고 모든 $\tilde{x_1}$에 대해서 $\tilde{e}\tilde{E} = 0$이 된다. 왜냐하면 바로 위 식 $\tilde{e}^\intercal \tilde{l_2} = \tilde{e}\tilde{E}\tilde{x_1} = 0$에서 $\tilde{x_1}$이 뭐든간에 0이 되기 때문.
Estimating the Epipolar Geometry
우리는 이미지에서 N개의 대응점 쌍에 대한 정보가 있을 때, 이를 이용하여 $\tilde{E}$ 행렬을 9개의 요소로 이루어진 동차 방정식 $N$개로부터 복원할 수 있다.
$E$를 이용해서 $t$를 얻을 수 있다.
여기까지가 Essential Matrix $E$에 대한 내용이었는데 정리해보자면 다음과 같다.
- Essential matrix : 카메라 두 대의 위치와 대응되는 이미지 포인트들 사이의 관계를 나타내는 행렬.
- Essential matrix는 카메라 간의 상대적인 위치 및 자세를 추정하는 데 사용된다.
이제 아래부터는 Fundamental Matrix이다. 만약 [그림 3]에서 봤던 것과 달리 카메라 캘리브레이션 $K_i$를 모른다면 local ray directions $\tilde{x_i} = K_i^\intercal{-1} \overline{x_i}$를 $\overline{x_i}$ 만으로 알아낼 수는 없다. 그러면 essential matrix는 [그림 8]에 나온 식처럼 될 것이고 이때 $K_2^{- \intercal}EK_1^{- 1}$를 fundamental matrix라고 한다. 즉, 카메라 파라미터가 없을 때 두 개의 카메라 이미지 사이의 대응점 간의 관계를 나타내는 행렬이 fundamental matrix이다. 이 행렬은 카메라의 상대적인 위치와 자세를 나타내며, 두 이미지에서 대응되는 점을 이용하여 계산된다.
두 이미지 간에서 대응되는 점들은 해당하는 epipolar line 위에 위치합니다.
Triangulation
카메라 내부 파라미터, 외부 파라미터가 모두 주어졌을 때, 어떻게 3D geometry를 알 수 있을까?
위 [그림 11]에서 처럼 $\overline{x_1}$와 $\overline{x_2}$로 카메라 원점으로부터 ray가 쏘아진다고 할 때 3D point인 $x$에서 만난다. 하지만 실제로는 노이즈 때문에 한 점 $x$에서 만나지 않을 수도 있다. 즉, 두 ray가 교차하지 않을 수도 있다.
$\tilde{x_i}^s = \tilde{P_i}\tilde{x_w}$를 3D world point $\tilde{x_w}$를 i번째 카메라에 투영시킨 point $\tilde{x_i}^s$를 표현한 식입니다. 하지만 [그림 12]에서 보는 것과 같이 Triangulation을 도입해서 역으로 계산해도 오차 때문에 결국 한 점이 나오지 않을 수도 있다.
따라서 좀 더 정확하게 계산을 하려면 관측치(픽셀 위치)와 추청치(캘리브레이션 행렬로 투영한 추정 픽셀값) 간의 오차를 최소화하는 함수를 정의해서 더 정확한 값으로 갱신해야한다.
Triangulation Uncertainty
삼각측량(Triangulation)은 카메라의 상대적인 위치에 따라 다르게 작동한다.
- Ray가 평행(parallel)할 수록 불확실성(shaded region)이 증가한다.
- 이는 주변 뷰(nearby views)에서 특징점 매칭(feature matching)이 더 쉬워지는 대신 triangulation이 더 어려워진다는 점에서 트레이드오프가 있다.
Reference
- 튀빙겐 대학교 computer vision lecture
- [영상 Geometry #7] Epipolar Geometry
- CS231A Course Notes 3: Epipolar Geometry
- 선형 삼각측량법 (Linear Triangulation)