동일한 장면(scene)을 서로 다른 두 지점에서 촬영한 영상의 기하학적 관계, epipolar 기하학 정리
Epipolar Geometry
- Epipolar geometry는 동일한 사물 또는 장면에 대한 영상을 서로 다른 두 지점에서 획득했을 때, 영상 A와 영상 B의 매칭쌍들 사이의 기하학적 관계를 다루는 것.
-6.-Epipolar-Geometry_image_1.png)
Epipolar 기본 개념
epipole & epiline
- 3차원 공간상의 한 점 가 영상 에서는 로 투영되고, 영상 에서는 에 투영될 때, 두 카메라 원점을 잇는 선과 이미지평면이 만나는 점 을 epipole이라 부른다.
- 과 각 이미지평면의 각 투영점 을 잇는 직선 을 epipolar line (또는 epiline) 이라 한다.
- 또, 3차원 공간의 점 와 각 카메라의 광학 중심 에서 세 점 은 항상 하나의 평면 위에 존재하며 이 평면을 epipolar plane 이라 한다.
epipolar 성질
- 실제 좌표 는 이미지 에 로 투영되면서 깊이(Depth)정보를 손실하게되며, 이미지 에서 투영된 는 반드시 epipolar line 위에 존재한다.
- 모든 epiline은 epipole을 통과한다.
- 의 영상좌표 로부터 대응되는 의 영상좌표 을 유일하게 결정할 수는 없지만 이 지나는 직선인 epipolar line 은 유일하게 결정할수 있다.
- epipole 과 epiline을 구하기 위해서는 Fundamental Matrix와 Essential Matrix가 필요하다.
-6.-Epipolar-Geometry_image_2.png)
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. 프로젝트
- 프로젝트 결과 참고 : (Stereo) Stereo Vision System
참고
- 다크 프로그래머 :: [영상 Geometry #7] Epipolar Geometry
- [52편] 스테레오비전 기초1-Epipolar.. : 네이버블로그
- [개념 정리] Epipolar Geometry
- [개념 정리] Essential Matrix와 Fundamental Matrix
- 다중관점기하학(Multiple View Geometry) 개념 정리 (4) - Epipolar geometry, Fundamental, Essential, Stereo Vision - YouTube
- Title Unavailable | Site Unreachable