본문 바로가기

VISION/Stereo Vision

Stereo Vision : Rectification

1. Rectification이란?

하나의 물체를 찍은 2영상에서 depth를 계산할 수 있을까?

계산을 위해

1) 충분한 baseline이 필요하다.

2) 2영상은 Rectified 되어야한다.

Rectification 이란 2영상의 epipolar line을 수평하게 만드는 것을 말한다.

즉 위와 같은 배치를 강제로 다음과 같이 일렬로 만들어주는 것이다. 

그렇다면 왜 이런 배치를 만드는 것일까? 두 영상의 관계가 다음과 같이 단순화 되기 때문이다. R=I,  t=(T,0,0)

 

2. Stereo Rectification 을 수행하는 개념

두 카메라 center, O, O' 사이의 선에 대해 평행한 공통 plane 으로 영상을 Reproject 한다.!!

이를 위해 2개의 homographies 를 이용하자.

(1) R을 얻기 위해 E를 계산한다.

(2) R을 이용하여 우측카메라를 좌측카메라와 동일 평면이 되도록 회전한다.

(3) epipolar line 이 무제한이 되도록 Rrect에 의해 좌/우측카메라를 회전한다.

(4) scale 을 조절한다.

 

3. 세부 단계별 계산방법

Step (1) : R을 얻기 위해 E를 먼저 계산하자.

SVD 를 이용하여 E를 분해하자. E는 R과 t로 구성된다.

가능한 R과 t는 다음과 같이 나타낼수 있다. (확인필요)

그럼 R1과 R2, T1, T2를 이용하여 가능할수 있는 매칭은 다음과 같이 4가지이다.

그렇다면 어느것을 선택해야 할까?

1) R의 determinant 를 이용하자.

 rotation만 있다면 det(R) = 1 이어야하며, 만약 det(R) = -1 이라면 rotation 과 reflection 의 수행을 의미한다.

2) Triangulation 을 이용하여 3D 점을 계산하자.

 이때, 3D점은 카메라의 앞에 있어야 하므로 Z 는 양수여야 한다. 만약 음수일 경우 3D 점이 카메라 중심점에서 뒤에 있다는 의미이다.

만약 다음과 같이 4개의 경우가 있을 경우, 우리는 (a)를 선택할 수 있다.

 

STEP (3) Rrect 계산하기

 Rrect를 계산하기 위해 언제 epipolar line이 수평이 될까 생각해보자.

 epipole 이 무한대에 위치하면 된다.!

epipole e로 부터 Rret 의 계산

e 가 주어졌을 때 Rrect를 계산해보자.

Ee = 0이므로 E의 SVD를 이용하여 linear homogeneous 방식으로 e를 얻어낸다.

다음 조건을 이용하여 3축의 Rrect를 구성한다. (확인필요) 

(1) epipole 은 translation vector와 coincide 하다.

(2) epipole 과 광학축의 방향백의 cross product 

(3)  (1)과 (2)의 orthogonal vector 

위에 구성한 r1과 r2 r3가 orthogonal 하다면, Rrect x e1 = [1 0 0] 

정리하면, 다음과 같다.