隨機取樣一致性(randomsampleconsensus),是 指從一組包含 「局外點」的資料集中,通過迭代方法估算數學模型的引數。
ransac是一種不確定的演算法,它有一定的概率得出乙個合理的結果,為了提高概率必須增加迭代次數。
來看這樣乙個簡單樣例,假設我們想擬合一條直線:
可以看到,圖中 紅色的點是 「局外點」,藍色的為 「內部點」,很明顯,我們想通過不斷隨機抽取的方式,使得我們選中的點恰好為藍色點,因為在這種情況下,擬合得到的模型誤差最小。
ransac 演算法思路非常簡單,在模型確定以及最大迭代次數允許的情況下,ransac總是能找到最優解。對於包含50%以上誤差的資料集,ransac的效果遠優於直接的最小二乘法。
關於拼接這裡不多說,前面的章節有過介紹,可以參考作者之前的博文【全景拼接 】。
我們來看一段作者蒐集的**(來自於 ziv yaniv):
#include #include "lineparamestimator.h"
lineparamestimator::lineparamestimator(double delta) : m_deltasquared(delta*delta) {}
void lineparamestimator::estimate(std::vector&data,std::vector¶meters)
void lineparamestimator::leastsquaresestimate(std::vector&data, std::vector¶meters)
meanx/=datasize;
meany/=datasize;
covmat11 -= datasize*meanx*meanx;
covmat12 -= datasize*meanx*meany;
covmat22 -= datasize*meany*meany;
covmat21 = covmat12;
if(covmat11<1e-12)
else
parameters.push_back(nx);
parameters.push_back(ny);
parameters.push_back(meanx);
parameters.push_back(meany);
}
bool lineparamestimator::agree(std::vector¶meters, point2d &data)
// ransac尋找匹配的**
templatedouble ransac::compute(std::vector&meters,parameteresitmator*paramestimator,std::vector&data,int numforestimate)
機器學習讀書筆記
第一章 引言介紹一些常識引入什麼是機器學習,機器學習的一些術語資料,規律,泛化,假設空間歸納偏好。1,假設空間 假設空間 監督學習的目的在於學習乙個由輸入到輸出的對映,這一對映由模型來表示。換句話說,學習的目的就在於找到最好的這樣的模型。模型屬於由輸入空間到輸出空間的對映集合,這個集合就是假設空間 ...
周志華 機器學習 讀書筆記
分類 classification 的是離散值,比如 好瓜 壞瓜 回歸 regression 的是連續值,例如西瓜成熟度 0.79 0.95 泛化 generalization 學得模型適用於新樣本的能力,稱為 泛化 generalization 能力.資料探勘 data mining 從海量資料中...
《機器學習實戰》讀書筆記
監督學習使用兩種型別的目標變數 之所以稱監督學習,是因為這類演算法必須知道 什麼,即目標變數的分類資訊 在無監督學習中,將資料集合分成由類似的物件組成的多個類的過程被稱為聚類 將尋找描述資料統計值的過程稱之為密度估計 是 否要 預測目標 變數的值 是 監督學習 目標變數型別 begin離散型 分類演...