새소식

Perception

Essential Matrix 와 Fundamental Matrix

  • -
두 장의 이미지로 3D 를 복원하기 위해 알아야 하는 카메라 매트릭스

 

 

이미지를 통해서 3차원 포인트를 복원하기 위해서는

1) 2d 이미지 위 특징점 사이의 매칭 정보 

2) 해당 카메라 pose 사이의 자세 정보 (Rotation / Translation) 정보

를 알아야 합니다. 

Epiploar Line

이때 Epipolar Geometry 에 의해서 , P 점에 대응되는 매칭점의 후보군은 Epipolar Line 위에서 찾을 수 있습니다. 

 

Intrinsic , Extrinsic Matrix

카메라 파라미터는 Extrinsic Matrix, Intrinsic Matrix 로 구성됩니다. 

x norm : 원점에서 x 로 가는 방향 벡터

Extrinsic Matrix 는 World 좌표계의 3차원 포인트를 나의 카메라 좌표계로 옮기는 매트릭스입니다. 따라서 해당 Rotation , Translation 정보를 담은 [ R | t ] 행렬로 표현됩니다. 

 

Intrinsic Matrix 는 내 카메라 좌표계로 옮겨진 3차원 포인트를 나의 이미지 Plane 에 투영시키는 매트릭스입니다. 

Essential Matrix 

Camera Parameter 를 알고 있는 경우

Essential Matrix 는 서로 다른 카메라 좌표 간의 Rotation / Translation 정보를 내포하고 있는 매트릭스입니다. 

 

 

위 이미지에서 회색 영역으로 표시된 부분이 Epipolar Plane 입니다. 벡터 x, x', t 는 모두 Epipolar Plane 위에 있습니다. 

 

이때 t 와 x' 를 외적한 새로운 벡터인 n 이 있다고 생각해 봅시다. 외적이기 때문에 x' 와 n 을 내적하면 0 이 됩니다. 

 

\(x' \bullet (t  \times x') = 0\)

\(x' \bullet (t \times (Rx+t)) = 0\)

 

따라서 다음과 같은 결과가 나옵니다.  

 

\(x' ^{T}\bullet (t \times Rx) = 0\)

 

이때 t 를 외적하는 부분을 \([ t_{x}] \) 로 치환하면, 결국 \(x'^{T} [ t_{x}] R x = 0 \) 라는 식을 얻을 수 있습니다.

 

\(E =  [ t_{x}] R  \)

\(x'^{T}Ex = 0\)

 

따라서 결론적으로 대응점과 기존점을 이용해서 E 라는 새로운 매트릭스를 찾아낼 수 있는데, 이 Essential Matrix (E) 는 Rotation 과 Translation 에 대한 정보를 가지고 있다는 것입니다. 

 

Essential Matrix 를 안다면 두 카메라 간의 Rotation 과 Translation 을 알 수 있습니다. 

또한 이 식에서 \(Ex\) 는 \( x'^{T} \) 라는 점이 포함되어 있는 Epipolar Line 을 뜻합니다. 

이 과정에서 사용되는 포인트들은 모두 Instrinsic parameter 를 곱해서 물리적 공간에서 Normalized 된 좌표임을 기억할 필요가 있습니다. (pixel coordinate 상의 좌표가 아닙니다.)

Fundamental Matrix

Camera Parameter 를 모르는 경우

그렇다면 물리적 공간 말고, 특징점 매칭을 통해서 서로 상관관계를 알고 있는 pixel 좌표계의 점들을 바로 사용하려면 어떻게 해야 할까요?

즉, intrinsic parameter 를 모르는 경우에는 어떻게 R/T 값을 구할 수 있을까요?

 

^ (hat) 을 붙인 기호를 픽셀 좌표계의 점들이라고 하겠습니다. 즉, \(\widehat{x} =  \begin{bmatrix}u  \\v \\ 1  \end{bmatrix} \) 입니다. 

Euclidean Coordinate 의 점에 Intrinsic parameter 를 곱해서 Image Coordinate 상의 점을 얻었기 때문에, 이번에는 반대로 역행렬을 곱해주면 됩니다. 

이와 같은 과정을 거쳐서 Essential Matrix 를 통해 Fundamental Matrix 를 구할 수 있습니다. 

Fundamental Matrix 로 Epipolar Line 을 그리면, 이는 이미지 상에서 그려지는 선이 됩니다. 

 

Essential Matrix 에 우리가 원하는 R/T 값이 있지만, Fundamental Matrix 가 더 구하기 쉽기 때문에 Fundamental Matrix 를 구하고 이를 이용해 Essential Matrix 를 구하기도 합니다. 

대응점을 가지고 Fundamental Matrix 를 구하기

1. 첫 번째 SVD : 매칭점들을 가지고 F 를 구하기 위한 SVD

 

이때까지의 과정을 통해, Fundamental Matrix 는 \(x'^{T} Fx = 0 \)라는 식을 만족하는 F 임을 알 수 있었습니다. 

따라서 대응점을 가지고 다음과 같은 수식을 만들어낼 수 있습니다.

이 A 를 SVD (Singular Value Decomposition) 를 수행하면 \(Af\)를 최소화하는 f 를 얻을 수 있습니다. 

 

2. 두 번째 SVD : F 를 rank 2 로 만들어 주기 위한 SVD

 

F 가 Full Rank 일 경우, 사진처럼 Epipolar Line 이 한 점으로 수렴되지 않는 문제가 발생합니다. 따라서 F 를 rank 2 로 만들어 주기 위해서, 마지막 Singular Value 를 0 으로 만들어서 강제로 rank 를 줄여줘야 합니다. 

여기서 Epipolar Line 이 만나는 점이 "다른 카메라가 있는 위치" 가 됩니다.

 

Essential Matrix 구하기

 

1) Fundamental Matrix 를 통해 구하기

 

\(E = K'^{T}FK\)

 

카메라 parameter 를 알고 있는 상황에서 Fundamental Matrix 를 먼저 구하고 이를 통해서 Essential Matrix 를 구할 수도 있고,  

 

2) Least - Square method 를 통해서 직접 구하기

 

\( \widehat{x}^{T}E \widehat{x} = 0  \)

 

다음과 같이 대응점을 통해서 Essential Matrix 를 구할 수 있습니다. 

 

Essential Matrix 를 통해 Pose Estimation 하기

우리는 Essential Matrix 를 Decomposition 함으로써 Rotation / Translation 을 구할 수 있습니다. 

다양한 방법이 있지만, 책 <Multiple View Geometry in Computer Vision> 책에서 소개하는 내용은 다음과 같습니다. 

 

 

 

 


위 내용은 경희대학교 소프트웨어융합학과 황효석 교수님의 2023년 <3D데이터처리> 수업 내용을 요약한 것입니다. 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.