Different type of maps
Monocular Camera
: 카메라 모션을 통해 triangulation으로 깊이를 추정Stereo Camera
: 양안의 disparity를 통해 깊이를 추정RGB-D Camera
: depth센서를 통한 깊이 추정monocular camera에서 depth 추정 방법
feature 추출
descriptor 기반의 feature들 사이의 matching 수행
다른 각도의 observations를 통해 triangulation 수행
→ 목표: 다음 frame에서 $p_1$ 지점은 epipolar line라인에서 어느 지점($p_2$)일까?
Question: epipolar line에 $p_1$과 비슷한 점이 많을 경우 어떤 점을 $p_2$로 결정할 것인가?
Solution: Block Matching
블록과 블록의 차이 계산 방법들 (블럭 유사도 측정)
→ $\bold{A}$: $p_1$ 주변의 블록 / $\bold{B}$: epipolar line상의 $n$개의 작은 블록
→ 이미지가 유사하면 0, 다르면 1에 가까워짐
SAD (Sum of Absolute Difference)
SSD (Sum of Squared Distance), not solid state drive
NCC (Normalized Cross Correlation)
epipolar line에서 $\bold{A}$와 $\bold{B}_i$ 사이의 유사성 척도 계산 (NCC를 사용한다고 가정)
depth
는 단일 값이 아니라 확률분포를 따라야하며, 다른 이미지의 epipolar line들을 찾으면서 depth distribution을 업데이트해야 함
(⇒ depth filter)Matching score along with the epipolar line
픽셀 깊이의 추정 문제 solution
대안1: 비선형 최적화
→ 이미 frontend에서 많은 계산량을 차지하고 있으므로 pass
대안2: 필터
→ 계산량이 상대적으로 적음
유도 과정
픽셀의 깊이 $d$를 아래와 같이 가우시안 분포를 따른다고 가정
새로운 데이터를 관측(obs)하였을 때의 깊이 $d_{\mathrm{obs}}$도 마찬가지로 정의하면,
두 분포에 대한 결합을 정의하면
→ 가우시안 분포의 곱도 가우시안 분포
→ 새로운 관측을 바탕으로 기존 $d$의 분포를 갱신
⇒ 그렇다면 $\sigma_\mathrm{obs}$는 어떻게 구할 것인가?
epipolar line 탐색과 블록 매칭을 통해, 현재 프레임에서 참조 프레임의 픽셀의 투영 위치를 결정한다고 가정하면 아래 그림과 같이 표현 가능
→ 기하학적 관계로 인한 불확실성만 고려
위 그림에 대한 기하학적 관계를 수식으로 표현하면,
block matching을 수행하기 위해, $p_2$를 이동시키는 것은 $\beta$의 변화를 유발하게 되고, 그에 따라 $\beta'$는
sin 법칙을 통해 단일 픽셀로부터 오는 불확실성 depth $\bold{p'}$를 구하면,
epipolar line상의 block matching에 픽셀 오류가 하나만 있다고 가정하면,