**展示:
#include #include #include #include #include #include #include #include using namespace std;
using pointt = pcl::pointxyz;
int main()
//建立分割時所需要的模型係數物件,coefficients及儲存內點的點索引集合物件inliers
pcl::modelcoefficients::ptr coefficients(new pcl::modelcoefficients);
pcl::pointindices::ptr inliers(new pcl::pointindices);
// 建立分割物件
pcl::sacsegmentationseg;
// 可選擇配置,設定模型係數需要優化
seg.setoptimizecoefficients(true);
// 必要的配置,設定分割的模型型別,所用的隨機引數估計方法,距離閥值,輸入點雲
seg.setmodeltype(pcl::sacmodel_plane); //設定模型型別
seg.setmethodtype(pcl::sac_ransac); //設定隨機取樣一致性方法型別
seg.setdistancethreshold(0.01); //設定距離閥值,距離閥值決定了點被認為是局內點是必須滿足的條件,表示點到估計模型的距離最大值,
seg.setinputcloud(cloud);
//引發分割實現,儲存分割結果到點幾何inliers及儲存平面模型的係數coefficients
seg.segment(*inliers, *coefficients);
if (inliers->indices.size() == 0)
// 提取平面點雲
pcl::extractindice***tract;
extract.setinputcloud (cloud);
extract.setindices(inliers);
extract.setnegative (false);
pcl::pointcloud::ptr cloud_plane (new pcl::pointcloud);
extract.filter (*cloud_plane);
if (cloud_plane->points.empty ())
std::cerr << "提取平面點雲失敗." << std::endl;
// 視覺化分割結果
pcl::visualization::pclvisualizer::ptr viewer(new pcl::visualization::pclvisualizer("viewer"));
int v1(0);
viewer->createviewport(0.0, 0.0, 0.5, 1.0, v1);
viewer->setbackgroundcolor(0, 0, 0, v1);
viewer->addtext("raw", 10, 10, "v1_text", v1);
int v2(1);
viewer->createviewport(0.5, 0.0, 1, 1.0, v2);
viewer->setbackgroundcolor(0.1, 0.1, 0.1, v2);
viewer->addtext("seg", 10, 10, "v2_text", v2);
viewer->addpointcloud(cloud, "cloud_sample", v1);
viewer->addpointcloud(cloud_plane, "cloud_seg", v2);
while (!viewer->wasstopped())
return 0;
}
效果展示:
PCL點雲庫 平面模型分割
平面模型分割是採用隨機取樣一致性對點雲擬合出乙個平面,將點到該平面的距離小於 距離閾值 的點都作為內點,大於 距離閾值 的點都作為外點。可以通過設定引數選擇保留內點還是外點。平面模型分割 include include include include intmain int argc,char ar...
PCL擬合平面和球面模型
pcl sampleconsensusmodelsphere ptr model s new pcl sampleconsensusmodelsphere cloud pcl sampleconsensusmodelplane ptr model p new pcl sampleconsensusm...
PCL之區域生長分割
首先依據點的曲率值對點進行排序,之所以排序,是因為區域生長演算法是從曲率最小的點開始生長的,這個點就是初始種子點,初始種子點所在的區域即為最平滑的區域,從最平滑的區域開始生長可減少分割片段的總數,提高效率。演算法流程總結 種子周圍的臨近點和種子點雲相比較 法線的方向是否足夠相近 曲率是否足夠小 如果...