동일한 장면(scene)을 서로 다른 두 지점에서 촬영한 영상의 기하학적 관계, epipolar 기하학 정리

Epipolar Geometry

  • Epipolar geometry는 동일한 사물 또는 장면에 대한 영상을 서로 다른 두 지점에서 획득했을 때, 영상 A와 영상 B의 매칭쌍들 사이의 기하학적 관계를 다루는 것.

+full

Epipolar 기본 개념

epipole & epiline

  • 3차원 공간상의 한 점 가 영상 에서는 로 투영되고, 영상 에서는 에 투영될 때, 두 카메라 원점을 잇는 선과 이미지평면이 만나는 점 epipole이라 부른다.
  • 과 각 이미지평면의 각 투영점 을 잇는 직선 epipolar line (또는 epiline) 이라 한다.
  • 또, 3차원 공간의 점 와 각 카메라의 광학 중심 에서 세 점 은 항상 하나의 평면 위에 존재하며 이 평면을 epipolar plane 이라 한다.

epipolar 성질

  • 실제 좌표 는 이미지 로 투영되면서 깊이(Depth)정보를 손실하게되며, 이미지 에서 투영된 반드시 epipolar line 위에 존재한다.
  • 모든 epiline은 epipole을 통과한다.
  • 의 영상좌표 로부터 대응되는 의 영상좌표 을 유일하게 결정할 수는 없지만 이 지나는 직선인 epipolar line 은 유일하게 결정할수 있다.
  • epipole 과 epiline을 구하기 위해서는 Fundamental MatrixEssential Matrix가 필요하다.


Essential Matrix

  • Essential Matrix와 Fundamental Matrix는 두 카메라 사이의 기하학적 관계(Epipolar Geometry) 를 표현하는 행렬이다.
  • 임의의 두 지점에서 찍은 영상의 매칭점들은 항상 관계지을 수 있으며, 이 때 관계식을 Epipolar Constraint(또는 essential constraint)라 하고, 이 3x3 행렬 Essential Matrix라 부른다.
  • Essential Matrix는 camera intrinsic parameter 이 고려되지 않는 경우(= intrinsic parameter가 단위행렬)를 가정하므로, 정규 좌표계에서의 표현 방법이다.
  • Essential Matrix를 사용하기 위해서는 먼저 카메라의 내부 파라미터를 알고 있어야 픽셀 좌표를 정규화된 좌표로 변환할 수 있다.

Epipolar Constraint 정의 및 유도

  • Epipolar 제약식의 정의는 다음과 같다.
  • 는 3x3의 Essential Matrix
  • : 정규화된 좌표 ( ) = 단위벡터 = 방향벡터

좌표 변환과 카메라 모델

  • 3차원 공간의 한 점이 첫 번째 카메라 좌표계에서 라고 할 때, 두 번째 카메라 좌표계에서는 회전 과 이동 에 의해 다음과 같이 변환 된다.

외적을 이용한 공면성(Coplanarity) 조건

  • 공면성(Coplanarity)이란 세 개 이상의 점(또는 벡터)이 하나의 평면 위에 존재하는 성질을 말한다.
  • 변환 식에서 3개의 벡터 은 모두 같은 평면(epipolar plane) 안에 존재하며 스칼라 삼중곱이 0이라면 세 벡터가 같은 평면 위에 있다는 것을 의미한다.
  • 즉, 두 벡터의 외적 벡터와 벡터는 직교하므로 내적하면 0이 된다.
  • 이 것을 이용해 좌표 변환 벡터를 나타내면 다음과 같다.
  • 여기서, 사이의 관계를 정의하는 행렬 을 Essential Matrix라 한다.

Essential Matrix 증명

  • 임의의 두 카메라 좌표축 사이의 관계를 회전, 평행이동에 의해 관계지을 수 있으므로, 3x3 회전행렬 , 3x1 평행이동 벡터를 라 했을 때, 외부 공간상의 한 점을 두 카메라 좌표계에서의 관계를 아래와 같이 표현함 (는 A카메라 좌표계, 은 B카메라 좌표계)
  • 이 때, essential matrix E를 다음과 같이 정의하면
  • 다음을 만족함

Fundamental Matrix

  • Essential Matrix가 정규화된 이미지 평면에서의 매칭 쌍들 사이의 기하학적 관계를 설명하는 행렬이라면, Fundamental Matrix는 카메라의 내부 파라미터(Intrinsic Parameters)가 반영된 실제 픽셀 좌표계(Image Plane)에서 대응점 사이의 기하학적 관계를 표현하는 행렬이다.
  • 즉, Fundamental Matrix는 Essential Matrix와 동일한 에피폴라 기하를 픽셀 좌표계에서 표현한 행렬이다.

