隨機抽樣一致

隨機抽樣一致算法RANdom SAmple Consensus,RANSAC)。它採用迭代的方式從一組包含離群的被觀測數據中估算出數學模型的參數。 RANSAC是一個非確定性算法,在某種意義上說,它會產生一個在一定概率下合理的結果,而更多次的迭代會使這一概率增加。此RANSAC算法在1981年由Fischler和Bolles首次提出。

RANSAC的基本假設是

  1. 內群」(inlier, 似乎譯為內點群更加妥當,即正常數據,正確數據)數據可以通過幾組模型的參數來敘述其分佈,而「離群」(outlier,似乎譯為外點群更加妥當,異常數​​據)數據則是不適合模型化的數據。
  2. 數據會受雜訊影響,雜訊指的是離群,例如從極端的雜訊或錯誤解釋有關數據的測量或不正確的假設。
  3. RANSAC假定,給定一組(通常很小)的內點群,存在一個程序,這個程序可以估算最佳解釋或最適用於這一數據模型的參數。

範例

這裡用一個簡單的例子來說明,在一組數據點中找到一條最適合的線。假設,此有一組集合包含了內點群以及外點群,其中內點群包含可以被擬合到線段上的點,而外點群則是無法被擬合的點。如果我們用簡單的最小二乘法來找此線,我們將無法得到一條適合於內點群的直線,因為最小二乘法會受外點群影響而影響其結果。而用RANSAC,可以只由內點群來計算出模型,而且概率還夠高。然而,RANSAC無法保證結果一定最好,所以必須小心選擇參數,使其能有足夠的概率。

概述

  1. 在數據中隨機選擇若干個點設定為內點群
  2. 計算擬合內點群的模型
  3. 把其它剛才沒選到的點帶入剛才建立的模型中,計算是否屬於內點群
  4. 記下內點群數量
  5. 重複以上步驟
  6. 比較哪次計算中內點群數量最多,內點群最多的那次所建的模型就是我們所要求的解

這裡有幾個問題

  1. 一開始的時候我們要隨機選擇多少點(n)
  2. 以及要重複做多少次(k)

參數決定

假設每個點是真正內點群的機率是  ,則:

  = 真正內點群的數目 / 數據總數

通常我們不知道   是多少,  是所選擇的   個點都是內點群的機率,  是所選擇的   個點至少有一個不是內點群的機率,  是表示重複   次都沒有全部的   個點都是內點群的機率,假設算法跑   次以後成功的機率是  ,那麼:

 
 
 

所以如果希望成功機率高, , 當   不變時,  越大,  越大, 當   不變時,  越大,所需的   就越大, 通常   未知,所以   選小一點比較好。

應用

RANSAC算法經常用在計算機視覺領域,例如,對於一對立體相機,同時求解其對應點問題英語Correspondence_problem和估計它們之間的基礎矩陣

參考資料

外部連結