PCL學習3 平面擬合

2021-09-25 22:56:31 字數 1503 閱讀 8951

pcl平面擬合功能位於模組sample_consensus中:pcl sample_consensus

該模組基於「隨機抽樣一致演算法」(random sample consensus),不僅可以用於平面擬合,也可以擬合柱面、球面等,對ransac的簡單解釋:

ransac可以從一組包含「局外點」的觀測資料集中,通過迭代方式估計數學模型的引數。它是一種不確定的演算法——它有一定的概率得出乙個合理的結果;為了提高概率必須提高迭代次數。該演算法最早由fischler和bolles於2023年提出。影象檢索中,ransac可以作為檢索後的後續處理,對影象的中目標進行空間一致驗證。

具體原理:pcl 取樣一致性演算法

下面直接給出**:

#include

#include

#include

#include

#include

pcl::pointcloud

::ptr ground

(new pcl::pointcloud()

);//待擬合點雲指標

//省略ground的io操作,向ground讀入資料

vector<

int> inliers;

//用於存放合群點的vector

pcl::sampleconsensusmodelplane

::ptr model

(new pcl::sampleconsensusmodelplane

(ground));

//定義待擬合平面的model,並使用待擬合點雲初始化

pcl::randomsampleconsensus

ransac

(model)

;//定義ransac演算法模型

ransac.

setdistancethreshold

(0.05);

//設定閾值

ransac.

computemodel()

;//擬合

ransac.

getinliers

(inliers)

;//獲取合群點

vector<

int> tmp;

eigen::vectorxf coeff;

ransac.

getmodelcoefficients

(coeff)

;//獲取擬合平面引數,對於平面ax+by_cz_d=0,coeff分別按順序儲存a,b,c,d

cout<<

"coeff "

<<<

" "<<<

" "<<<

" "<

getmodel

(tmp)

;pcl::

copypointcloud

(*ground, inliers,

*ground_inliers)

;// for(int i=0; i//

PCL 使用RANSAC擬合平面

二 示例 三 結果展示 隨機抽樣一致性演算法ransac random sample consensus 是一種迭代的方法來從一系列包含有離異值的資料中計算數學模型引數的方法。ransac演算法本質上由兩步組成,不斷進行迴圈 1 從輸入資料中隨機選出能組成數學模型的最小數目的元素,使用這些元素計算出...

PCL擬合平面和球面模型

pcl sampleconsensusmodelsphere ptr model s new pcl sampleconsensusmodelsphere cloud pcl sampleconsensusmodelplane ptr model p new pcl sampleconsensusm...

點雲擬合 平面擬合

平面方程 ax by cz d 0 方程本身不複雜,原理推導別人已經寫得很明白了,我這裡只貼位址了,不重複推導。構建係數矩陣後,利用最小二乘即可 求解 ax b x ata 1atb matlab inv a a a b實際使用過程中,遇到一些問題。參考原部落格提出的方法,當用於擬合係數 c 0的平...