Random Sample Consensus(RANSAC)演算法介紹

來源:互聯網
上載者:User

標籤:random   電腦視覺   opencv   ransac   

       轉眼間2012年過了三個月了,最近在做目標跟蹤,需要利用ransac演算法進行映像匹配,使用Opencv+vs進行實現。終於初見成效啊,很激動也很興奮,在這裡mark一下,以備查用 !這裡就不貼源碼了,想想都是淚啊!

       RANSAC是“RANdom SAmple Consensus(隨機抽樣一致)”的縮寫。它可以從一組包含“局外點”的觀測資料集中,通過迭代方式估計數學模型的參數。它是一種不確定的演算法——它有一定的機率得出一個合理的結果;為了提高機率必須提高迭代次數。該演算法最早由Fischler和Bolles於1981年提出。

    RANSAC的基本假設是:
(1)資料由“局內點”組成,例如:資料的分布可以用一些模型參數來解釋;
(2)“局外點”是不能適應該模型的資料;
(3)除此之外的資料屬於雜訊。
    局外點產生的原因有:雜訊的極值;錯誤的測量方法;對資料的錯誤假設。

    RANSAC也做了以下假設:給定一組(通常很小的)局內點,存在一個可以估計模型參數的過程;而該模型能夠解釋或者適用於局內點。

一、樣本
    一個簡單的例子是從一組觀測資料中找出合適的2維直線。假設觀測資料中包含局內點和局外點,其中局內點近似的被直線所通過,而局外點遠離於直線。簡單的最小二乘法不能找到適應於局內點的直線,原因是最小二乘法盡量去適應包括局外點在內的所有點。相反,RANSAC能得出一個僅僅用局內點計算出模型,並且機率還足夠高。但是,RANSAC並不能保證結果一定正確,為了保證演算法有足夠高的合理機率,我們必須小心的選擇演算法的參數。

左圖:包含很多局外點的資料集       右圖:RANSAC找到的直線(局外點並不影響結果)


二、概述
    RANSAC演算法的輸入是一組觀測資料,一個可以解釋或者適應於觀測資料的參數化模型,一些可信的參數。
    RANSAC通過反覆選擇資料中的一組隨機子集來達成目標。被選取的子集被假設為局內點,並用下述方法進行驗證:
    1.有一個模型適應於假設的局內點,即所有的未知參數都能從假設的局內點計算得出。
    2.用1中得到的模型去測試所有的其它資料,如果某個點適用於估計的模型,認為它也是局內點。
    3.如果有足夠多的點被歸類為假設的局內點,那麼估計的模型就足夠合理。
    4.然後,用所有假設的局內點去重新估計模型,因為它僅僅被初始的假設局內點估計過。
    5.最後,通過估計局內點與模型的錯誤率來評估模型。
    這個過程被重複執行固定的次數,每次產生的模型要麼因為局內點太少而被捨棄,要麼因為比現有的模型更好而被選用。


三、演算法
    偽碼形式的演算法如下所示:
輸入:
data —— 一組觀測資料
model —— 適應於資料的模型
n —— 適用於模型的最少資料個數
k —— 演算法的迭代次數
t —— 用於決定資料是否適應於模型的閥值
d —— 判定模型是否適用於資料集的資料數目
輸出:
best_model —— 跟資料最匹配的模型參數(如果沒有找到好的模型,返回null)
best_consensus_set —— 估計出模型的資料點
best_error —— 跟資料相關的估計出的模型錯誤

iterations = 0
best_model = null
best_consensus_set = null
best_error = 無窮大
while ( iterations < k )
    maybe_inliers = 從資料集中隨機播放n個點
    maybe_model = 適合於maybe_inliers的模型參數
    consensus_set = maybe_inliers

    for ( 每個資料集中不屬於maybe_inliers的點 )
        if ( 如果點適合於maybe_model,且錯誤小於t )
            將點添加到consensus_set
    if ( consensus_set中的元素數目大於d )
        已經找到了好的模型,現在測試該模型到底有多好
        better_model = 適合於consensus_set中所有點的模型參數
        this_error = better_model究竟如何適合這些點的度量
        if ( this_error < best_error )
            我們發現了比以前好的模型,儲存該模型直到更好的模型出現
            best_model =  better_model
            best_consensus_set = consensus_set
            best_error =  this_error
    增加迭代次數
返回 best_model, best_consensus_set, best_error

    RANSAC演算法的可能變化包括以下幾種:
    (1)如果發現了一種足夠好的模型(該模型有足夠小的錯誤率),則跳出主迴圈。這樣可能會節約計算額外參數的時間。
    (2)直接從maybe_model計算this_error,而不從consensus_set重新估計模型。這樣可能會節約比較兩種模型錯誤的時間,但可能會對雜訊更敏感。

四、參數
    我們不得不根據特定的問題和資料集通過實驗來確定參數t和d。然而參數k(迭代次數)可以從理論結果推斷。當我們從估計模型參數時,用p表示一些迭代過程中從資料集內隨機選取出的點均為局內點的機率;此時,結果模型很可能有用,因此p也表徵了演算法產生有用結果的機率。用w表示每次從資料集中選取一個局內點的機率,如下式所示:
    w = 局內點的數目 / 資料集的數目
    通常情況下,我們事先並不知道w的值,但是可以給出一些魯棒的值。假設估計模型需要選定n個點,wn是所有n個點均為局內點的機率;1 ? wn是n個點中至少有一個點為局外點的機率,此時表明我們從資料集中估計出了一個不好的模型。 (1 ? wn)k表示演算法永遠都不會選擇到n個點均為局內點的機率,它和1-p相同。因此,
    1 ? p = (1 ? wn)k
    我們對上式的兩邊取對數,得出
    
    值得注意的是,這個結果假設n個點都是獨立選擇的;也就是說,某個點被選定之後,它可能會被後續的迭代過程重複選定到。這種方法通常都不合理,由此推匯出的k值被看作是選取不重複點的上限。例如,要從中的資料集尋找適合的直線,RANSAC演算法通常在每次迭代時選取2個點,計算通過這兩點的直線maybe_model,要求這兩點必須唯一。
    為了得到更可信的參數,標準差或它的乘積可以被加到k上。k的標準差定義為:
    
五、優點與缺點
    RANSAC的優點是它能魯棒的估計模型參數。例如,它能從包含大量局外點的資料集中估計出高精度的參數。RANSAC的缺點是它計算參數的迭代次數沒有上限;如果設定迭代次數的上限,得到的結果可能不是最優的結果,甚至可能得到錯誤的結果。RANSAC只有一定的機率得到可信的模型,機率與迭代次數成正比。RANSAC的另一個缺點是它要求設定跟問題相關的閥值。
    RANSAC只能從特定的資料集中估計出一個模型,如果存在兩個(或多個)模型,RANSAC不能找到別的模型。

六、應用
     RANSAC演算法經常用於電腦視覺,例如同時求解相關問題與估計立體攝像機的基礎矩陣。

個人感悟:從生硬的公式,到活生生的執行效果,還是比較曲折的,其中確實經曆不少磨難。但是在自己的努力下,逐一攻克。雖然走了不少彎路,但結局不算太差。演算法就是這樣,你對它狠點,它就對你微笑了,哈哈,繼續奮鬥!     

                                                                                                           2012年3月25日  於成都記

Random Sample Consensus(RANSAC)演算法介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.