💭 Summary
두개 이상의 뷰가 주어졌을 때 잃어버린 정보를 복원할 수 있는 방법에 대해 알아보고자 한다.외눈박이일 경우 공간적으로 인식을 하는 건 불가능하다.
두 개의 뷰가 있을 때 어떻게 3차원 정보를 복원하는지 알아보자.
computer vision
[u v 1] 의 given data, 찍은 사진으로 3D data의 복원을 하고 싶다.
Computer Graphics
[U V W 1]이 given data이다.
동시에 2개 이상의 카메라에서 찍힌 사진을 통해 depth를 추론해는 것이다.
fundamental ambiguity
이전 시간에 배운 것처럼 계산을 할 때 아래 사진에서 처럼 X/Z의 하나의 pair만을 구하기 쉽지 않다.
→ OP 위에 점들 중 어떤 것인지 알 수가 없다.
위에서 언급한 문제 해결을 위해 우리는 카메라 두 개를 사용한다. 마치 우리의 눈처럼 말이다.
P라는 곳을 찾고 싶다고 가정했을 때
→ 이렇게 P를 찾아내는 일을 Triangulation
이라고 한다.
parallax : 다른 거리에 위치한 장면 특징의 겉보기 움직임
motion parallax
→ 움직이는 시점 기준
측정 방법
O1, O2 두 카메라는 같다.
→ perspective transform Matrix가 같고, affine transform에서 사용되는 f 값이같다.
✔ Top Down View (XZ plane)
Left Camera를 world Coordinate로 하고 right camera는 x방향으로의 translation만 있다.
두 개의 카메라 렌즈(또는 눈) 사이의 관찰 위치 차이에 의한 이미지 픽셀 간의 거리 또는 깊이 차이
→ 두 개의 이미지(좌측 이미지와 우측 이미지) 사이에서 대응되는 특징점 또는 픽셀의 위치 차이를 계산하여 3D 공간에서 객체의 깊이 정보를 추정하는 데 사용
Stereo Disparity : d
right camera와 left camera가 관측한 두 x값의 차이를 d라고 하자. 이 d는 아래와 같은 식으로 표현이 가능하다. 이 때 분모에 있는 Z와 바꾸어 식을 변형시키면 depth값을 구할 수 있다.
Depth : Z
, d를 모두 알고 있으니 우리는 Depth인 Z를 구할 수 있다.
⇒ depth와 stereo disparity는 역수 관계다.
오른쪽 사진은 disparity 결과이다. disparity 값이 크다는 것은 깊이가 얕다는 것이다. 이는 가까이 있는 것을 의미한다. 즉 아래 사진에서 가까이 있을 수록 밝게 표현된 것이다.
그리고 사실 아래 사진은 사기이다.
corresponding point를 찾기 위해서 전체 이미지를 다 보기엔 cost가 넘 크다.
Epipolar Constraint
를 걸어 Epipolar Line 에서만 찾자.그런데 이것도 사실 다 볼 필요가 없다.
근데..! 사실 왼쪽도 다 볼 필요가 없다.
그래서 사실 사기가 아닌 사진으로는 이렇게 나오는 게 정상이다.
너무 퀄리티가 안 좋으니 개선이 필요하다.
kernel의 size를 키워서 narrow하게 말고, wide 하게 보자.
narrow한 영역은 noise에 민감하다.