RANSC演算法(隨機樣本一致性)

2021-06-13 07:48:18 字數 2422 閱讀 3178

它是根據一組包含異常資料的樣本資料集,計算出資料的數學模型引數,得到有效樣本資料的演算法。它於2023年由 fischler和bolles最先提出[1]。

(1)輸入:

1、判斷樣本是否滿足模型的誤差容忍度t。t可以看作為對內點雜訊均方差的假設,對於不同的輸入資料需採用人工干預的方式預設合適的門限,且該引數對ransac效能有很大的影響;

2、隨機抽取樣本集s的次數。該引數直接影響sc中樣本參與模型引數的檢驗 次數,從而影響演算法的效率,因為大部分隨機抽樣都受到外點的影響;

3、表徵得到正確模型時,一致集s*的大小n。為了確保得到表徵資料集p的正確模型,一般要求一致集足夠大;另外,足夠多的一致樣本使得重新估計的模型引數更精確。

4、演算法的迭代次數k。

5、適應於資料的模型model。

6、隨機在樣本抽樣的數目n。

(2)演算法流程:

1、考慮乙個最小抽樣集的勢為n的模型(n為初始化模型引數所需的最小樣本數)和乙個樣本集p,集合p的樣本數num(p)>n,從p中隨機 抽取包含n個樣本的p的子集s初始化模型m;

2、餘集sc=p\s中與模型m的誤差小於某一設定閾值t的樣本集以及s構成s*。s*認為是內點集,它們構成s的一致集(consensus set);

3、若#(s*)≥n,認為得到正確的模型引數,並利用集s*(內點inliers)採用最小二乘等方法重新計算新的模型m*;重新隨機抽取新的s,重複以上過程。

4、在完成一定的抽樣次數後,若沒找到一致集則演算法失敗,否則選取抽樣後得到的最大一致集判斷內外點,演算法結束。

(3)輸出:

1、best_model —— 跟資料最匹配的模型引數(如果沒有找到好的模型,返回null)

2、best_consensus_set —— 估計出模型的資料點

3、best_error —— 跟資料相關的估計出的模型錯誤

ransac的優點是它能魯棒的估計模型引數。例如,它能從包含大量局外點的資料集中估計出高精度的引數。ransac的缺點是它計算引數的迭代次數沒有上限;如果設定迭代次數的上限,得到的結果可能不是最優的結果,甚至可能得到錯誤的結果。ransac只有一定的概率得到可信的模型,概率與迭代次數成正比。ransac的另乙個缺點是它要求設定跟問題相關的閥值。ransac只能從特定的資料集中估計出乙個模型,如果存在兩個(或多個)模型,ransac不能找到別的模型。

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

輸入: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

①如果在選取子集s時可以根據某些已知的樣本特性等採用特定的選取方案或有約束的隨機選取來代替原來的 完全隨機選取;

②當通過一致集s*計算出模型m*後,可以將p中所有與模型m*的誤差小於t的樣本加入s*,然後重新計算m*。

RANSAC 隨機取樣一致性演算法

ransac範例的正式描述如下 首先,要給定 1乙個模型,該模型需要最少n個資料點去例項化它的自由引數 2一組資料點p,p中包含資料點的數量 p 大於n。然後,從p中隨機地選擇n個點 組成p的乙個子集s1 並例項化這個模型 構造成m1 接下來,利用例項化的模型m1去測定p中點的某個子集s1 這些點相...

隨機取樣一致性演算法RANSAC

作用1 點雲分割通過 空間平面 直線 二維或三維圓 圓球 錐體等模型 進行分割。作用2 點雲的配準對的剔除 例子 五個點雲,三個配準,利用ransac可以剔除另外兩個 演算法簡介 從樣本中抽取乙個子集,通過該演算法最小方差對這個樣本計算出這個該模型的引數 例如模型是一條直線,那麼計算該樣本所有的點到...

強一致性 弱一致性 最終一致性

這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...