Fundamental Matrix 유도

  • 임의의 두 이미지 A, B에 대하여, 매칭되는 픽셀 좌표 , 사이에는 항상 다음과 같은 관계를 만족하는 행렬 가 존재하고, 이러한 행렬 를 fundamental matrix라 부름
  • 는 각 이미지 좌표의 동차 좌표(Homogeneous)
  • 이 때, 이미지 A에 대한 카메라 내부 파라미터 행렬을 , 이미지 B에 대한 카메라 행렬을 , 이미지 A, B 사이의 essential matrix를 라 하면 funamental matrix 는 다음과 같이 정의한다.
  • 즉, 를 픽셀 좌표계에서 표현한 버전이라 볼 수 있고, 픽셀 좌표계에서 표현된 를 각 카메라의 내부 파라미터를 이용해 정규 좌표계로 표현한 것이 가 된다.
  • 이 변환 관계를 이용하여 를 통해 를 유도할 수 있다.

Fundamental Matrix 를 이용한 epiline 계산

  • Fundamental Matrix 는 두 이미지 A와 B 사이의 기하학적 관계를 나타내며, 이미지 A의 한 점 에 대응하는 이미지 B의 epipolar line 을 계산하는 데 사용된다.
  • 점(Point)은 동차 좌표로 다음과 같이 표현된다.
  • 직선(Line)은 으로 표현되며, 동차좌표에서는 다음과 같이 표현된다.
  • 그리고 점 가 직선 위에 있다는 조건은 다음과 같다.
  • Fundamental Matrix와 Essential Matrix의 식을 다시 보면,
  • 여기서, 의 곱을 이라고 한다면 직선 방정식과 같은 형태로 표현 할 수 있다.
  • 즉, 이미지 B위의 한 점 는 직선(epipolar line) 위에 반드시 존재한다는 의미이다.

Essential Matrix와 Fundamental Matrix의 활용

Matrix주요 용도결과
Fundamental Matrix (F)두 이미지의 대응 관계(Epipolar Geometry) 계산Epipolar Line 생성
Essential Matrix (E)두 카메라의 상대 자세(Relative Pose) 계산Rotation R, Translation 방향 t 복원

Essential Matrix의 활용

  • (Relative Pose 복원) Essential Matrix를 SVD 분해하여 Rotation과 Translation을 얻어 카메라의 움직임을 계산한다. Essential Matrix에서 얻은 R,t는 두 카메라 좌표계 사이의 상대 이동(relative pose) 이다.
  • (SfM, SLAM) 카메라의 Pose 가 필요한 다양한 분야에서 사용된다.

Fundamental Matrix의 활용

  • (Epipolar Line 생성) 이미지 의 한 점에 를 곱한 것은 이미지 의 Epipolar Line이 된다. 대응점을 찾기 위해 Epipolar Line 위만 탐색하면 된다.
  • (잘못된 Feature 제거) 예측된 두 대응점에 대해 Epipolar Constraint인 가 0에 가깝지 않다면 잘못된 대응점이라 판단할 수 있다
  • (Stereo Rectification) Stereo System에서 를 이용한 Rectification을 통해 모든 Epipolar Line을 수평으로 보정한다.

OpenCV 관련 함수

  • findFundamentalMat(): 두 이미지 사이의 fundamental matrix를 계산하여 반환. 입력으로는 8쌍 이상의 매칭 이미지 좌표쌍을 입력
  • findEssentialMat(): 두 이미지 사이의 essential matrix를 계산하여 반환. 입력할 내용은 5쌍 이상의 매칭 이미지 좌표쌍과 카메라 파라미터(초점거리, 주점). 내부적으로 5-point 알고리즘을 사용. 이미지 좌표로는 normalized 좌표가 아닌 픽셀 좌표를 입력
  • decomposeEssentialMat(): 입력 essential matrix로부터 회전변환 R, 평행이동 t를 추출해 줌. 가능한 4가지 조합의 [R|t]를 반환
  • recoverPose(): 입력된 essential matrix와 두 이미지에서의 매칭쌍으로부터 두 이미지의 상대적인 [R|t] 관계를 추출해 줌. decomposeEssentialMat()이 [R|t]를 유일하게 결정하지 못하고 해를 여러개 반환하는 반면, recoverPose()는 부가적인 기하학적 조건 검사를 통해 [R|t]를 유일하게 결정하여 반환한다.

5. 프로젝트


참고


Prev: (Image Geometry) 5. 이미지 투영