今天學習了一下RANSAC隨機樣本一致性算法,其在圖像融合、特征點匹配方面有很強大的應用。網上已經有很多人寫了關于這方面的文檔,就不再造輪子了。特此羅列出來,以供后續參考。
我的數學之美(一)——RANSAC算法詳解
這篇文章很基本地講述了RANSAC算法的基本概念。RANSAC算法原理與源碼解析
本篇文章講述了在opencv特征點匹配過程中ransac算法濾除誤匹配的詳細思路。其中講到:OpenCV中濾除誤匹配對采用RANSAC算法尋找一個最佳單應性矩陣H,矩陣大小為3×3。RANSAC目的是找到最優的參數矩陣使得滿足該矩陣的數據點個數最多,通常令h33=1來歸一化矩陣。由于單應性矩陣有8個未知參數,至少需要8個線性方程求解,對應到點位置信息上,一組點對可以列出兩個方程,則至少包含4組匹配點對。
RANSAC算法從匹配數據集中隨機抽出4個樣本并保證這4個樣本之間不共線,計算出單應性矩陣,然后利用這個模型測試所有數據,并計算滿足這個模型數據點的個數與投影誤差(即代價函數),若此模型為最優模型,則對應的代價函數最小。
注意兩點:- 目標圖像也就是測試圖像或者稱為query set(查詢集),場景圖像稱為train set (訓練集) ,對應模板圖像。一般我們都是在訓練圖像中,查詢測試圖像的特征點的匹配情況。
- 關于上面投影矩陣參數的求解問題。
一組點對(兩個點)代入上面方程,則可以分解出三個方程,但實際上就是兩個方程,最后一個方程是縮放參數s,可以消掉。至于s的存在主要是齊次化的結果。
學習OpenCV——KeyPoint Matching 優化方式
- 學習OpenCV——通過KeyPoints進行目標定位
介紹了sift,surf,orb描述子的一些對比,以及匹配的一些優化方法。