Stereo Matching이란? Disparity Map으로 깊이 정보 추정하는 법

Stereo Matching 개요와 Disparity 개념

이번 글에서는
Stereo Matching
에 대하여 살펴보겠습니다. ​

1 Stereo matching

정말 정밀한 3D 복원을
하기 위해서는

3D 복원에 사용되는 이미지의
모든 픽셀의 대응점을
이용해야 합니다. ​

이렇게 다른 시점에서
촬영한 2장의 사진으로
복원을 할 때,

2 dense 3d reconstruction

이미지 모든 픽셀에 대해
대응점을 찾으면
Disparity Map
을 얻을 수 있습니다.

​ Disparity Map 은 2장의 이미지에서
​ 한 장은 기준이 되고
다른 한 장은 비교 대상이 되어
기준점으로 부터 얼마나 거리가
떨어져 있는지에 대한
정보를 가지고 있습니다. ​

원근감을 생각해보면 가까운 물체는
조금만 다른 시점에서 봐
도 차이가 큰 반면, ​

멀리 있는 물체는
다른 시점에서 봐도
크게 차이가 없는 예시를
생각해 볼 수 있습니다.








Epipolar Geometry와 Rectification

3 rectifying images

2장을 촬영한 카메라가
Calibration 되어 있다면,

이전에 살펴본
Epipolar geometry
내용처럼 대응점이
Epipolar line 위에
위치하게 됩니다.

4 rectifying images

대응점을 쉽게 찾기 위해
Epipolar line 을 기준으로
두 이미지를
조정해 줄 수 있습니다.

​ 보시면 이미지가
틀어져있는 것을
확인할 수 있습니다. ​

5 rectifying images

Epipolar line 이 동일한 y축을
공유하도록 조정하게 되면,

대응점이 무조건 y 축
위에 존재하게 됩니다. ​ ​


이렇게 Rectify 과정이 필요 없도록
애초에 동일한 y 축을 갖는
사진을 촬영하는
Stereo Camera 가 있습니다.

6 Stereo cameras

사실 Stereo 는 정확하게는
2개 이상의 시점을
이용하는 것을 의미하지만, ​

여기서는 2개로 생각하시면 됩니다.

7 Stereo

이렇게 카메라 렌즈가
동일한 y 축위에 있으므로
촬영한 이미지가 자동적으로
동일한 y축을 갖게 됩니다.

​ 이 y 축이 Epipolar line 이며,
대응점이 모두 이 위에
위치하게 됩니다.

8 2

수식적으로 두 카메라의 관계인
Fundamental Matrix 을 구해보면 ​
Rotation 은 동일하니 사라지고

Inrinsic parameter 는 동일하다고
생각하므로 cancle out 시켜줍니다. ​

9 2

우리가 Stereo Camera 를
사용하지 않을 경우

동일한 y 축을 갖도록
이미지를 Rectify 할 때는, ​

Homgraphy 변환을 통해
Epipole 의 형태가 (1,0,0) 이 되는
변환을 찾아주는 방법으로
진행하게 됩니다.

10 2

다시 정리하면,
Epipolar line 이
동일 y 축 위에 있으면
대응점을 찾기 쉽기 때문입니다. ​

11 2

원근감을 생각해보면 쉽게
Disparity 와 Depth 관계를
유추해 볼 수 있습니다.

12 1

수식적으로는 닮은꼴 형태를
이용하여 유추할 수 있습니다.

​ Template Matching 을 통해서도
Disparity Map 을
구할 수 있습니다.














Disparity 계산: Template Matching 방법과 Metric

13 1

Disparity 를 구하는 식을 보시면
왼쪽 이미지를 기준으로
오른쪽 이미지와의 차이를
이용하고 있습니다.

14 1

이상적으로,
왼쪽의 기준이되는 템플릿과
오른쪽의 비교 템플릿의
차이가 0 일 때,

동일한 템플릿입니다. ​

하지만,
시점이 바뀐다는 것은
살짝씩 가려지는 부분, 경계 등
다양한 변화가 있어서 ​
Matching cost 를
정의하는 것이 중요합니다.

15 1

Template Matching 을 위한
측정 방법 (Metrics) 으로는
​ 단순히 픽셀마다의 차이를
절댓값으로 더하는 SAD, ​
차이의 제곱을 더하는 SSD, ​
템플릿의 분포 유사도를
측정하는 NCC 가 있습니다. ​

SAD,SSD 는 값이 작을수록
NCC는 값이 높을수록
유사한 템플릿 입니다.

16 1
17

수식적으로는 같은 의미이나,
상황에 따라 차이가 있습니다.

18

NCC 는 분포의 유사도를
측정하는 지표라고 했는데, ​

문제가 하나 있습니다. ​

그림에서는 A 패턴이 가장 유사하나
Normalize 를 하지 않을
경우 증폭된 신호가 더 큰 값을
가지게 된다는 것입니다.


​ Normalize 를 진행해야만,
정확히 템플릿의 분포와
유사한 매칭을 확인할 수 있습니다.

20

Template Matching 은 SIFT feature 처럼
Rotate, Scale 등 다양한 요소에
강인하지 않습니다. ​

예시와 같은 환경에서만
잘 작동합니다.

21

Template Matching 에는 중요한
하이퍼파라미터가 하나 있습니다. ​

바로 윈도우 사이즈 입니다. ​

윈도우 사이즈가 너무 작을경우,
비슷한 영역이 많이 생기고
​ 윈도우 사이즈가 너무 클 경우
디테일이 사라지게 됩니다.

23

또한 흰색 바탕처럼 특정한 Feature 를
추출하기 위한 패턴이 없거나, ​

반복되는 패턴이 자주 등장하거나, ​

빛 반사로 이미지에 차이가
생긴다면 ​ 잘 작동하지 않습니다.

24

이러한 단점을 보완하기 위해 단순히
Template 영역만 보는 것이 아니라, ​

주변의 영역까지 Global 로
제약을 걸 수 있습니다. ​

25

즉, 템플릿의 차이가 너무 다르면,
경계이기 때문에 그럴 수 있다고 생각하고

​ 템플릿의 차이가 적다면,
경계가 아니므로 모두 비슷한 값을
가져야 한다고 규제를 걸어주게 됩니다.

26

대표적인 방법으로
Graph cuts 이 있습니다. ​

27

Template Matching 은 정답지인 Disparity Map 만
있으면 여러가지 방법을
비교하기 너무 좋습니다.

​ 이 분야에서 처음 벤치마크,
데이터셋이라는 개념이
등장하였다고 합니다. ​

28




항목설명
Disparity Map두 이미지 간 픽셀 차이를 나타내는 맵 (깊이 정보 포함)
RectificationEpipolar line 정렬로 대응점 탐색을 단순화
Template Matching윈도우 기반 매칭: SAD, SSD, NCC 사용
대표 해결법Graph Cut, NCC 정규화, 윈도우 크기 조절
활용 분야3D 재구성, 자율주행, 로봇비전, AR/VR



그런 건 난 잘 모르겠고,
Stereo Matching 은
두 이미지의 모든 픽셀 간
대응점을 찾아 Disparity Map 을 생성하고,
이를 통해 깊이 정보를 추정하는 방법 ​











참고자료

Slide credit : Shree Nayar

댓글 남기기