2023. 2. 27. 17:54ㆍDevcorse/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 |