非均勻體素采樣
SamplingSurfaceNormal,將輸入空間劃分為網格,直到每個網格中最多包含N個點,并在每個網格中隨機采樣點。 使用每個網格的N個點計算法線。 在網格內采樣的所有點都分配有相同的法線。
PointCloud < PointNormal >::Ptr incloud (new PointCloud < PointNormal > ());
PointCloud < PointNormal > outcloud;
//Creating a point cloud on the XY plane
for (float i = 0.0f; i < 5.0f; i += 0.1f)
{
for (float j = 0.0f; j < 5.0f; j += 0.1f)
{
PointNormal pt;
pt.x = i;
pt.y = j;
pt.z = 1;
incloud- >points.push_back (pt);
}
}
incloud- >width = 1;
incloud- >height = uint32_t (incloud- >points.size ());
pcl::SamplingSurfaceNormal < pcl::PointNormal > ssn_filter;
ssn_filter.setInputCloud (incloud);
ssn_filter.setRatio (0.3f);
ssn_filter.filter (outcloud);
// All the sampled points should have normals along the direction of Z axis
for (unsigned int i = 0; i < outcloud.points.size (); i++)
{
EXPECT_NEAR (outcloud.points[i].normal[0], 0, 1e-3);
EXPECT_NEAR (outcloud.points[i].normal[1], 0, 1e-3);
EXPECT_NEAR (outcloud.points[i].normal[2], 1, 1e-3);
}
6. 半徑濾波器采樣
對整個輸入迭代一次,對于每個點進行半徑R鄰域搜索,如果鄰域點的個數低于某一閾值,則該點將被視為噪聲點并被移除。
流程:讀入點云→創建半徑濾波器對象→設置離群點閾值→執行下采樣→保存采樣結果
pcl::PointCloud< pcl::PointXYZ >::Ptr pcl_cloud_ptr(pcl_cloud);
boost::shared_ptr< pcl::PointCloud< pcl::PointXYZ >> pcl_vg_cloud(new pcl::PointCloud< pcl::PointXYZ >());
pcl::PointCloud< pcl::PointXYZ >::Ptr pcl_vg_cloud_ptr(pcl_vg_cloud);
boost::shared_ptr< pcl::PointCloud< pcl::PointXYZ >> pcl_ror_cloud(new pcl::PointCloud< pcl::PointXYZ >());
pcl::PointCloud< pcl::PointXYZ >::Ptr pcl_ror_cloud_ptr(pcl_ror_cloud);
//Use VoxelGrid to make points sparse
pcl::VoxelGrid< pcl::PointXYZ > sor;
sor.setInputCloud (pcl_cloud_ptr);
sor.setLeafSize (0.08, 0.1, 0.1);
sor.filter (*pcl_vg_cloud_ptr);
//Use RadiusOutlierRemoval to remove the point whitch is far away to others
pcl::RadiusOutlierRemoval< pcl::PointXYZ > outrem;
outrem.setInputCloud(pcl_vg_cloud_ptr);
outrem.setRadiusSearch(0.5);
outrem.setMinNeighborsInRadius (3);
outrem.filter (*pcl_ror_cloud_ptr);
//transfrom and publish
sensor_msgs::PointCloud2Ptr msg_pointcloud(new sensor_msgs::PointCloud2);
pcl::toROSMsg(*pcl_ror_cloud, *msg_pointcloud);
msg_pointcloud- >header.frame_id = optical_frame_id_[RS_STREAM_DEPTH];;
msg_pointcloud- >header.stamp = ros::Time::now();
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
plc
+關注
關注
5011文章
13297瀏覽量
463340 -
采樣
+關注
關注
1文章
121瀏覽量
25566
發布評論請先 登錄
相關推薦
PCL點云庫介紹及項目配置方式
關于PCL點云庫,大家百度的時候可以找到很多相關的介紹,反正一堆專業性概念,相關的技術層面以及一些強大的應用敘述云云,不過關于這些小編實在不感冒,能先把這個工具好好用起來再說吧。關于PCL相關的論壇
發表于 07-02 07:44
體素超材料 光啟技術
體素超材料 光啟技術,浪花是如何形成的?如果把浪花拆解開來,它只剩下一個個水分子。如果再把這些水分子聚集起來,在潮汐力的作用下,浪花才能“涌現”出來。涌現,也是智慧誕生的方式。由簡單的元素和簡單的聯接,構成一...
發表于 07-12 07:28
PCL6143運動控制器原理及應用
PCL6143運動控制器的原理及應用 可以用于設計開發相應的芯片電路。介紹了PCL6143 的功能結構、主要寄存器以及指令系統。設計了一款基于PC104總線的四軸運動控制卡, 介紹了如
發表于 09-26 08:14
一種新的非均勻采樣信號的離散傅里葉變換方法
針對偽隨機(PN)碼調制的多普勒激光雷達中固有的對外差信號不能等間隔采樣的問題,提出一種新的非均勻采樣信號的離散傅里葉變換(DFT)方法。首先,給出距離速度同步測量多普勒激光雷達系統模型,指出對外
發表于 12-23 11:40
?0次下載
一種基于點云的Voxel(三維體素)特征的深度學習方法
特征學習網絡的結構如下圖所示,包括體素分塊(Voxel Partition),點云分組(Grouping),隨機采樣(Random Sampling),多層的體
空間曲線基于內在幾何量的均勻采樣方法
為解決均勻參數采樣在許多情況下得到質量不高的采樣點,進而生成不理想的B樣條擬合曲線,提出空間曲線基于內在幾何量的均勻采樣方法,以獲得給定總數
發表于 04-22 11:34
?4次下載
一種空間曲線基于內在幾何量的均勻采樣方法
為解決均勻參數采樣在許多情況下得到質量不高的采樣點,進而生成不理想的B樣條擬合曲線,提出空間曲線基于內在幾何量的均勻采樣方法,以獲得給定總數
發表于 04-29 14:11
?7次下載
PCL中基礎下采樣介紹
顧名思義,隨機下采樣就似乎在原始點云中隨機采樣一定點數的點。這種方法最終得到的點云數量也是固定的。 pcl::PointCloud ::Ptr cloud_sub( new pcl
PCL中最遠點采樣是什么
最遠點采樣(Farthest Point Sampling) 這里我們來單獨看一下調用代碼,這里可以看到PCL中支持直接調用farthest_sampling這個函數可以實現最遠點采樣。 最遠點
PCL中法線空間采樣介紹
法線空間采樣 NormalSpaceSampling即:法線空間采樣,它在法向量空間內均勻隨機抽樣,使所選點之間的法線分布盡可能大,結果表現為地物特征變化大的地方剩余點較多,變化小的地方剩余點稀少
評論