ransac是「random sample consensus(隨機抽樣一致)」的縮寫。它可以從一組包含「局外點」的觀測資料集中,通過迭代方式估計數學模型的引數。它是一種不確定的演算法——它有一定的概率得出乙個合理的結果;為了提高概率必須提高迭代次數。該演算法最早由fischler和bolles於2023年提出。
ransac的基本假設是:
(1)資料由「局內點」組成,例如:資料的分布可以用一些模型引數來解釋;
(2)「局外點」是不能適應該模型的資料;
(3)除此之外的資料屬於雜訊。
局外點產生的原因有:雜訊的極值;錯誤的測量方法;對資料的錯誤假設。
ransac也做了以下假設:給定一組(通常很小的)局內點,存在乙個可以估計模型引數的過程;而該模型能夠解釋或者適用於局內點。
matlab實驗:一組二維點,包含誤差很大的點,如果直接用最小二乘法,求出的模型是不對的。而乙個好的方法就是用ransac演算法剔除誤差較大的點,獲得最大的支援集合,用此最大支援集合求出最佳的模型。
下圖是二維點集合:
如下是用最小二乘法直接求模型的結果(藍線):
下邊用ransac演算法剔除誤差較大的點(紅線):
matlab學習筆記(九) RANSAC
隨機抽樣一致演算法 random sample consensus 多檢視幾何p73 1 思想 隨機選擇兩點,定義一條直線,該線的支集由一定距離閾值內的點數目來度量。重複多次這樣的隨機選擇,具有最大支集的線被認為是魯棒擬合,在距離閾值以內的點稱為內點 組成一致集 反之稱為野值。2 演算法框圖 目標乙...
RANSAC演算法詳解
另參考 給定兩個點p1與p2的座標,確定這兩點所構成的直線,要求對於輸入的任意點p3,都可以判斷它是否在該直線上。初中解析幾何知識告訴我們,判斷乙個點在直線上,只需其與直線上任意兩點點斜率都相同即可。實際操作當中,往往會先根據已知的兩點算出直線的表示式 點斜式 截距式等等 然後通過向量計算即可方便地...
RANSAC演算法詳解
另參考 給定兩個點p1與p2的座標,確定這兩點所構成的直線,要求對於輸入的任意點p3,都可以判斷它是否在該直線上。初中解析幾何知識告訴我們,判斷乙個點在直線上,只需其與直線上任意兩點點斜率都相同即可。實際操作當中,往往會先根據已知的兩點算出直線的表示式 點斜式 截距式等等 然後通過向量計算即可方便地...