Triangulation for Image Pairs
전혀 오차가 없는 상황에서는 F,G는 일치한다. 하지만 일반적으로는 일치하지 않는다. 이럴 경우, 두 꼬인 위치에 있는 직선에 수직인 가장 짧은 선분을 구하고, 그 중점을 구한다.
- $\lambda$와 $\mu$는 scalar (unknown)
- r과 s는 방향벡터 (known)
- calibration matrix와 pixel 좌표를 가지고 구할 수 있다
- p와 q는 카메라 중심 (known)
- r과 s를 구할 때 R를 transpose한 것은 R이 cam-to-world matrix이기 때문
- 3d world 상의 좌표를 계산해야 하므로 transpose 해야 함
그림상에서 $f-g$ 벡터(FG)는 각각 r,s 방향벡터와 수직이어야 한다. 따라서 위의 constraint가 생기고, 두 방정식을 얻을 수 있다. 여기서 $\lambda$와 $\mu$를 구하고 중점을 구하면 H를 얻을 수 있다.
Ax=b 형태에서 풀어서 F,G를 구한 뒤 H를 구한다. (아마 least square?)
실제 상황에서는 다음과 같은 요인에 의해 오차가 생길 수 있다.
- 카메라 캘리브레이션에서 intrinsic parameter의 오차
- Optical flow, descriptor matching에서 오차
- Pixel Plane에서 Normal Plane으로 갈 때 오차
- Rotation, Translation 추정 오차
- 두 이미지의 base line이 충분히 확보되지 않았을 때. Depth에 특히 더 큰 에러가 발생
Stereo Normal Case
Stereo 셋업이기 때문에 이미지 상의 두 Point는 y와 z 좌표 값은 동일하고 x만 다르다.
P는 3d point, 카메라 중심 $O’,O’’$, pixel plane이 위와 같이 나타나 있다. Base Line이 B, c가 focal length라 할 수 있다. 삼각형의 닮음비에 의해 Z를 위와 같이 나타낼 수 있다.
또 pinhole 카메라 모델에서 $x’ = c*X/Z$이므로 X 좌표도 구할 수 있다.
카메라를 세워서 봤을 때, 역시 닮음비를 이용해서 Y좌표를 구한다. 이 때, Y가 일치하지 않을 수 있으므로 두 y좌표를 평균내서 구해준다.
Quality of 3d points
우리가 구한 XYZ 좌표에서 상수부분을 M으로 치환하면 다음과 같다. pixel의 measure를 $\sigma$로 표현하면 x는 그대로 쓰고, y의 경우 두 좌표를 평균내서 사용했으므로 위와 같다.
Z에 대해서도 다음과 같이 나타낼 수 있다. 여기서 알 수 있는 점은 parallax p가 크면 클수록 Z의 품질은 좋아진다라는 것이다.