위 사진은 다른 시점에서 찍은 두 사진이 있다. Feature match를 통해 Fundametal matrix를 구하여 camera의 motion을 구한 것이다. 이때 Fundamental matrix를 통해 구한 결과와 다른 특징은 빨간색으로 그렇지 않고 잘 연결된 특징은 초록색으로 연결한 것이다.
사전에 정의된 조건들과 다른 변화(밝기, 회전, 가림, 블러 등)들은 outlier가 될 수 있다.
Closed-form algorithm:
Miniaml solver 알고리즘, 정확한 기하학적 조건을 가지고 있는 경우에만 잘 작동
사전에 정의된 조건과 다른 데이터에 대해 성능이 보장되지 않음
Iterative optimization:
훨씬 더 많은 데이터로 작동하며, 모든 데이터가 포함되는 답을 지속적으로 찾아가는 방법으로 작동
데이터를 기준으로 하기 때문에 데이터가 잘못되면 결과도 잘못되는 특징이 있음
대부분의 VSLAM 알고리즘이 이 방식으로 동작하기 때문에 outlier를 제거하여 일관된 데이터로부터 학습할 수 있도록 만들어야하는 과정이 필요
무작위로 샘플링한 데이터로 모델을 만들고 데이터들 간의 합의도를 계산하여 다른 데이터들로 해당 모델이 정확한지 아닌지를 평가하는 과정을 거친다.
RANSAC은 template algorithm으로 실제로 안에서 돌아가는 알고리즘은 따로있다. 예를 들어 Fundamental matrix를 구한다고 할 때, 먼저 랜덤하게 추출된 데이터를 가지고 8-point algorithm을 구한다. 이 단계에서 구한 matrix를 model이라고 한다. 이렇게 만들 model을 통해 다른 데이터들을 통해 평가를 수행하는 과정을 거치게 된다. 평과 과정에서 이전에 가장 높은 Score 보다 높다면, 이번 iteration에서 구한 모델과 socre를 기록한다. 그렇지 않으면 버린다. 위 과정을 계속 반복해서 가장 좋은 결과를 찾는다.
T: Number of samplings required to get optimal model
p: Probability of sampled data to be inlier
-> 뽑은 모델이 전부 inlier로 이루어져야 할 확률
e: Ratio of inliers : outliers of the entire dataset
-> 전체 데이터 안의 inlier와 outlier의 비율
s: Minimal number of data to be a minimal set
-> 매 loop 마다 sampling 할 데이터의 수
p=0.99 (We want 99% accuracy)
e = 0.5 (Roughtly the dataset is make of 50% inliers and 50% outliers)
s = 3, 4, 5, 8(P3P, Houmography, Essential matrix, Fundamental matrix)
추가적으로 실제 연산에 필요한 시간을 곱해주면 전체 프로세스의 대략적인 시간을 구할 수 있다.
이미지 매칭에 특화된 방법 중 하나이다. 데이터의 prior를 잘 이용한 방법이다. PROSAC은 RANSAC의 data sampling 과정에서 데이터의 유사성을 판단하는 지표(유사도, 거리 등)가 좋은 데이터를 우선적으로 sampling 하기 때문에 progressive하게 동작한다. 만약, 주어진 반복을 못 마치고 최적화되지 못하더라도 기존의 RANSAC과 같은 성능을 보여준다.
dataset 내부의 데이터 pattern을 활용하는 방법이다. inlier 데이터의 경우 뭉쳐있고, outlier의 경우 떨어져있는 특징을 갖는데, Lo-RANSCA은 이러한 특성을 활용하는 방법이다. 이 말은 즉, 정답을 찾았다면 random하게 sampling 할 것이 아니라 정답 주변에서 sampling 하는 것이 유리하다는 의미이다. inner-RANSAC과 optimization 방법을 사용해서 보다 정교한 모델을 만드는데 기여한다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!