近年來學者們不斷在對經典演算法ransac進行各種改進,本文想總結一下近年來ransac演算法的各種改進優化。看到乙個寫得很好的部落格系列,可惜博主沒有繼續寫下去了,很希望博主哪天想起來繼續寫下去,我暫時在這裡做一些簡單補充吧(此處暫時只蒐集到的一些相關文獻,後續隨著學習的增加會再繼續完善~ :p)。
ransac簡史
ransac簡史(一)——ransac之初
ransac演算法步驟
1) 從所有的資料中取樣n個點,以能確定出模型;
2) 利用取樣點計算模型;
3) 利用模型來確定其他點是否是內點;如果內點率達到指定值,演算法終止,並用所有內點優化模型;否則,繼續上述過程,直到達到指定的迭代次數,此時將最高內點率對應的模型作為最終模型。
核心思想
:待求解的模型,應該是能同時
使最多
資料點都
符合模型。
可能存在的問題
如何選取能用來確定模型的最小資料量n?
取樣策略?
在第一步中,我們要求取樣點盡可能少,同時我們也知道,當資料點存在雜訊(通常考慮為高斯雜訊)時,樣本點的數目越多,求解的模型越準確。這就意味著我們此刻求解的模型不夠準確,那麼這個不夠準確的模型,是否能夠用來判斷其他點是否是內點?
如果我們待求解的問題,無法用乙個模型,或者無法用乙個僅包含若干個引數的模型進行表達,此時是否還能使用「最大一致性」的思路?
如何判斷其他點是否為內點?如果通過其他點與模型的符合程度,那麼如何設定這樣乙個閾值?有時乙個資料是否為內點還與其他資料相關,那麼此時如何考慮資料間的關聯?
(例如兩個資料點相衝突,不可能同時為內點。這種情況會發生在:根據兩張圖特徵點匹配,求解其基礎矩陣時,如果a圖中的兩個點,匹配到b圖中的同乙個點)
使演算法終止的內點率閾值?
(對於一組資料,通常情況下我們是無法知道其最大內點率,但或許我們可以事先求解出最優模型對應的內點率)
如何確定迭代次數上限?
《image matching from handcrafted to deep features: a survey》中提到:
《主成分分析的匹配點對提純方法》中提到:
1.prosac 漸近樣本一致 [6]
progressive sample consensus**翻譯
相比經典的 ransac 方法均勻地從整個集合中取樣,prosac 方法是從不斷增大的最佳對應點集合中進行取樣的。所以這種方法可以節省計算量,提高執行速度。
該方法採用半隨機方法,對所有點對進行質量評價計算q值,然後根據q值降序排列,每次只在高質量點對中經驗模型假設與驗證,這樣就大大降低了計算量,在ransac無法收斂的情況下,prosac依然可以取得良好的結果。opencv中的rho方法就是基於prosac估算。
2.usac 全域性ransac [7]
usac**翻譯
stage1: 最小集取樣方法採用2.2.2節中的prosac。
stage3: 模型(引數)驗證採用2.4.3的sprt測試。
stage4: 產生最終模型,採用2.5.1介紹的lo-ransac。
在本文中,我們通過分析和比較多年來研究的各種方法,對基於ransac的魯棒估計的最新研究進行了全面的綜述。通過引入乙個新的穩健估計框架,我們為這一分析提供了乙個共同的背景,我們稱之為全域性ransac(usac)。usac擴充套件了標準ransac的簡單假設和驗證結構,納入了許多重要的實際和計算考慮因素。
3.mlesac [13]
4.napsac [10]5.lo-ransac 區域性優化的ransac [2] [4]6.r-ransac 隨機模型驗證策略 [3] [11]7.dsac [5]
8.ng-ransac [8]
9.graph-cut ransac [9]
p-ransac
逆序對及其變種
首先看一下逆序對 leetcode 劍指offer 51 在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個 逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000這也是乙個經典問題,而且如果方向沒對的話,是...
nim遊戲及其變種
nim遊戲 n堆石子,操作為可以從任意一堆拿走任意正整數個石子,不能操作者輸。問先手勝還是後手勝。結論 當n堆石子的個數的亦或為0時,先手必敗 否則先手必勝。證明 1,若亦或值不為0,則一定可以通過一步操作讓它變成0.考慮亦或值最高位的那個1,一定有一堆石子數在那一位是1 否則總的亦或裡的那個1是怎...
Relu啟用函式及其變種
神經網路中使用啟用函式來加入非線性因素,提高模型的抽象表達能力。relu rectified linear unit,修正線性單元 relu公式近似推導 下面解釋上述公式中的softplus,noisy relu.softplus函式與relu函式接近,但比較平滑,同relu一樣是單邊抑制,有寬廣的...