어떤 현상을 설명하는 이론 모델을 만들고자 하면 현상에서 관측데이터를 모아야한다. 그런데 관측 데이터에는 모델에 대한 잘못된 가정이나 측정장비의 오차등에서 생기는 여러가지 형태의 노이즈가 들어있게 마련이다. 이러한 노이즈는 모델을 정확히 예측하는 것을 방해한다. 이처럼 모델파라미터의 예측을 방해하는 데이터(outliner)가 들어 있는 관측데이터로부터 어떻게 하면 모델을 구축할 수 있는가라는 질문에 대한 한 대답을 RANSAC ("RANdom SAmple Consensus")  알고리즘이 제공한다. 이 알고리즘은 1981년 Fischler 과Bolles에 의해서 제안되었다.

RANSAC 알고리즘에 들어가는 입력은 관측된 데이터값과, 관측결과를 피팅하거나 설명할 수 있는 모델파라미터, 그리고 신뢰성을 나타내는 파라미터를 필요로 한다.

RANSAC알고리즘은 주어진 원본데이터에서 반복적으로 일부를 임의로 선택하는 과정을 반복하여서 최적의 파라미터를 예측하는 프로시져의 형태를 가진다. 전체의 관측데이터가 M개 있고, 모델파라미터를 예측하는데 N개의 데이터가 필요한 경우에, 알고리즘은 :

     1. 임의로 관측데이터에서 N개의 서브데이터를 선택한다.
     2. 이 데이터를 (가상의) inlier로 생각하고 모델을 예측한다.
     3. 원본데이터중에서 예측된 모델에 잘 맞는가를 체크한다. 잘 맞는 데이터 수를 K라고 한다.
     4. 만약에 K가 충분하면, 이 모델을 확정하고 알고리즘을 종료한다.
     5. 모델이 좋지 않으면 1-->4과정을  L 번  반복한다.
     6. 충분히 반복후에도 좋은 모델을 찾지 못하면 모델예측에 실패한 것으로 간주한다.

1. 임계값 K 는 모델이 얼마나 잘 맞는가에 대한 사용자입력으로부터 결정이 된다. 그러나 대략적으로 주어진 샘플에서 inlier의 비율 Pg 이라고 생각되는 정도를 잡으면 된다 :
 
   K = M * (1- P
g)

2. 얼마나 많은 반복을 해야하는가? 주어진 관측데이터에서 inlier일 확률이 Pg인 경우에 L번의 모델예측시도가 실패할 확률을 계산하여서 이것이 주어진 설정값, pfail 보다도 작은 경우에 모델예측의 실패로 처리하므로,

  pfail   = L번의 모델예측 실패확률
          = (한번 시도가 실패할 확률)L
          = (1 - 한번 시도가 성공할 확률))L
          = (1 - (랜덤데이터가 모델을 예측할 확률)N))L
          = (1- (Pg) N)L

이 사실로 부터 최대 반복횟수는 
    
   L = log(pfail)/log(1-(Pg)N)

로 주어진다.
inlier가 반이 섞인 경우 Pg (=주어진 데이터중에서 inlier일 확률)
= 0.5,
p
fail = 0.01 인 경우, 만약에, N = 3 (세 점만 있으면 모델구성이 가능한 원의 피팅이 한 예임) 일 때, 최대 반복횟수는 윗 식에 적용하면,
     
                   L = 35 회


RANSAC알고리즘은 주어진 관측데이터에 많은 outlier가 존재하더라도 매우 정확히 모델파라미터를 예측할 수 있는 능력이 있는 robust한 알고리즘이지만, 얼마나 많은 반복을 해야하는가에 대한 상한값이 제공되지 않는다(사용자가 pfail 를 설정한다). 따라서 사용자 설정에 의한 상한값은 최적의 모델이 아닐 수 있다.

"The RANSAC procedure is opposite to that of conventional smoothing techniques: Rather than using as much of the data as possible to obtain an initial solution and then attempting to eliminate the invalid data points, RANSAC uses as small an initial data set as feasible and enlarges this set with consistent data when possible".

Martin A. Fischler and Robert C. Bolles (June 1981). "Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography". Comm. of the ACM 24: 381–395.

예제코드:
ransac을 이용한 라인 피팅: http://blog.naver.com/helloktk/80029006029
ransac을 이용한 원 피팅: http://kipl.tistory.com/32

'Image Recognition' 카테고리의 다른 글

Gaussian Mixture Model  (2) 2008.06.07
Rasterizing Voronoi Diagram  (0) 2008.05.26
RANSAC Algorithm  (0) 2008.05.24
Contour Tracing  (0) 2008.05.22
Gausssian Scale Space  (0) 2008.05.22
Watershed Algorithm 적용의 예  (2) 2008.05.21
Posted by helloktk