본문 바로가기
DL|ML

[Tübingen ML] Computer Vision - Lecture 3.2 (Structure-from-Motion: Two-frame Structure-from-Motion)

by 이든Eden 2023. 3. 21.

튀빙겐 대학교의 Lecture: Computer Vision 3.2을 공부하며 정리한 자료입니다.

 

 

와우 태어나서 처음보는... 이해하기 쉽지 않았다..

 

Epipolar Geometry

 

[그림 1] Epipolar Geometry

 

  • Epipolar Geometry는 두 개의 카메라 이미지를 사용하여, 두 이미지 사이의 기하학적 관계를 파악하고 카메라의 위치 및 방향을 추정하는 것.
  • R은 회전 행렬(rotation matrix)을 나타내는 변수이며, t는 평행 이동 벡터(translation vector)를 나타내는 변수.
  • 3D point x는 image 1에서 x1로 image 2에서는 x2로 투영된다.
  • 카메라 원점 O1, O2 두 개를 이은 선과 이미지 평면이 만나는 점을 epipole이라고 한다. 그리고 3D point x와 카메라 원점을 이어서 생긴 평면을 epipolar plane이라고 한다.
  • Epipole과 투영점(x1, x2)를 이은 선을 epipolar line이라고 한다. 아래 [그림 2]에서 파란선이다. Epipolar line은 epipolar plane과 이미지 평면의 교선으로 볼 수도 있다. 그리고 epipolar line은 모든 epipole을 지난다.
  • 모든 epipolar line은 epipole을 지난다. epipole은 다른 이미지에 대한 모든 epipolar lines의 기하학적 중심점으로 볼 수 있다는 뜻이다.

[그림 2] 이해를 도울 Epipolar Geometry 사진(출처 : CS231A Course Notes 3: Epipolar Geometry)

 

 

우선 가 proportional(비례항)임을 알아두자.

 

[그림 3]

 

Ki는 카메라 i3×3 모양을 갖는 camera matrix이다. 그리고 xi~=Ki1xi는 카메라 i에서 이미지에서 특정한 픽셀 xi에 대한 local ray direction을 의미한다. 이것은 픽셀 위치 xi에서 카메라 중심으로 향하는 벡터와 같다.

 

[그림 3]에서 조금 헷갈릴만한 부분은 x2~[t]×Rx1~x2~×x2~=0이 어떻게 되냐는건데 위에 있는 [t]×x2~[t]×Rx1~[t]×Rx1~[t]×x2~로 생각해서 양쪽에 x2~을 준다고 생각하면 된다.

 

이렇게 얻게된 식 x2~×Rx1~=0은 아래 [그림 4]처럼 이야기할 수 있다.

 

[그림 4]

 

x2~×Rx1~=0라면 x2~Ex1~=0이라고 할 수 있고 그렇다면 E~=[t]×R이다. 이 E~를 essential matrix라고 하고, x2~Ex1~=0를 epipolar constraint라고 한다. Epipolar constraint는 Epipolar line 위에 존재하는 포인트가 다른 카메라의 이미지 평면 상에 위치할 때 해당 포인트가 취할 수 있는 가능한 위치에 대한 제약 조건을 나타낸다.

 

l2~=E~x1~은 essential matrix가 이미지 1에서 관찰된 포인트 x1~을 이미지 2에서 해당 포인트에 대응하는 epipolar line으로 매핑한다는 것을 의미한다. 그리고 위에서 x2~Ex1~=0이기 때문에 l2~=E~x1~를 대입하면 x2~l~=0이라고 할 수 있다.

 

 

[그림 5]

 

Epipole은 무조건 epipole line 위에 있으므로 e~l2~=0이다. 그리고 [그림 4]에서 알게된 l2~=E~x1~e~l2~=0 여기에 넣으면 e~l2~=e~E~x1~=0이 된다.

 

그리고 모든 x1~에 대해서 $\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

 

[그림 6]

우리는 이미지에서 N개의 대응점 쌍에 대한 정보가 있을 때, 이를 이용하여 E~ 행렬을 9개의 요소로 이루어진 동차 방정식 N개로부터 복원할 수 있다.

 

 

[그림 7]

E를 이용해서 t를 얻을 수 있다.

 

여기까지가 Essential Matrix E에 대한 내용이었는데 정리해보자면 다음과 같다.

  • Essential matrix :  카메라 두 대의 위치와 대응되는 이미지 포인트들 사이의 관계를 나타내는 행렬.
  • Essential matrix는 카메라 간의 상대적인 위치 및 자세를 추정하는 데 사용된다.

 

이제 아래부터는 Fundamental Matrix이다. 만약 [그림 3]에서 봤던 것과 달리 카메라 캘리브레이션 Ki를 모른다면 local ray directions xi~=Ki1xixi 만으로 알아낼 수는 없다. 그러면 essential matrix는 [그림 8]에 나온 식처럼 될 것이고 이때 K2EK11를 fundamental matrix라고 한다. 즉, 카메라 파라미터가 없을 때 두 개의 카메라 이미지 사이의 대응점 간의 관계를 나타내는 행렬이 fundamental matrix이다. 이 행렬은 카메라의 상대적인 위치와 자세를 나타내며, 두 이미지에서 대응되는 점을 이용하여 계산된다.

 

[그림 8]

 

 

[그림 10]

두 이미지 간에서 대응되는 점들은 해당하는 epipolar line 위에 위치합니다.

 

 

Triangulation

카메라 내부 파라미터, 외부 파라미터가 모두 주어졌을 때, 어떻게 3D geometry를 알 수 있을까?

[그림 11]

 

위 [그림 11]에서 처럼 x1x2로 카메라 원점으로부터 ray가 쏘아진다고 할 때 3D point인 x에서 만난다. 하지만 실제로는 노이즈 때문에 한 점 x에서 만나지 않을 수도 있다. 즉, 두 ray가 교차하지 않을 수도 있다.

 

[그림 12]

xi~s=Pi~xw~ 3D world point xw~를 i번째 카메라에 투영시킨 point xi~s를 표현한 식입니다. 하지만 [그림 12]에서 보는 것과 같이 Triangulation을 도입해서 역으로 계산해도 오차 때문에 결국 한 점이 나오지 않을 수도 있다. 

 

[그림 13]

 

따라서 좀 더 정확하게 계산을 하려면 관측치(픽셀 위치)와 추청치(캘리브레이션 행렬로 투영한 추정 픽셀값) 간의 오차를 최소화하는 함수를 정의해서 더 정확한 값으로 갱신해야한다.

 

Triangulation Uncertainty

 

[그림 14]

삼각측량(Triangulation)은 카메라의 상대적인 위치에 따라 다르게 작동한다.

  • Ray가 평행(parallel)할 수록 불확실성(shaded region)이 증가한다.
  • 이는 주변 뷰(nearby views)에서 특징점 매칭(feature matching)이 더 쉬워지는 대신 triangulation이 더 어려워진다는 점에서 트레이드오프가 있다.

 

Reference