日期:2021/11/26
预备知识
1、什么是多线程?如何实现? https://blog.csdn.net/beidaol/article/details/89135277 2、new&delete 3、体素格降采样VoxelGrid 使用体素化网格方法实现下采样,即减少点的数量 减少点云数据,并同时保存点云的形状特征,在提高配准、曲面重建、形状识别等算法速度中非常实用。 PCL是实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格,容纳后每个体素内用体素中所有点的重心来近似显示体素中其他点,这样该体素内所有点都用一个重心点最终表示,对于所有体素处理后得到的过滤后的点云,这种方法比用体素中心(注意中心和重心)逼近的方法更慢,但是对于采样点对应曲面的表示更为准确。 体素格滤波器可以达到向下采样同时不破坏点云本身几何结构的功能。点云几何结构 不仅是宏观的几何外形,也包括其微观的排列方式,比如横向相似的尺寸,纵向相同的距离。随机下采样虽然效率比体素滤波器高,但会破坏点云微观结构。 4、 均匀降采样:半径球体内保留一个点(重心点) 5、统计过滤器StatisticalOutlierRemoval 激光扫描通常会产生密度不均匀的点云数据集,另外测量中的误差也会产生稀疏的离群点,此时,估计局部点云特征(例如采样点处法向量或曲率变化率)时运算复杂,这会导致错误的数值,反过来就会导致点云配准等后期的处理失败。 解决办法:对每个点的邻域进行一个统计分析,并修剪掉一些不符合标准的点。具体方法为在输入数据中对点到临近点的距离分布的计算,对每一个点,计算它到所有临近点的平均距离(假设得到的结果是一个高斯分布,其形状是由均值和标准差决定),那么平均距离在标准范围之外的点,可以被定义为离群点并从数据中去除。 6、投影滤波 投影滤波器就是输入点云和投影模型,输出为投影到模型上之后的点云。 参考链接:https://blog.csdn.net/luolaihua2018/article/details/120238586 7、球半径过滤器RadiusOutlinerRemoval 球半径滤波器与统计滤波器相比更加简单粗暴。 以某点为中心 画一个球计算落在该球内的点的数量,当数量大于给定值时,则保留该点,数量小于给定值则剔除该点。 此算法运行速度快,依序迭代留下的点一定是最密集的,但是球的半径和球内点的数目都需要人工指定。 RadiusOutlinerRemoval比较适合去除单个的离群点 ConditionalRemoval 比较灵活,可以根据用户设置的条件灵活过滤。 8、条件过滤器 ConditionalRemoval 可以一次删除满足对输入的点云设定的一个或多个条件指标的所有的数据点。或者删除点云中不符合用户指定的一个或者多个条件的数据点。 不在条件范围内的点被替换为nan pcl::removeNaNFromPointCloud()去除Nan点 9、模型过滤器 modeloutlierremoval是基于模型和点之间的距离过滤点云中的噪点。对整个输入迭代一次,自动过滤非有限点以及setsampleconsensusmodelpointer()指定的模型之外的点,和setthreholdfunctionpointer()指定的阈值。
过滤 滤波 下采样
过滤:统计过滤器
滤波:移动最小二乘法
下采样:体素格降采样
网格重建:泊松重建
icp配准
|