- 博客(38)
- 收藏
- 关注
原创 【PCL】手眼标定
手眼标定中旋转信息的丰富性直接影响标定精度。常见误区是认为多角度旋转即足够,实际上共轴旋转会导致矩阵退化,使解对噪声敏感。工程上需确保至少三条不共面旋转轴(如X/Y/Z轴混合),单轴旋转角度建议覆盖±20°~±60°。可通过旋转轴可视化、条件数检测和交叉验证来评估旋转充分性。特别提醒Eye-in-Hand系统更易陷入共轴陷阱,反复使用同类姿态重标无法改善精度。
2025-12-31 14:27:47
17
原创 【PCL点云配准】位姿估计
本文介绍了PCL(Point Cloud Library)中TransformationEstimation模块的核心算法原理和实现方法。该模块通过多种子类(如SVD、LM、双四元数等)提供点云配准功能,支持2D/3D刚性变换估计。主要内容包括:1)各类变换估计算法的数学原理和实现细节;2)点对点/点对面两种误差度量方法;3)线性闭式解和非线性迭代两种求解方式;4)变换验证机制;5)基于三点法的完整代码示例。该模块广泛应用于SLAM、三维重建等领域,为点云配准提供了高效可靠的解决方案。
2025-12-31 14:08:58
107
原创 【PCL点云配准】对应点筛选
PCL点云配准中的对应点筛选方法通过多种策略优化匹配质量。核心算法包括基于距离阈值(DistanceRejector)、特征相似度(FeaturesRejector)、中值距离(MedianDistanceRejector)的筛选,以及一对一匹配(OneToOneRejector)、RANSAC(SampleConsensusRejector)和法线一致性(SurfaceNormalRejector)等方法。针对有序点云还提供边界点过滤(OrganizedBoundaryRejector)。这些方法通过继承
2025-12-29 12:12:35
17
原创 【PCL点云配准】对应点匹配
本文介绍了点云配准中的对应点匹配方法及其实现。主要方法包括:1)最近邻匹配和互为最近邻匹配,适用于无序点云;2)BackProjection和NormalShooting,利用法线信息提高匹配精度;3)OrganizedProjection,适用于有序点云。文章详细阐述了各方法的算法原理、底层实现细节,并提供了PCL代码实例和可视化效果展示。不同匹配方法适用于不同场景,如最近邻匹配适合无显著法线信息的点云,而法线相关方法则能提高复杂几何点云的配准精度。有序点云匹配方法通过投影方式可显著提升计算效率。
2025-12-26 19:01:04
27
原创 【三维点云处理】坐标变换
本文介绍了三维空间中的旋转变换方法。首先通过右手法则确定旋转角度正负(拇指指向旋转轴正方向,四指弯曲方向为正角度),并详细说明了绕x/y/z轴的旋转矩阵构造方法。其次对比了内旋(绕局部坐标系)和外旋(绕全局坐标系)的区别:内旋采用右乘复合矩阵(X'Y''Z'''顺序),外旋采用左乘复合矩阵(ZYX顺序)。文章还以点云变换为例展示了旋转的实际应用效果。最后总结指出,外旋常用于坐标系变换(如Eigen库),内旋更适用于物理模拟关节运动。
2025-12-26 15:25:11
178
原创 【PCL点云配准】ICP估计2D姿态
PCL库中的TransformationEstimation2D类是专为二维点云配准设计的变换估计算法。它通过忽略z轴数据,仅计算x-y平面内的旋转和平移变换,适用于地面扫描等平面场景。与标准ICP相比,2D ICP减少了计算维度,将自由度从6个降为3个(2平移+1旋转)。算法核心是通过协方差矩阵计算航向角,并生成二维变换矩阵。实际应用中,2D ICP能有效提升平面点云配准的效率和精度,特别适合机器人导航等需要平面匹配的场景。
2025-12-19 14:14:27
213
原创 【PCL点云配准】ICP收敛判断
ICP算法通过迭代计算寻找最优刚性变换矩阵,使源点云与目标点云对齐。PCL库提供四种收敛条件:1)最大迭代次数限制;2)连续两次变换差异(旋转和平移)小于阈值;3)均方误差(MSE)绝对变化量小于阈值;4)MSE相对变化量小于阈值。算法默认参数包括:最大迭代100次、旋转阈值0.99999、平移阈值0.0003米等。这些条件共同确保算法在精度和效率间取得平衡,避免过早终止或过度迭代。
2025-12-18 14:41:30
37
原创 【PCL点云配准】IterativeClosestPoint 配准
ICP算法通过迭代最近邻匹配实现点云配准,其核心流程包括:1)初始位姿设置;2)最近邻点对匹配;3)错误点对筛选;4)基于SVD的位姿估计;5)点云位置更新。该算法需要较准确的初始值,通过多次"匹配-优化-更新"迭代逐步收敛。PCL实现中采用了KD-Tree加速搜索、OpenMP并行计算等优化措施,并支持可视化验证配准结果。典型应用包括将"bun045.pcd"配准到"bun000.pcd",通过设置迭代次数、精度阈值等参数可优化配准效果。
2025-12-18 09:22:48
189
原创 【PCL常用滤波器】表面法线采样滤波
摘要:SamplingSurfaceNormal是一种高效的点云法线估计算法,通过递归空间划分和采样技术相结合。算法首先按最大维度递归划分点云空间,当子区域点数低于阈值时计算区域法线(基于协方差矩阵最小特征向量)和曲率,并随机采样输出带法线的点。相比传统方法,该算法在计算效率上更具优势,适合大规模点云处理,但在边界点和法线精度方面可能存在不足。PCL实现展示了该算法从点云加载、法线采样到可视化的完整流程。
2025-12-17 11:57:57
22
原创 【PCL 特征】线性最小二乘法线估计
线性最小二乘法常用于点云法线估计,其核心思想是通过拟合局部平面来求解每个点的法线。该方法通过最小化点到平面的垂直距离平方和来实现最优拟合。
2025-12-17 10:59:50
155
原创 【PCL 滤波】模型滤波器
本文介绍了基于模型滤波的点云去噪方法。该方法通过建立几何模型(如平面、球体、圆柱等),计算点云数据与模型的匹配度来识别并剔除噪声点。核心步骤包括:1)构建几何模型;2)拟合模型参数;3)计算点与模型的距离误差;4)基于阈值去除异常点。文中详细展示了PCL库的实现代码,包括模型初始化、距离计算和阈值判断等底层细节,并提供了平面模型滤波的完整示例。该方法支持多种几何模型,包括平面、球体、圆柱体等,适用于不同场景的点云去噪需求。
2025-12-11 21:30:21
27
原创 【PCL 特征】积分图法线估计
本文介绍了基于积分图的有序点云法线估计方法。通过利用点云数据的行列式结构特性,该方法避免了传统KD树搜索,采用积分图将邻域统计运算复杂度从O(k²)降至O(1)。详细阐述了四种法线估计算法:协方差矩阵法(精度最高)、平均3D梯度法(实时性好)、平均深度变化法(适合SLAM)和简单3D梯度法(速度最快)。重点分析了积分图构建、动态窗口平滑处理、法线方向调整等关键技术,并提供了PCL实现代码示例。实验表明,不同方法在精度和速度上存在显著差异,可根据具体应用场景选择合适算法。
2025-12-11 21:18:03
226
原创 【PCL 滤波】PassThrough直通滤波器
摘要:PassThroughFilter是PCL点云库的基础滤波器,通过设定坐标轴阈值范围(如Z∈[z_min,z_max])裁剪点云,保留指定区域内的点。其实现原理是遍历点云,根据坐标值判断是否保留。文中以bunny点云为例,展示了沿X轴裁剪Z≤0区域的代码实现,并通过可视化对比了原始(绿色)和滤波后(红色)点云的效果。该滤波器常用于去除离群点和提取目标区域。
2025-12-07 22:50:03
41
原创 【PCL常用滤波器】点云投影几何模型
本文介绍了点云投影技术的原理与实现。点云投影是将三维点集投影到几何模型的过程,用于数据修正和模型构建。文章详细阐述了点到直线、平面和圆柱面的投影公式,并展示了基于PCL库的实现方法。通过加载bunny点云数据,演示了如何将点云投影到Z平面,并提供了可视化对比效果。代码部分包括模型初始化、投影计算和结果显示,完整呈现了点云投影的技术流程。
2025-12-07 21:43:08
288
原创 【PCL常用滤波器】MedianFilter中值滤波器
中值滤波是一种有效的非线性点云去噪方法,通过滑动窗口计算邻域点深度中值来消除孤立噪声。PCL实现中增加了深度变化阈值检测,防止过度修改点云结构。算法流程包括:点云遍历验证、邻域窗口构建、深度值排序取中位数,以及限制深度变化幅度。代码示例展示了加载RGBD点云、设置窗口大小、执行滤波和可视化对比的过程。该方法能有效去除噪声同时保留点云原有特征,适用于有序点云处理。
2025-12-06 19:29:33
128
原创 【PCL 特征】OpenMP加速无序点云法线估计
摘要:本文探讨了利用OpenMP并行计算框架加速无序点云法线计算的方法。由于点云数据中每个点的邻域计算相互独立,OpenMP的fork/join并行模式能有效提升运算效率。文章详细介绍了OpenMP的核心指令(如parallel、for、sections)和数据处理子句(private、shared等),以及任务调度策略(static、dynamic等)。最后通过PCL库的代码示例,展示了如何实现点云法线估计的并行计算和可视化效果。该方法显著提高了点云处理的性能,适用于大规模点云数据的实时处理需求。
2025-12-06 19:19:49
182
原创 【PCL 特征】无序点云法线估计
本文介绍了三维点云处理中的法线估计算法。通过分析邻域点的协方差矩阵并进行特征值分解,可确定每个点的法线方向和曲率。算法步骤包括邻域搜索、协方差矩阵计算、特征分解和法线方向调整。详细展示了PCL库中的实现代码,包括协方差矩阵计算、法线求解及视点一致性处理。对比了无序点云(使用协方差矩阵法)和有序点云(多种优化方法)的不同处理策略,指出前者精度高适用于精细建模,后者速度快适合实时应用。最后通过可视化示例展示了法线估计效果。
2025-12-05 14:35:38
291
原创 【PCL 特征】IntegralImage 积分图
本文介绍了积分图像算法及其在点云处理中的应用。积分图通过预先计算像素累积和,可高效获取任意矩形区域的统计特征(如求和、均值、方差),仅需访问四个存储单元。算法实现包括一阶积分图(存储坐标累加和)和二阶积分图(存储坐标平方及乘积),分别用于计算质心和协方差矩阵。在PCL中,该技术被用于加速点云法线估计,通过积分图快速获取局部区域统计量,进而计算法线方向。实验表明,积分图能显著提升大规模数据处理效率,适用于图像处理、三维点云分析等场景,尤其擅长稠密数据的特征计算优化。
2025-12-05 10:27:28
272
原创 【Open3D】Windows环境安装配置Open3D
本文介绍了在Visual Studio 2022环境下配置Open3D(v0.18.0)开发环境的详细步骤。主要包括:从GitHub下载Open3D库文件;在VS2022中配置项目属性表,添加头文件路径、库目录和附加依赖项;设置系统环境变量和预处理器定义;最后提供了一个创建彩色球体并显示的可执行代码示例。通过完整的环境配置和简单示例演示,验证了Open3D在Windows平台下的开发环境搭建成功。
2025-11-29 15:48:32
66
原创 【PCL 特征】BoundaryEstimation 边界提取
特性ConvexHull目标判断点是否是边界点生成包含所有点的凸边界方法局部角度 gap + 法线切平面全局凸包算法适用凹凸不规则形状、稀疏点想得到凸形外轮廓或包围盒输出点标记(boundary_point)凸边界点集 / 多边形 / 多面体能表示凹形✅ 可以❌ 不行(会被凸包包住)精度局部判断,依赖邻域半径/点密度全局凸包,不考虑局部凹凸。
2025-11-29 11:25:13
132
原创 【PCL常用滤波器】Farthest Point Sampling滤波器
FPS(最远点采样)是一种点云采样方法,通过迭代选择距离已选点集最远的点,实现空间均匀分布。算法流程包括:1)随机初始化;2)维护点到已选集的最近距离数组;3)迭代选择最远点并更新距离。PCL库提供了FPS实现,可通过设置采样点数快速处理点云数据。实例演示了从原始点云中采样10000个点,并通过可视化对比效果。算法核心优势是确保采样点具有最大空间覆盖度,适用于点云降采样等任务。
2025-11-28 17:01:56
181
原创 【PCL采样一致性分割】SACMODEL_CYLINDER
PCL点云库中的圆柱拟合算法采用RANSAC框架,通过7个参数定义圆柱模型(轴线上点、单位方向向量和半径)。关键步骤包括:1)利用两点采样计算初始模型,通过法线叉积确定轴线方向,解算两法线直线最近点对获得轴线上点;2)使用Levenberg-Marquardt算法优化模型参数,最小化点到圆柱距离的平方误差;3)结合法线角度约束验证模型有效性。算法特别处理了噪声干扰下的轴线计算问题,通过投影和距离约束实现了稳健的圆柱特征提取。实验表明该方法能有效识别三维点云中的圆柱结构并准确计算其几何参数。
2025-11-16 17:14:49
630
原创 【PCL采样一致性分割】SACMODEL_PLANE
摘要:本文详细介绍了PCL库中基于SAC算法的多种平面分割模型及其实现原理。主要内容包括:1)五种平面模型的特点和适用场景,从通用平面到带有法线方向约束的专用模型;2)底层实现细节,如采样方法、模型参数计算和法线约束处理;3)完整的代码示例展示如何加载点云、计算法线、执行分割并可视化结果。文章还总结了各模型的特性对比表,为点云处理中平面分割任务提供了实用参考。
2025-11-15 17:50:40
1109
原创 【PCL常用分割器】Region Growing
特性欧式聚类 (Euclidean Cluster Extraction)区域生长 (Region Growing)核心原理根据点之间的欧氏距离,将距离小于的点归为同一簇根据法向量平滑度和曲率相似性,从种子点开始生长,逐渐将邻域相似点加入簇输入要求只需要点坐标 (PointXYZ)需要点坐标 + 法向量 (PointNormal/PointXYZ + Normal)是否考虑几何特性不考虑法向和曲率,只看距离考虑法向、曲率、平滑度,更关注几何表面连续性簇形状对点云密度均匀、距离均匀的区域效果好。
2025-11-14 18:57:01
547
原创 【Open3D常用分割器】DBSCAN (C++)
摘要:DBSCAN是一种基于密度的聚类算法,通过核心点、边界点和噪声点的划分实现聚类。算法步骤包括邻域搜索、核心点判断及簇扩展。相比欧式聚类,DBSCAN能有效处理噪声且不依赖固定距离阈值。代码示例展示了使用Open3D库实现点云DBSCAN聚类的完整流程,包括参数设置、聚类执行和结果可视化。该算法适用于发现任意形状的簇,并能区分噪声数据。
2025-11-13 14:35:32
493
原创 【PCL常用分割器】EuclideanCluster
欧氏聚类算法基于点云中点的空间距离进行连通域搜索,通过区域生长将距离小于阈值的相邻点归为同一簇。算法使用KdTree建立索引,从未访问点开始搜索邻域,递归扩展至所有连通点,保留满足点数范围的簇。与区域生长分割不同,该算法仅考虑空间距离而非特征相似性,适用于分割独立物体。实现过程包括种子点选取、邻域搜索、簇验证等步骤,最终输出若干空间连通的点簇集合。
2025-11-13 00:22:52
392
原创 【PCL常用分割器】SACSegmentation
是一种基于采样一致性(Sample Consensus)的点云分割方法。它通过从点云中选取少量样本,拟合参数化几何模型(如平面、圆柱),并评估所有点与模型的误差一致性,最终选择内点集合最优的模型作为分割结果。与其他分割器(Region Growing、EuclideanClusterExtraction)不同,它不依赖空间连通性,而是依赖几何一致性。
2025-11-11 18:10:39
1206
原创 【CloudCompare】Windows源码编译CloudCompare
本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的
2025-09-16 07:45:04
313
原创 【TOF相机】深度图转点云
本文介绍了TOF相机深度图转三维点云的原理与实现方法:1. 通过测量光飞行时间获取深度信息,利用相机内参矩阵和针孔模型将二维深度图转换为三维点云坐标;2. 提供了OpenCV处理代码示例,展示如何遍历深度图生成三维点数据;3. 给出PCL点云库的完整代码框架,包括点云可视化方法;4. 该技术能实现精确的三维环境感知,在智能交互、自动化和环境建模等领域具有重要应用价值。
2025-09-07 23:35:50
417
原创 【PCL常用分割】欧式聚类
欧式聚类是一种基于距离的点云分割方法,通过邻域搜索将空间邻近的点归为一簇。算法流程包括:从未访问点开始,搜索半径邻域内的点并入队,直到队列为空完成簇构建;然后根据预设的簇大小范围筛选有效结果。PCL库提供了该算法的实现,需设置距离阈值、最小/最大簇大小等参数。该方法直观高效,适用于物体分离和障碍物检测,但对噪声和点云密度变化敏感,此时可考虑DBSCAN等基于密度的聚类方法替代。
2025-09-07 18:40:35
412
原创 【PCL常用滤波器】半径滤波器
本文介绍了点云半径滤波算法的原理与实现。该算法通过评估每个点周围邻域密度来剔除孤立噪声点,采用OpenMP并行化处理近邻搜索过程以提升效率。对于稠密点云使用k近邻策略,稀疏点云则采用半径搜索。文章提供了PCL库中的代码示例,展示了半径滤波的参数设置和可视化效果。该算法计算快速,适合实时处理和粗略去噪,常应用于传感器数据预处理、点云配准前的噪声去除等场景。相比统计滤波,半径滤波简单高效但稳健性稍逊。
2025-09-07 11:32:27
372
原创 【PCL常用滤波器】Crop Box滤波器
CropBox滤波器是PCL中的空间裁剪工具,用于提取点云中的长方体区域。其原理是:先进行坐标变换(旋转/平移),再检查点是否在指定包围盒内。实现上包含坐标变换处理(通过欧拉角或平移向量)和点云裁剪(通过最大最小点坐标判定)。示例代码展示了如何加载点云、设置裁剪范围并进行可视化对比。CropBox适用于快速提取规则长方体区域,计算效率高但形状受限,与CropHull(支持任意形状但计算量大)形成互补。该滤波器在点云预处理和ROI提取中具有实用价值。
2025-09-07 10:50:21
363
原创 【PCL常用滤波器】Crop Hull滤波器
PCL库中的点云裁剪算法基于射线法原理,通过判断点与多边形的空间关系实现裁剪。对于二维多边形,采用水平射线交点计数法(奇内偶外);对三维多边形,使用Möller-Trumbore射线-三角形相交算法,通过三条射线的投票机制确定点是否在内部。算法通过浮点运算优化处理边界情况,提供2D/3D裁剪功能。代码示例展示了从点云加载、多边形定义到凸包生成和裁剪过滤的完整流程,支持可视化验证结果。该方法适用于点云分割、区域提取等应用场景。
2025-09-02 23:52:46
788
原创 【PCL常用滤波器】统计滤波器
摘要:统计滤波器通过分析点云空间分布特征来去除离群点。算法流程包括:搜索每个点的K近邻,计算平均距离;统计全局均值和标准差;根据阈值剔除异常点。PCL实现展示了加载点云、设置参数(邻居点数K=50,标准差倍数1.0)及可视化对比的过程。该滤波器能有效消除噪声,保持点云结构完整性,适用于传感器数据去噪及三维建模前的预处理。
2025-09-02 00:34:27
739
原创 【PCL常用滤波器】Uniform Sampling滤波器
摘要:均匀采样滤波器是一种点云处理方法,通过将点云空间划分为3D网格(体素),每个体素仅保留距离中心最近的点作为代表输出。该方法使用unordered_map存储体素信息,通过两次遍历实现:第一次计算网格索引并存储最近点,第二次输出结果。与VoxelGrid相比,均匀采样能实现更均匀的空间分布,适用于特征提取、配准等场景。PCL库提供了简单易用的实现接口,通过设置采样半径即可完成点云降采样处理。
2025-09-01 20:43:02
586
原创 【PCL常用滤波器】Grid Minimun滤波器
Grid Minimum滤波器对XY平面进行二维网格划分(grid cell),输出z值最低点,适合地面点提取等应用场景。l_%7Bxy%7D。
2025-09-01 00:28:31
484
原创 【PCL常用滤波器】近似体素滤波器
摘要:近似体素滤波器是体素滤波器的优化版本,通过固定大小的哈希桶存储体素,降低了内存消耗并提高了处理速度。其核心原理包括:1)设置空间分辨率;2)计算点云hash值;3)根据哈希冲突情况更新哈希数组。PCL实现中采用512大小的哈希表,通过质心计算和冲突处理实现点云降采样。相比标准体素滤波器,近似版本速度更快但存在精度损失,适合大规模点云实时处理。实验表明该方法能有效减少点云数量,但哈希冲突可能导致同一体素分裂输出多个质心。
2025-08-31 22:19:29
395
原创 【PCL常用滤波器】体素滤波器
摘要:体素滤波器是一种点云降采样方法,通过将点云空间划分为3D网格(体素),用每个体素的质心代替内部所有点。算法流程包括设置分辨率、计算网格数、确定点索引和计算质心。底层实现涉及网格索引计算、排序和质心计算。PCL代码示例展示了加载点云、设置体素大小和可视化对比过程。体素滤波器相比其他方法(如近似体素滤波和均匀采样)具有精确输出的优点,但速度较慢且内存占用较高。
2025-08-31 16:50:43
735
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