RANSAC算法

RANSAC算法

隨機抽樣一致算法(RANdom SAmple Consensus,RANSAC),採用迭代的方式從一組包含離羣的被觀測數據中估算出數學模型的參數。是一種不確定的算法——有一定的概率得到一個合理的結果。爲了提高概率必須提高迭代次數。該算法最早由Fischler和Bolles於1981年提出。

RANSAC算法被廣泛應用在計算機視覺領域和數學領域,例如直線擬合、平面擬合、計算圖像或點雲間的變換矩陣、計算基礎矩陣等方面,使用的非常多。

RANSAC的基本假設:

1. 數據的“局內點”分佈可以用一些模型參數來解釋;

2. 數據的“局外點”是不能適應該模型的數據;

3. 除此之外的數據屬於噪聲;

4. 給定一組局內點(數量相對整體數據很少),存在一個可以估計模型參數的過程,該模型能夠解釋或適用於局內點。

 

RANSAC通過反覆選擇數據中的一組隨機子集來達成目標。被選取的子集被假設爲局內點,並用下述方法進行驗證:

  1.有一個模型適應於假設的局內點,即所有的未知參數都能從假設的局內點計算得出。
  2.用1中得到的模型去測試所有的其它數據,如果某個點適用於估計的模型,認爲它也是局內點。
     3.如果有足夠多的點被歸類爲假設的局內點,那麼估計的模型就足夠合理。
     4.然後,用所有假設的局內點去重新估計模型,因爲它僅僅被初始的假設局內點估計過。
     5.最後,通過估計局內點與模型的錯誤率來評估模型。
這個過程被重複執行固定的次數,每次產生的模型要麼因爲局內點太少而被捨棄,要麼因爲比現有的模型更好而被選用

 

通過實例對算法基本思想進行描述:

(1)首先,我們知道要得到一個直線模型,我們需要兩個點唯一確定一個直線方程。所以第一步我們隨機選擇兩個點。 
(2)通過這兩個點,我們可以計算出這兩個點所表示的模型方程y=ax+b。 
(3)我們將所有的數據點套到這個模型中計算誤差。 
(4)我們找到所有滿足誤差閾值的點,第4幅圖中可以看到,只有很少的點支持這個模型。 
(5)然後我們再重複(1)~(4)這個過程,直到達到一定迭代次數後,我們選出那個被支持的最多的模型,作爲問題的解。

 

 

參考:

忘記出處了0.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章