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

Epipolar Geometry

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

+full

1. Epipolar 기본 개념

1.1. epipole & epiline

  • 3차원 공간상의 한 점 가 영상 에서는 가 투영되고, 영상 에서는 에 투영될 때, 두 카메라 원점을 잇는 선과 이미지평면이 만나는 점 epipole이라 부름
  • 과 각 이미지평면의 투영점()을 잇는 직선 epiline (또는 epipolar line) 이라 함

1.2. epipolar 성질

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

2. Essential Matrix

임의의 두 지점에서 찍은 영상의 매칭점들은 항상 관계지을 수 있으며, 이 때 관계식을 epipolar constraint(또는 essential constraint)라 하고, 이 3x3 행렬 E를 Essential Matrix라 부름 camera intrinsic paramete가 고려되지 않는 경우(= intrinsic parameter가 단위행렬)를 가정

2.1. epipolar constraint

  • 는 3x3의 Essential Matrix

2.2. Essential Matrix 유도

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

3. Fundamental Matrix

Essential Matrix가 정규화된 이미지 평면에서의 매칭 쌍들 사이의 기하학적 관계를 설명하는 행렬이라면, Funcamental Matrix는 카메라 파라미터까지 포함한 두 이미지의 실제 픽셀(pixel) 좌표 사이의 기하학적 관계를 표현하는 행렬 (Essential Matrix에서 카메라 intrinsic parameter(=K matrix)를 모두 같이 고려하는 matrix)

3.1. Fundamental Matrix 유도

  • 임의의 두 이미지 A, B에 대하여, 매칭되는 픽셀 좌표 , 사이에는 항상 다음과 같은 관계를 만족하는 행렬 F가 존재하고, 이러한 행렬 F를 fundamental matrix라 부름
  • 이 때, 이미지 A에 대한 카메라 내부 파라미터 행렬을 , 이미지 B에 대한 카메라 행렬을 , 이미지 A, B 사이의 essential matrix를 라 하면 funamental matrix 는 다음과 같이 주어짐

4. 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. 이미지 투영