宁波网站开发rswl,王占山先进事迹,修改网站域名,改域名 wordpress拓扑结构
点云是一种三维数据#xff0c;有几种方法可以描述其空间结构#xff0c;以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件#xff1a;pcl/kdtree/kdtree_flann.h 函数#xff1a;pcl::KdTreeFLANN 作用#xff1a…拓扑结构
点云是一种三维数据有几种方法可以描述其空间结构以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件pcl/kdtree/kdtree_flann.h 函数pcl::KdTreeFLANN 作用 用于范围搜索比如搜索给定点指定半径内存在的点 用于最近邻居搜索比如搜索距离指定点最近的点 用于支持其他高级操作 八叉树 头文件pcl/octree/octree_search.h 函数pcl::octree::OctreePointCloudSearch 作用 用于空间搜索与前面类似搜索指定点附近的点或以体素为单位搜索直接返回指定点锁所在的体素或直接搜索返回K个邻近点或搜索指定半径内的邻近点 体素化通过八叉树将点云数据分割为一系列体素(立方体)。每个体素代表一个固定大小的区域并包含在该区域内的点云数据。如此可以估计点云密度表面重建等支持更高级的点云处理任务 滤波器 https://blog.csdn.net/weixin_45824067/article/details/131334072 点云传统滤波算法_点云高斯滤波_Man_1man的博客-CSDN博客 上面两个链接都有代码 分割功能滤波
分割功能滤波是一种常用的点云处理方法可以将点云数据分割为不同的部分以便对每个部分进行独立处理。 直通滤波 头文件pcl/filters/passthrough.h 函数pcl::PassThrough 介绍直通滤波是一种基于范围过滤的方法用于通过限制某个维度的范围来滤除点云数据中不需要的部分 作用用于去除在指定范围之外的离群点、空间限定区域或多余的数据。直通滤波通常在建立好KD树之后进行以提高滤波的效率。 条件滤波 头文件pcl/filters/conditional_removal.h 函数pcl::ConditionalRemoval 介绍条件滤波Conditional Filter是一种基于条件的点云滤波方法可以根据给定的条件筛选出满足条件的点云数据从而去除不需要的点云数据有点分段函数的味道当点云在一定范围则留下不在则舍弃。直通滤波器是一种较简单的条件滤波器其更像是一个不带有滤波核的工具。 红色区域为过滤后被保留下的点云绿色为被过滤掉的点云 提取索引滤波 头文件pcl/filters/extract_indices.h 函数pcl::ExtractIndices 介绍提取索引滤波Extract Indices Filter是一种常用的点云滤波方法其主要目的是提取指定索引范围内的点云数据以去除不需要的点云数据。 下采样类滤波 体素网格下采样 头文件pcl/filters/voxel_grid.h 函数pcl::VoxelGrid 介绍体素滤波根据给定的点云构造一个三维体素栅格并进行下采样达到滤波的效果。通过输入的点云数据创建一个三维体素栅格然后将每个体素内所有的点都用该体素内的代表点(重心)来近似这样就大大减少了数据量。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。 特点体素滤波根据给定的点云构造一个三维体素栅格并进行下采样达到滤波的效果。通过输入的点云数据创建一个三维体素栅格 然后将每个体素内所有的点都用该体素内的代表点(重心)来近似这样就大大减少了数据量。体素滤波器可以达到向下采样同时不破坏点云本身几何结构的功能但是会移动点的位置。此外体素滤波器可以去除一定程度的噪音点及离群点。 左原数据 右体素下采样结果 均匀采样滤波 头文件pcl/filters/uniform_sampling.h 函数pcl::UniformSampling 介绍均匀采样滤波基本上等同于体素滤波器但是其不改变点的位置。下采样后其点云分布基本均匀但是其点云的准确度要好于体素滤波因为没有移动点的位置 去除噪声点类滤波 统计学离群点移除过滤器 头文件pcl/filters/statistical_outlier_removal.h 函数pcl::StatisticalOutlierRemoval 介绍用于去除明显离群点。离群点特征是在空间中分布稀疏。激光扫描通常会生成不同点密度的点云数据集测量误差也会导致稀疏的异常值/离群点。考虑到离群点的特征则可以定义某处点云小于某个密度既点云无效。 具体步骤对于每个点计算从它到其最近的k个点平均距离。通过假设点云中其点的距离结果分布是具有均值和标准差的高斯分布根据给定均值与方差平均距离在标准范围之外的点可以被定义为离群点并从数据中去除。 特点主要是根据密度去除离群点(去噪)对密度差异较大的离群点效果较好。 半径离群值滤波 头文件pcl/filters/radius_outlier_removal.h 函数pcl::RadiusOutlierRemoval 介绍半径滤波Radius Outlier Removal Filter半径滤波通过计算每个点与周围点的距离判断该点是否为离群点并将其从点云数据中去除。 步骤以某点为中心画一个圆计算落在该圆中点的数量当数量大于给定值时则保留该点数量小于给定值则剔除该点。 特点半径滤波器与统计滤波器相比更加简单粗暴。此算法运行速度快依序迭代留下的点一定是最密集的但是圆的半径和圆内点的数目都需要人工指定。 红色区域为过滤后被保留下的点云绿色为被过滤掉的点云 高斯滤波 头文件pcl/filters/convolution.h pcl/filters/convolution_3d.h 函数pcl::filters::GaussianKernel 或pcl::GaussianFilter类 pcl::filters::Convolution3D 介绍高斯滤波Gaussian Filter其主要目的是平滑点云数据以去除噪声。高斯滤波器的基本思想是将每个点周围的点用高斯函数进行加权平均从而达到平滑点云数据的效果。其李永乐高斯函数经傅里叶变换后仍具有高斯函数的特性令指定区域的权重为高斯分布从而将高频的噪声点滤除。在点云处理中高斯滤波通常被用于去除高频噪声。 特点高斯滤波平滑效果较好但是边缘角点也会被较大的平滑。 双边滤波 头文件pcl/filters/bilateral.h 函数pcl::BilateralFilter 介绍其主要目的是平滑点云数据以去除噪声同时保留点云数据的边缘和细节信息。双边滤波器的基本思想是将每个点周围的点用高斯函数和距离函数进行加权平均从而达到平滑点云数据的效果。双边滤波既可以平滑点云数据又可以保留边缘和细节信息因此在点云处理中应用广泛。此外去噪效果效果需要根据实际点云情况不是所有需要平滑和保留边缘的情况使用有两个参数需要调整需要多次实验。 特点双边滤波是结合图像的空间[像素范围域(range domain)]邻近度和像素值相似度的一种折中处理同时考虑空域[空间域(spatial domain)]信息和灰度相似性达到保边去噪(既有效地对空间三维模型表面进行降噪又可以保持点云数据中的几何特征信息避免三维点云数据被过渡光滑)的目的。对点云数据的小尺度起伏噪声进行平滑光顺。 注意能使用双边滤波的点云必须得包含强度字段。现有的points类型中只有PointXYZI和PointXYZINormal有强度信息。FastBilateralFilter只适用于有序点云。 BF为双边滤波MED为中值滤波AVE为均值滤波 随机采样一致滤波 头文件pcl/sample_consensus/ransac.h pcl/sample_consensus/sac_model_plane.h pcl/sample_consensus/sac_model_sphere.h 函数pcl::RandomSampleConsensus 介绍随机采样一致滤波Random Sample Consensus FilterRANSAC Filter其主要目的是去除点云数据中的离群点outliers。随机采样一致滤波器的基本思想是随机选择一组点作为模型计算其他点到该模型的距离从而找到最佳的模型并将该模型上的点作为局内点inliers将其他点作为离群点outliers进行删除。随机采样一致滤波既可以去除离群点又可以保留点云数据的形状和结构信息因此在点云处理中应用广泛。 特点主要用于排除错误样本可以从一组包含“局外点”的观测数据中通过迭代的方式估计数学模型参数。 声明本文总结于上列参考文章系学习所用。