http://blog.youkuaiyun.com/fengbingchun/article/details/5866666
對角點進行初始匹配後,所選定的角點並不能保證全部是正確的點,也可能有誤點,因此,還需要進一步對所選定的角點進行精確匹配。
RANSAC(RANdom Sample And Consensus)方法是由Fischler和Bolles提出的一種魯棒性的參數估計方法。它的基本思想是在進行參數估計時,不是不加區分地對待所有可用的輸入數據,而是首先針對具體問題設計出一個目標函數,然後迭代地估計該函數的參數值,利用這些初始參數值把所有的數據分為所謂的「內點」(Inliers,即滿足估計參數的點)和「外點」(Outliers,即不滿足估計參數的點),最後反過來用所有的「內點」重新計算和估計函數的參數。
使用RANSAC估計方法,可以最大限度地減少噪聲及外點的影響。
RANSAC用於選定最佳角點的主要步驟為:
(1)、將初始提取的2行N列的N個角點變成3行N列的N個角點,第三行為全1;
(2)、對初始提取的角點進行歸一化;
(3)、設置迭代最大次數;
(4)、設置每次隨機選取時最少的角點個數;
(5)、每次隨機選取由(4)指定個數的角點;
(6)、判斷由(5)中選取的角點,是否有部分共線,並設定最大循環次數;
(7)、對選定的角點計算2-D單應性矩陣;
(8)、選定一次內點並記錄;
(9)、對選定的內點進行判斷;
(10)、如滿足條件(9)則作為選出的最好一組內點,否則,依次循環(5)~(9);
RANSAC算法由於在初始時是隨機選取角點,因此存在不確定性,即時相同操作對兩對同樣的特征點進行RANSAC算法角點提取,每一次得出的結果也不一定就是相同的,但是最終的效果一般都是比較理想的。