새소식

Perception

Stereo Vision : Disparity 와 Rectification, Epipolar Geometry

  • -

Disparity

 

Disparity (양안 시차) 는 Stereo Vision 의 핵심 개념입니다. 

 

다음 사진과 같이, 가까이 있는 물체일 수록 Left - Right 간의 위치 차이가 커지게 됩니다. 따라서 Disparity 는 Depth 와 반비례한다는 것을 알 수 있습니다. 

 

Triangulation

 

 

Triangulation 은 이미지 상의 포인트를 3차원으로 복원할 때 사용됩니다. 3차원 복원을 위해서 필요한 정보는 다음과 같습니다. 

 

1. 두 카메라 사이의 Rotation / Translation

2. 카메라 intrinsic parameter

3. 두 픽셀이 "같은 것인지" 알기 (Correspondences)

 

따라서 우리는 Triangulation 을 통해서 Disparity 를 이용해 Depth 를 계산할 수 있습니다. 

삼각형의 닮음을 이용한 Detph 계산

 

그런데 여기서 문제가 되는 지점은, 이 결과는 아래 오른쪽 사진처럼 카메라가 Rotation 없이 반듯하게 x 축으로만 Translation 한 경우를 전제로 하고 있다는 것입니다. 

 

 

하지만 오른쪽과 같이 축이 틀어지지 않는 경우는 만들기가 거의 불가능합니다. 또한 타겟 영역에 많이 겹쳐지도록 하기 위해서 카메라를 일부러 안쪽으로 보게 하는 경우도 있습니다. 

 

따라서 실제 세계의 Stereo 카메라는 왼쪽 그림처럼 구성되어 있는 경우가 많습니다. 이런 경우에 사용되는 것이 Epipolar Geometry 입니다. 

 

Epipolar Geometry

 

왼쪽 카메라의 Principal Point 인 Ol, 오른쪽 카메라의 Principal Point 인 Or, 실제 포인트인 P 는 Epipolar Plane 이라는 평면을 이룹니다. 

 

 

Ol 과 P 를 잇는 직선 위의 점들은 오른쪽 Camera Plane 에 투영했을 때 모두 Epipolar Line 위에 있다고 할 수 있습니다. 

 

따라서 Epipolar Line 을 사용하면 Triangulation 을 위해서 대응점을 찾을 때 , 대응점을 찾는 범위를 대폭 줄일 수 있습니다. (Epipolar Line 위에서만 찾으면 되기 때문에)

 

Rectification

 

대응점을 "같은 높이에서" 찾기 위해서 수행하는 과정

 

 

 

Disparity 를 통해서 Depth 를 구하기 위해서는 삼각형의 닮음을 사용해야 하기 때문에 두 카메라의 Image Plane 이 나란해질 필요가 있습니다. 

따라서 Epipole 을 무한으로 보내는 Homography 를 찾는다면 Image Plane 이 나란해지게 됩니다. 

 
Rectification 은 가상의 이미지를 만들어서 (Epipole 을 무한으로 보내서) Parallel 하지 않았던 이미지를 Parallel 하게 만들어 주는 작업입니다. 

 

Stereo Matching

 

Stereo Matching 은 다음과 같은 단계로 수행됩니다. 

 

Rectification 을 하게 되면, 대응점들은 반드시 같은 높이에 있게 됩니다. 따라서 이 과정을 수행하게 되면 대응점을 같은 높이에서만 찾으면 됩니다. 

 

Sparse Stereo

 

Spares Stereo 는 다음과 같은 과정으로 수행됩니다. 

 

1. 특징점 추출

2. Rectification 후 같은 줄 (row) 에서 특징점 매칭

3. Disparity 를 통해서 Triangulation 을 이용해 3D 계산

 

하지만 아무리 SIFT 같은 성능 좋은 알고리즘을 사용한다고 해도, 특징점은 전체 포인트에 비교하여 그렇게 많은 수가 추출되지 않습니다. 따라서 특징점 기반으로 3차원을 복원하면 다음과 같이 Sparse 하게 복원됩니다. 

 

Dense Matching

 

빽빽하게 복원하기 위해서 전체 Disparity 를 다 구하는 것이 Dense Matching 입니다. 

이는 Template Matching (SSD, SAD, NCC) 으로 수행됩니다. 보통 Template Matching 은 시간이 많이 소요되지만, 이 경우에는 Rectification 을 수행했기 때문에 같은 줄에서만 찾으면 되어 시간이 많이 걸리지 않습니다. 

 

 

Patch (Window) Size 에 따른 Depth map 

 

1. Patch 크기가 작을 때

  • 잘 틀릴 수 있다 (오차가 크다) = Noisy 하다
  • 세밀하게 Depth 를 알 수 있다. 

 

 

 

2. Patch 크기가 클 때 

  • Detail 이 적다. 
  • 스무스하다. 
  • 속도가 느리다. (계산량이 많다)

 

 

결론 : 3D 복원의 단계

1. Undistortion 

2. Rectification

3. Template Matching 등을 통해 Disparity Map 구하기

4. Triangulation 을 이용한 3D Back projection 

 


위 내용은 경희대학교 소프트웨어융합학과 황효석 교수님의 2023년 <3D데이터처리> 수업 내용을 요약한 것입니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.