논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Moving on to dynamic environments: Visual odometry using feature classification

(10.1109/IROS.2010.5650517)

1. Introduction

스테레오 카메라를 통한 비디오를 입력하으로 하여 도시 환경에서 여러 움직이는 물체과 자차의 ego-motion을 분리하여 추정하는 문제를 해결하고자 합니다. 한가지 가정은 카메라 좌표계를 알고 있다고 하였고, 스테레오 카메라의 관계는 시간이 지나면서 변할 수도 있다고 하였습니다.

2. Related Work

3. Visual Ego-Motion Estimation

A. Trifocal Constraints for Visual Ego-Motion Estimation

여기서는 3개의 이미지 간의 관계를 3 x 3 x 3 trifocal tensor $T$를 이용하여 표현하였습니다. 이는 서로 다른 뷰포인트의 projective geometry의 대한 정보를 담고 있습니다. 이를 이용하여 이미지 A, B의 특징점 $x_A \leftrightarrow x_B $를 이미지 C로 보낼 수 있도록 사용하였습니다. 이 변환은 trifocal tensor의 점-선-점 변환으로 표현할 수 있습니다.

$$x_C^k = x_A^k \cdot l_{B, j} \cdot T_i^{jk}$$

여기서 $l_B$는 특징점 $x_B$를 지나는 임의의 선입니다.

k 프레임에서 스테레오의 카메라에서의 좌, 우 특징점이 주어지면 이 둘간의 특징점과 다음 k+1 프레임 중 한 카메라로의 대응 점으로 매핑이 이루어지게 됩니다.

B. Kalman-Filtering

먼저 양 스테레오 이미지에서 특징점을 추출하게 됩니다. 여기에서는 SURF, SIFT, Harris Corner등 여러 특징점 추출 방식을 사용할 수 있습니다. 이렇게 추출한 뒤, 현재 프레임과 다음 프레임의 총 4개의 이미지에서의 대응 관계들을 구합니다.

$$x_{R,k} \leftrightarrow x_{L,k} \leftrightarrow x_{R,k+1} \leftrightarrow x_{L,k+1}$$

이 대응 관계들을 이제 칼만 필터의 입력으로 사용하게 됩니다.

칼만 필터의 모델링은 다음과 같이 이용하였습니다.

$$y_{k+1} = f(y_k) + w_k$$

$$z_k = h(y_k) + \mathbf{v}_k$$

$y_k = (v_{X, k}, v_{Y, k}, v_{Z, k}, w_{X, k}, w_{Y, k}, w_{Z, k})$는 k프레임에서의 상태를 나타냅니다. $v_k$들은 세 축에 대한 이동 속도를 나타냅니다. $w_k \sim N(0, Q_k) $는 시스템 노이즈를 나타냅니다.

$ z_k = [u_{R,k,1}, \cdots, v_{L, k, N}]$은 4*N 차원의 관측 벡터로 각 이미지의 대응점들로 구성되어있습니다. $\mathbf{v} \sim N(0, R_k)$는 관측 노이즈를 나타냅니다.

여기서는 시스템이 비선형이므로 1차 Talyor-approximation을 사용한 Extended Kalman Filter (EKF)와 Iterated Extended Kalman Filter (IEKF)를 사용하였으나 높은 수준의 비선형으로 인하여 결과가 좋지 않았습니다. 더 좋은 경우는 Unscented Transform를 이용한 Unscented Kalman Filter (UKF)나 Iterated Sigma Point Kalman Filter (ISPKF)가 더 나은 결과를 보여주었습니다. 여기서는 최종적으로 ISPKF를 사용하였습니다.

4. RANSAC-based Outlier Rejection

앞의 Trifocal 방법은 노이즈에 매우 ㅟ약합니다. 잘못된 매칭 결과나 움직이는 물체에서 뽑힌 정보들은 악영향을 끼칩니다. 따라서 이를 RANSAC 알고리즘으로 한번 감싸도록 하였습니다.

여러 대응 관계들 중 무작위로 일부를 추출한 뒤 이를 이용하여 egomotion을 추정하였습니다. 부분 집합의 수와 반복 수는 다음으로 결정됩니다.

