Using RANSAC for Omnidirectional Camera Model Fitting
[cite]10.1.1.6.5398[/cite]
1 Introduction
이 논문은 RANSAC에 기반하여 central projection 특성을 지닌 omnidirectional camera의 카메라 모델과 epipolar geometry를 동시에 구하는 방법을 제안하고 있습니다. 좀 더 구체적으로는 카메라 모델과 epipolar geometry를 올바르게 구하려면 RANSAC에서 점들을 어떻게 샘플링해야할지에 의문을 제기합니다. 이미 두 카메라의 대응점과 렌즈의 시야와 화각에 대한 정보를 모두 알고 있다고 가정합니다.
2 Omnidirectional camera model
일반적인 핀홀 카메라 모델에서는 180도를 넘어가게 되면 이미지 플레인과 교차하지 않습니다. 따라서 점을 $\mathbb{R}^3$의 구에 투영 시켜 unit vector로 나타내고, 이를 이미지에 위치시키도록 합니다.
이미지 위의 한 점을 $\mathbf{u} = (u, v)^T$라고 하여봅시다. 이 점의 좌표계는 view field circle의 중심인 원점 $(u_0, v_0)$을 갖습니다. 이제 이 점을 3D vector로 변환하는 빈선형 함수 $g$가 있다고 생각하여 봅시다.
$$g(\mathbf{u}) = g(u, v) = (u, v, f(u, v))^T$$
$ f(\mathbf{u})$는 원점 $(u_0, v_0)$에 대하여 회전에 대칭인 함수입니다. 그리고 카메라의 구조에 따라 결정되는 함수입니다. Nikon FC-E8 어안 렌즈는 다음과 같은 모델을 갖습니다.
$$\theta = \frac{ar}{1 + br^2}, r = \frac{a - \sqrt{a^2 - 4 b \theta^2}}{2b \theta}$$
$\theta$는 광축에 대한 입사각이고 $r = \sqrt{u^2 + v^2}$ 원점으로부터 이미지 위의 점과의 거리를 의미합니다. $a, b$는 모델 파라미터입니다. $f (\mathbf{u}) = \frac{r}{\tan \theta} $를 이용하면 3D vector $\mathbf{p}$는 다음과 같이 정리가 됩니다.
$$p \simeq \begin{pmatrix} \mathbf{u} \\ w \end{pmatrix} = \begin{pmatrix} \mathbf{u} \\ f(\mathbf{u}, a, b) = \frac{r}{\tan \theta} \end{pmatrix} = \begin{pmatrix} \mathbf{u} \\ \frac{r}{\tan \frac{ar}{1+br^2}} \end{pmatrix}$$
d이 식이 바로 이미지 위의 점과 광축으로부터 실세계의 한 점으로 향하는 3D 벡터와의 관계식입니다.
2.1 Model estimation from epipolar geometry
위 의 식에서 함수 $f(\mathbf{u}, a, b)$는 비선형 함수이므로 Taylor series를 이용하여 확장하여 봅니다.
$$\mathbf{p} \simeq \begin{bmatrix} \begin{pmatrix} \mathbf{u} \\ f(\cdot) - a_0 f_a(\cdot) - b_0 f_b (\cdot) \end{pmatrix} + a \begin{pmatrix} \mathbf{0} \\ f_a(\cdot) \end{pmatrix} + b \begin{pmatrix} \mathbf{0} \\ f_b(\cdot) \end{pmatrix} \end{bmatrix} \simeq \mathbf{x} + a \mathbf{s} + b \mathbf{t}$$
$ f_a, f_b$는 $f$를 $a$와 $b$에 대하여 편미분한 함수입니다.
결국 좌측 카메라의 벡터 $\mathbf{p}'$와 우측 카메라의 벡터 $\mathbf{p}$의 epipolar constraint는 다음과 같이 쓸 수 있습니다.
$$\mathbf{p}'^T F \mathbf{p} = (\mathbf{x}' + a \mathbf{s}' + b \mathbf{t}')^T F (\mathbf{x} + a \mathbf{s} + b \mathbf{t}) = 0$$
이제 우리가 구하고자 하는 파라미터를 벡터 $\mathbf{h}$로 변환하여 식을 다시 써보면,
$$(D_1 + a D_2 + a^2 D_3) \mathbf{h} = 0$$
이 됩니다.
여기서 $D_i$는 [11]에서 나온대로 이고, $\mathbf{h}$는 fundamental matrix의 각 원소로 구성된 벡터,
$$\mathbf{h} = [ f_1 \quad f_2 \quad f_3 \quad \dots\quad f_9\quad bf_3 \quad bf_6 \quad b_f7 \quad b_f8 \quad b_f9 \quad b^2f_9]$$
입니다.
이 식은 Quadratic Eigenvalue Problem (QEP)로 MATLAB polyeig 함수를 이용하여 a, b, F를 모두 풀어낼 수 있습니다. Epipolar geometry의 품질을 평가할 때에는 epipolar line과의 거리를 사용하지 않고 [12]에 나온 angular error를 사용하였습니다.
Field of view이 원형이기 때문에, view angle $\theta_m$과 view field circle의 반지름 $R$을 이용하여 $a = \frac{1+b R^2) \theta_m}{}R$로 표현할 수 있습니다. 이렇게 하면 기존의 3D vector로 변환하는 모델을 one parametric model로 만들 수 잇고 9 point RANSAC을 이용하여 대부분의 outlier를 제외할 수 있습니다. 그 뒤 더 나은 추정을 위해 $a_0 = \frac{\theta_m}{R}, b_0 = 0$을 이용한 two parametric model로 15-points RANSAC을 사용합니다.
3 Camera model fitting
3.1 Precision of the division model
여기서 입사각을 계산하기 위해 사용된 division model과 흔히 사용되는 2차 $(\theta = a_1 + a_2 r^2)$와 3차 $(\theta =a_1 + a_2 r^2 + a_3 r^3 )$ 다항식을 비교하였습니다. Ground truth는 광학적으로 측정된 값을 사용하였는데, 이 논문에서 제안한 방법이 각도에 대한 에러가 더 적음을 알 수 있었습니다.
또한 점들을 이미지 원점으로부터 샘플링 영역을 늘려나가면서 측정한 에러와 바깥으로부터 샘플링 영역을 안으로 늘려가며 측정한 에러를 보면 바깥에서 안으로 들어오는 것이 일정한 에러를 보여주었습니다.
즉 view field 바깥의 위치한 점들이 이미지 안쪽보다 더 중요한 것으로 이야기 할 수 있습니다. 따라서 좋은 모델을 얻으려면 안 쪽보다는 바깥쪽 점을 사용해야 할 것입니다.
3.2 Using bucketting in RANSAC
이를 RANSAC에 반영하여 bucketing과 비슷한 방법으로 샘플링 방법을 제안합니다. 앞에서 이야기했듯 추정된 epipolar geometry는 epipolar line과의 angular error를 이용하여 평가되는데, 이상적으로는 0이 나와야 하지만 그렇지가 않아 약간의 관용도를 주어야 합니다. 또한 angular error의 관용도는 점차 확산되어 이미지 점의 위치에 중심에서 멀어질 수록 좁아져야 합니다.
$f(0) = 1/a $이기 때문에 중점 $(u_0, v_0)$은 $a$에 영향을 받게 되므로 중심과의 거리에 따라 $a$의 관용도도 같이 변화여 중심에 가까우면 큰 관용도를 갖게 됩니다. RANSAC은 관용도 이하의 점, inlier의 숫자가 많은 것을 선택하게 작동하므로 가까이에 있는 점들을 더 inlier로 판별되기가 쉽습니다. 하지만 바깥 쪽 점들에게 맞추어진 정확한 모델은 적은 inlier 수를 가질 가능성이 높고, 이 때에는 중앙부의 점들은 대부분 inlier로 판명되게 되므로 기여도가 낮아지게 됩니다. 따라서 바깥쪽에 있는 점들이 더 정보가 많다고 볼 수 있습니다.
이를 반영하여 중앙 가까이의 점들은 무시하고, 남은 부분들을 반지름에 따라 같은 넓이를 갖도록 3개의 지역으로 나누어 RANSAC이 샘플링을 할때 영역별로 같은 수의 점을 추출하도록 하였습니다. 이것은 degenerate되는 것과 편향된 추정을 막을 수 있습니다.
4 Algorithm
- 렌즈의 field of view에 해당하는 타원을 구하고 이를 원이 되도록 이미지를 변환합니다. 두 이미지의 대응점을 찾고 원 중심으로부터의 거리가 view field circle의 반지름의 0.4 배 이상인 것만 사용합니다.
- 이미지 포인트의 좌표를 1000으로 나누어 스케일링합니다. $a_0 = R / \theta_m, b_0 = 0$을 사용합니다.
- MATLAB의 polyeig를 이용하여 QEP 문제를 풀어냅니다.
- $a \neq 0, a \lt 10 $인 결과를 선택하여, 각각에 대하여 3D 좌표를 생성합니다. 가능한 조합은 각 a에 대하여 6개의 b가 가능하고, 이 조합에 따른 개별적인 F가 가능합니다.
- 모든 대응점에 대하여 angular error를 계산한 다음 가장 적은 에러를 갖는 a,b를 선택하고 이를 이용하여 F를 결정합니다.