본문 바로가기

Basic Learning/Computer Vision

Epipolar Geometry and Stereo

 

* 이 포스트는 컴퓨터 비젼에 대한 개인 학습용으로 작성한 포스트입니다.

 

 

Depth with Stereo

사람의 눈은 두 개로, 각 눈은 두 개의 영상을 투영하여 depth를 추정하게 된다. 카메라도 마찬가지로 두 개의 카메라를 통해서 depth를 추정할 수 있다. 

 

 

 

 

Pinhole 카메라 모델에서 depth를 추정하기 위해 다음과 같은 조건이 필요하다.

1. 두 카메라 사이의 calibration을 알아야한다.

2. 3D상의 한 point에 대해 정확한 correspondence를 알아야한다.

 

 

Stereo reconstruction은 다음과 같은 절차를 따른다.

1. Calibrate cameras

2. Rectify images

3. Compute disparity

4. Estimate depth

 

 

 

Epipolar Geometry

 

 

 

 

두개의 카메라 $O, O'$가 있을 때 다음을 정의할 수 있다.

 

Baseline : 분홍색으로 표시한 선으로 두 카메라를 잇는 line

Epipolar plane : baseline을 포함하는 planeEpipoles : baseline과 image plane과의 교점 (이는 서로의 camera center의 projection 결과이다)Epipolar lines : epipolar plane과 image plane과의 교선 (항상 두 image plane상에서 pair를 이룬다)

 

 

하나의 image plane에서 x에 해당되는 point를 다른 image plane에서 찾아보자. 그러면 짝이 되는 epipolar line 상에서 이동하며 point를 찾으면 된다. 즉, 아래의 그림에서 x의 후보들은 l'으로 line으로 나타난다.

 

 

 

 

 

$Rx, t, x'$는 모두 하나의 plane (Epipolar plane)상에 있다. 이를 통해 아래의 식을 세울 수 있다.

 

 

E는 Essential Matrix라 하고, 위의 식은 Stereo상에서 constraint를 뜻한다.

E는 rank = 2인 singular matrix이고 DOF = 5이다.

$Ex$는 $x'$에 해당되는 epipolar line, $E^Tx'$는 $x$에 해당되는 epipolar line을 뜻한다.

 

 

위의 식은 아래와 같은 normalized된 좌표를 사용했을 때 성립한다.

 

 

그러면 Intrinsic camera parameter인 K matrix를 모르는 경우에는 풀 수 없다.

이 경우에는 K도 함께 고려하여 아래의 식으로 변환할 수 있다. (이 때 x는 normalized된 버젼이 아님)

 

 

 

F는 Fundamental Matrix라 한다.

F는 rank = 2인 singular matrix이고 DOF = 7이다.

 

 

8-point algorithm

F를 추정하기 위해 Least square method를 사용할 수 있다.

8개의 point 쌍을 안다면, 아래의 constraint로 SVD를 통해 구할 수 있다.

(이 과정에서 range를 조절하기위해 normalize 필요)

 

 

 

 

 

Stereo Image Rectification

두개의 카메라가 평행할 때, 즉 카메라를 x축으로만 이동했을 때, 공간상의 같은 point는 두 이미지의 같은 y좌표에 projection된다. 즉, 같은 수평선 epipolar line에서 찾으면 된다.

 

Image Recification

가상으로 parallel camera stereo 환경에서 찍은거 처럼 이미지를 warping함. 이로써 point를 search하기 쉬울 뿐만 아니라 x좌표의 차이로 disparity 계산도 쉬워진다.

 

 

 

 

 

Basic stereo model

아래의 유도로부터, disparity를 안다면, 해당 point의 depth를 추정할 수 있다.

 

 

 

 

 

Correspondence Problem

실제로 같은 두 개의 point를 matching하는 것이 중요하다. Object, pixel, edge등을 기준으로 match를 진행해야할 것이다. 이 때, Photometric constraint으로 같은 점에서의 intensity가 같은 lambertian이라 가정한다.

 

Pixel을 match하는 것보다 특정한 범위를 가지는 patch를 설정하여 intensity difference차이를 통해 계산한다. 카메라의 intensity정도가 다르기 때문에 patch를 normalize하는 것이 더 좋다.

 

 

 

 

위의 Window-based matching은 아래와 같은 문제가 존재한다.

1. Window안의 pixel들은 같은 disparity를 가지고 있다는 가정을 하기 때문에 오차가 발생한다.

2. Surface의 굴곡이 크면 유추하기 어려움

3. Window 사이즈를 늘리면 disparity map을 smooth하게 만듦

4. Occlusion 등의 문제가 생김

 

 

Additional correspondence constraints

Uniqueness : 한 이미지에서의 point는 다른 이미지에 한 점 밖에 없다.

Ordering : 한 이미지에서 나타나는 point의 순서는 다른 이미지에서의 순서와 같다.

Disparity gradient : disparity gradient는 두 이미지에서 유지된다.

 

 

 

Stereo as Energy Minimization Problem

Stereo problem을 engergy minimization problem (labeling problem)으로 치환해서 풀 수 있다.

 

 

위의 식은 energy term으로 data cost function, smoothness term으로 나뉘어진다. 이 문제는 graph cut등을 이용해서 풀 수 있는데, 이를 푸는 것은 다음 포스트에서 다룬다.

 

 

 

'Basic Learning > Computer Vision' 카테고리의 다른 글

Categorization I  (0) 2020.11.20
MRF and MAP Inference  (0) 2020.11.18
Homography & Alignment  (0) 2020.10.27
Fitting  (0) 2020.10.25
Rotation, Scale, Affine Invariant Features  (0) 2020.10.22