$$n = \frac{\log(1-p)}{\log(1-(1- \epsilon)^s)}$$

$s$는 계산에 필요한 최소 데이터의수, $p$는 하나의 샘플이 inlier일 확률, $\epsilon$은 데이터셋의 oulier의 비율입니다.

뒤에 설명할 단계에서 outlier의 수가 많이 줄어들 것이기 때문에 반복 횟수 또한 확연하게 줄어들게 될 것입니다.

kalman filter가 수렴하게 되면 모든 inlier들에 대하여 Euclidean reprojection 에러를 계산하여 스레스홀드보다 낮은 값을 inlier로 판단합니다. 마지막 단계에서 inlier로 판단된 샘플들만을 이용하여 최종 egomotion을 추정합니다.

5. Advanced Outlier Rejection

앞에서 outlier에 대한 영향을 줄였지만, 많은 수의 ouilier들은 RANSAC에서 필요한 반복의 수를 증가시킵니다. 또한 일정한 움직임이 화면에 있을 경우, RANSAC이 여기에 관심을 가져버릴 수도 있습니다. 이는 교통 체증이 있을 경우에 잘 나타납니다. 따라서 물체를 검출한 다음, 물체의 대응 점들은 제거하고자 합니다. [9]의 연구와는 실시간에서 사용할 수 있도록 가벼운 알고리즘을 사용하였습니다. 이 부분은 3장의 전처리 단계에서 사용됩니다.

A. Image Patch Classification

3장에서 대응점 후보를 추출하는 단계에서 그 대응점이 물체인지를 판별하는 classifier를 만들고자 합니다. 각 후보 $(u, v)$에 미리 정해둔 크기 $s$를 곱하여 정사각형의 이미지 패치를 어습니다. 그 뒤 디스크립터 함수를 이용하여 특징 벡터를 계산하고 이를 통해 이진 분류기 방법을 사용하여 분류하게 됩니다.

  1. Descriptors : 많은 디스크립터 방법이 있지만, 여기서는 픽셀의 gray값, wavelet transform, SURF, SIFT를 사용하였습니다.
  2. Classifiers : 비전 문제에서 많이 사용하는 Support Vector Machine (SVM)은 커널을 사용할 경우 그 속도가 매우 느려집니다. 여기서는 ensemble of extremly randomized decision tress를 선택하였습니다.

B. Adaptive Bucketing

Classification이 끝나면 대응점을 찾는 과정이 진행됩니다. 그 후, bucketing이라는 방법이 적용되어 대응점들을 골라냅니다. 이는 전체 이미지를 bucket이라 불리는 작은 사각형으로 나눈 뒤, classification의 결과에 따라 bucket을 활성화시키거나
비활성화시키게 됩니다. 즉, 특징들이 일정 비율 이상 물체로 분류되면 bucket을 활성화 합니다. 다음, 활성화된 bucket에서 일정한 수의 대응점들만 선택됩니다.

이를 adaptive bucket이라 부르는데, 이는 두가지 효과가 있습니다. 하나는 classification 주변에서 발생하는 false positive를 막는 효과가 있습니다. 다른 하나는 이미지에서 동일한 분포로 대응점들을 사용하는 효과가 있습니다.

특히 후자의 경우, 여러가지 의미를 지니고 있습니다. 먼저 잘 분포된 대응 들은 roll-axis에 대하여 잘 분포된 것이기 때문에 선형, 그리고 회전 속도에 대한 좋은 추정을 가능하게 합니다. 특히 카메라로부터 멀리 있는 특징들은 선형 이동에 대해서는 별 중요한 정보를 주지 않지만, 회전 이동에 대해서는 중요합니다. 반대로 가까이 있는 특징들은 선형 이동에 대해서 많은 정보를 가져가 줍니다. 또한 bucketing은 추적 시 발생하는 drift 현상을 줄여주는 효과도 가지고 있습니다.

결과적으로 이 outlier rejection 방법은 전체 움직임 추정의 질을 높여줍니다. 또한 Kalman Filtering에서 사용되는 데이터를 줄여 역행렬 계산의 부담을 줄여주게 됩니다.

6. Experimental Results

7. Conclusion

Bibliography


Add a Comment Trackback