非均匀体素采样
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
+关注
关注
5008文章
13146浏览量
461942 -
采样
+关注
关注
1文章
120浏览量
25534
发布评论请先 登录
相关推荐
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即:法线空间采样,它在法向量空间内均匀随机抽样,使所选点之间的法线分布尽可能大,结果表现为地物特征变化大的地方剩余点较多,变化小的地方剩余点稀少
评论