인공지능/컴퓨터비전

[컴퓨터비전개론][8장]RANSAC

우향우@ 2023. 4. 22. 17:20

개요

이전 시간에 특징점 쌍들의 위치를 변화시켰을때 오차의 총합이 가장 적은 변환행렬을 구했다. 하지만 여기서 특징점 쌍들중 잘못 매칭되어 정상 변환과 크게 벗어나는 쌍들이 있을 수 있다. 이런 쌍들은 최종 변환 행렬의 정확도를 떨어트린다.

정상적으로 매칭되어 정상 범주의 변환을 기대하는 특징점 쌍들을 inliers 아닌 쌍들을 outliers라고 한다.

RANSAC은 특징점 쌍들중 outliers를 쳐내고 inliers만 남기는 알고리즘 중 하나이다.

 

RANSAC

RANSAC은 다음 단계로 처리된다.

1. 샘플 쌍 개수를 정한다. 보통 사용할 변환 행렬을 정의할 수 있는 최소 쌍 개수로 정한다. (이동행렬이면 1개, 아핀이면 3개, homograph면 4개)

2. 전체 특징점 쌍중 샘플 쌍 개수만큼 랜덤으로 고른다.

3. 해당 쌍들로 변환행렬을 만든다.

4. 각 특징점 쌍들중 한 특징점을 변환행렬로 변환하고 비교하여 오차를 계산한다.

5. 오차가 일정 이하면 inliers, 이상이면 outliers로 임시 분류한다.

6. 2~5처리를 여러번 반복한다.

7. 그중 inliers가 가장 많이 나온 샘플의 inliers를 최종 inliers로 사용한다.

8. 그렇게 구한 inliers만 이용하여 변환행렬을 구한다.