1. Definition
3차원 scene과 이 scene을 보고 있는 두 개의 카메라가 있을 때, 우리는 3D 좌표와 각 카메라의 이미지 평면에 투영된 2D 좌표를 이용하여 두 카메라 사이의 기하학적 관계를 설명할 수 있다. 이 두 카메라 사이의 기하학적 관계를 찾는 것을 epipolar geometry라고 한다.

위 그림에서 표시된 변수들은 다음과 같다.
-
C,C′ : 카메라 중점
-
e,e′ : Epipoles
-
xe,x′e′ : Epipolar lines
-
△XCC′ : Epipolar plane
Epipolar geometry를 통해 두 카메라 및 두 이미지 사이의 변환관계를 구할 수 있다면, 두 개의 카메라에서 각 이미지 위의 좌표를 향해 ray를 쏴서 3D reconstruction을 진행할 수 있으므로 3D vision을 공부한다면 꼭 한 번 짚고 넘어가야 하는 개념이다.
2. Fundamental matrix
Fundamental matrix는 C,C′,X 가 있을 때, 대응점 쌍 (x,x′)에 대해 유일하게 결정되는 3×3 행렬이다.
x′TFx=0
이 행렬을 안다면, 두 이미지 사이의 대응점 쌍을 찾을 수 있다. 즉, 한 점 x와 F가 주어지면 x′을 추론하는게 가능해진다.
2.1. 8-point algorithm
위 식을 다음과 같이 변형할 수 있다.
x′TFx=0
[xn′yn′1]⎣⎢⎡F11F21F31F12F22F32F13F23F33⎦⎥⎤⎣⎢⎡xnyn1⎦⎥⎤=0
(F11xn+F12yn+F13)xn′+(F21xn+F22yn+F23)yn′+F31xn+F32yn+F33=0
[xnxn′xn′ynxn′xnyn′ynyn′yn′xnyn1]⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡F11F12F13F21F22F23F31F32F33⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=0
Fundamental matrix는 scale이 정해져있지 않다. 즉, F나 임의의 상수 k가 곱해진 kF나 같은 결과를 뱉는다.
x′TFx=x′T(kF)x=0
그래서 총 9개의 값 중 scale인 F33을 제외한 8개의 파라미터만 추정하면 되므로, 8개의 feature point가 주워진다면 fundamental matrix를 구할 수 있다.
⎣⎢⎢⎡x1x1′⋮x8x8′x1′y1⋮x8′y8x1′⋮x8′x1y1′⋮x8y8′y1y1′⋮y8y8′y1′⋮y8′x1⋮x8y1⋮y81⋮1⎦⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡F11F12F13F21F22F23F31F32F33⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤=0AF=0
행렬 A는 언제나 full rank일 것이다. A에 Singular Value Decomposition (SVD) 를 적용하여 UDVT로 분리할 수 있는데, 여기서 VT의 마지막 열을 다시 3×3 으로 reshape 해준다면 우리가 구하는 fundamental matrix F가 된다.
3. Essential matrix
Fundamental matrix는 uncalibrated인 상황에서 사용된다면, essential matrix는 calibrated인 상황에서 사용되므로 카메라의 파라미터를 알고있다고 가정한다.
Fundamental matrix를 구하기 위해 사용되는 x는 world coordinate에서 정의된 X에서 camera coordinate으로 변환하는 extrinsic parameters R,t, camera coordinate에서 pixel coordinate으로 변환하는 intrinsic parameters K 를 이용하여 구해진다.
x=K[R∣t]X
Essential matrix는 camera coordinate에서의 대응점 x,x′이 주어졌을 때의 fundamental matrix가 된다. K[R∣t]를 P라 하면
x=K−1PX
x′TEx=0
캘리브레이션이 되어있으므로 우리는 K를 알고 있고, fundamental matrix와 essential matrix는 E=K′TFK라는 관계를 가지고 있어서 쉽게 계산할 수 있다.
4. Pose estimation
Essential matrix E를 분해하여 두 카메라 좌표계 사이의 변환관계를 설명하는 R,t를 구할 수 있다.
우선 E는 SVD를 통해 분해할 수 있다. 여기서 essential matrix의 특성으로 인해 두 개의 singular value는 같고, 하나는 0이 된다.
E=U⎣⎢⎡100010000⎦⎥⎤VT(up to scale)
여기서 ⎣⎢⎡0−10100001⎦⎥⎤로 구성된 행렬 W를 이용하여
R1=UWVTR2=UWTVTt=U⎣⎢⎡001⎦⎥⎤or−U⎣⎢⎡001⎦⎥⎤
이렇게 최종 R,t 후보를 구하게 된다. 이들 중 복원되는 3D 좌표가 가장 많은 R,t가 최종 R,t가 된다.
이해가 잘됩니다