日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pcl点云聚类方法

發布時間:2024/3/24 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pcl点云聚类方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本節記錄下點云聚類方法

1.歐式聚類分割方法

//為提取點云時使用的搜素對象利用輸入點云cloud_filtered創建Kd樹對象tree。pcl::search::KdTree::Ptr tree (new pcl::search::KdTree); tree->setInputCloud (cloud_filtered);//創建點云索引向量,用于存儲實際的點云信息

首先創建一個Kd樹對象作為提取點云時所用的搜索方法,再創建一個點云索引向量cluster_indices,用于存儲實際的點云索引信息,每個檢測到的點云聚類被保存在這里。請注意: cluster_indices是一個向量,對每個檢測到的聚類,它都包含一個索引點的實例,如cluster_indices[0]包含點云中第一個聚類包含的點集的所有索引。

std::vector<pcl::PointIndices> cluster_indices; pcl::EuclideanClusterExtraction ec; ec.setClusterTolerance (0.02); //設置近鄰搜索的搜索半徑為2cm ec.setMinClusterSize (100);//設置一個聚類需要的最少點數目為100 ec.setMaxClusterSize (25000); //設置一個聚類需要的最大點數目為25000 ec.setSearchMethod (tree);//設置點云的搜索機制 ec.setInputCloud (cloud_filtered); ec.extract (cluster_indices);//從點云中提取聚類,并將點云索引保存在cluster_indices中

因為點云是PointXYZ類型的,所以這里用點云類型PointXYZ創建一個歐氏聚類對象,并設置提取的參數和變量。注意:設置一個合適的聚類搜索半徑ClusterTolerance,如果搜索半徑取一個非常小的值,那么一個實際的對象就會被分割為多個聚類;如果將值設置得太高,那么多個對象就會被分割為一個聚類,所以需要進行測試找出最適合的ClusterTolerance。本例用兩個參數來限制找到的聚類:用setMinClusterSize()來限制一個聚類最少需要的點數目,用setMaXClusterSize()來限制最多需要的點數目。接下來我們從點云中提取聚類,并將點云索引保存在cluster_indices中。

為了從點云索引向量中分割出每個聚類,必須迭代訪問點云索引,每次創建一個新的點云數據集,并且將所有當前聚類的點寫入到點云數據集中。

//迭代訪問點云索引cluster_indices,直到分割出所有聚類int j = 0;for (std::vector<pcl::PointIndices>::const_iterator it = cluster_indices.begin (); it != cluster_indices.end (); ++it){pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_cluster (new pcl::PointCloud<pcl::PointXYZ>);//創建新的點云數據集cloud_cluster,將所有當前聚類寫入到點云數據集中for (std::vector<int>::const_iterator pit = it->indices.begin (); pit != it->indices.end (); ++pit){cloud_cluster->points.push_back (cloud_filtered->points[*pit]);cloud_cluster->width = cloud_cluster->points.size ();cloud_cluster->height = 1;cloud_cluster->is_dense = true; }pcl::visualization::CloudViewer viewer("Cloud Viewer");viewer.showCloud(cloud_cluster);pause();} 保存每個cloud_cluster為單獨的.pcd文件,一個文件就是一個聚類 } }

總結

以上是生活随笔為你收集整理的pcl点云聚类方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。