Triangulation

2023. 2. 27. 17:54Devcorse/Visual SLAM(02.20~3.31)

이전에 두 이미지를 기반으로 RANSAC, RPOSAC을 사용해 E, F matrix를 구했다.

matrix을 SVD를 통해 R,t를 구할수있다.

1. General Triangulation

- 이미지 두개를 기반으로 3D point구하기

 

2d 상에서는 ray가 겹쳐 보이지만 실제로는 겹치지 않을 수도 있다.

-> 차선책으로는 G, F의 중간인 H로 설정할수도있다(같은 noise 분포를 가진다고 가정하는 것)

F = P + ar, G = Q + bu (u,r은 단위벡터)

$r = R'^{T} x_{k}', u = R''^{T} x_{k}''$ (k는 camera callibration이 됬다는 의미, $x'_{k} = (x', y', focal length)^{T}$
                                                           (R은 world coordinate to camera coordinate 위치, SO(3)임으로 $R^{T}=R^{-1}$)

gf를 지나는 직선은 r,u에 orthogonal하다.

(f-g)*r=0, (f-g)*s=0

$(p+ar - q - bu)^{T}r = 0$

$(p+ar - q - bu)^{T}s = 0$ 

=> $\begin{bmatrix} r^{T}r & -s^{T}r \\ r^{T}s & -s^{T}s \\ \end{bmatrix} \begin{bmatrix}\lambda \\ \mu \end{bmatrix} = \begin{bmatrix} (X_{O''} - X_{O'})^{T} \\ (X_{O''} - X_{O'})^T\end{bmatrix} \begin{bmatrix} r \\ s \end{bmatrix}$

Ax=b 꼴임으로 $A^{-1}$를 통해 x를 구할 수 있다.

H = F(p)+G(1-p)로 설정하며 p를 통해 가중치 설정

 

2. Stereo Triangulation

B:depth = (p' - p'') : (depth-focal length)  임으로

depth = B(depth-focal length)/(p'-p'')이다.

같은 방식으로 x도 구할 수 있다.

 

하지만 1번과 같이 3d ray의 교점이 생기는 경우는 거의 없다.

Y/x =  0.5*(y'+y'')/x' => Y = 0.5*(y'+y'')*B/(p'-p'') 이처럼 각 y의 평균 값을 사용한다.

'Devcorse > Visual SLAM(02.20~3.31)' 카테고리의 다른 글

Least squares  (0) 2023.02.28
Perspective n points  (0) 2023.02.27
RANSAC  (0) 2023.02.27
Epiplolar Geometry  (0) 2023.02.27
TDD  (0) 2023.02.24