自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 Normal Distributions Transform(NDT,正态分布变换)配准

今天学习这段。

2025-08-07 15:01:25 324

原创 交互式 ICP(Iterative Closest Point,迭代最近点)配准

/ PCL 相关头文件:读写点云、ICP 算法、可视化、计时等// 简化类型名:点用 XYZ 坐标,点云是这些点的集合// 全局变量:标记是否触发下一次 ICP 迭代头文件:引入 PCL 库的功能,比如读.ply文件、跑 ICP、可视化点云。类型别名PointT代表单个点(存 x,y,z),代表点云(存一堆PointT全局变量用来标记 “用户是否按了空格键,要执行下一次 ICP 迭代”。

2025-08-06 17:44:50 775

原创 点云逐步配准(Iterative Closest Point - ICP 应用)

public:} // 用 4 维特征(x,y,z,曲率)// 把点的信息,复制到 float 数组(供 ICP 算法用)// x 坐标// y 坐标// z 坐标// 曲率(点云表面弯曲程度,辅助配准)作用:默认 ICP 只用点的 x,y,z 坐标配准。这里加入 “曲率”,让算法更 “聪明”—— 不仅看位置,还看表面形状,提升配准精度。

2025-08-05 23:33:48 587

原创 迭代最近点(ICP)算法

ICP 算法到底用来做什么?简单说:当我们有两组 “点云”(可以理解为三维空间中一堆点的集合,比如用激光雷达扫描一个物体得到的点),如果这两组点云其实是同一个物体的不同视角(或经过了平移、旋转),ICP 算法能帮我们找到一个 “刚性变换”(只平移 + 旋转,不拉伸 / 变形),让两组点云尽可能重合。比如:你扫描了一个杯子,第一次扫的时候杯子在左边,第二次扫的时候杯子向右移了一点 ——ICP 就能算出 “向右移了多少”,让两次的点云对齐。生成了一组随机点云(cloud_in。

2025-08-05 17:57:58 947

原创 PCL 配准(Registration)模块

流程:数据采集 → 关键点 → 描述子 → 找对应 → 剔错误 → 算变换;价值:把局部点云拼成全局模型,支撑更高层的 3D 处理任务;灵活度:每个步骤都有多种算法可选,根据场景(比如点云密度、纹理、计算资源)调整。理解这套流程后,你就可以用 PCL 的配准模块,解决 “多视角点云合并” 的问题啦~ 实际使用时,记得根据数据特点选合适的关键点、描述子算法(比如 NARF 适合深度图像,FPFH 适合几何特征明显的场景)。Ps.内容源自pcl官方文档本文为基于 PCL 官方文档的学习整理与个人理解。

2025-08-05 17:25:13 611

原创 如何从深度图像(Range Image)中提取 NARF 关键点

数据准备:加载或生成 3D 点云;转深度图像:把点云转成深度图像,方便提取特征;提取关键点:用 NARF 算法,结合深度图像的边界信息,找到关键点;可视化验证:在 3D 和深度图像视图里看结果,调试参数。理解这套流程后,你就可以用 NARF 关键点,为后续的点云处理任务(配准、识别等)打基础啦~ 遇到问题时,记得调整(角度分辨率)、(支持区域大小)等参数,看看关键点提取效果的变化~

2025-08-05 16:50:45 758

原创 可视化模块(Visualization)

把抽象的 3D 点云数据、算法结果,变成直观的图像 / 图表,降低理解成本;让你快速验证算法是否正确,避免 “盲目调参”;支持从基础显示到高级分析(直方图、颜色映射、深度图像)的全流程可视化需求。简单说,如果你想 “看得见” 自己处理的点云数据和算法效果,可视化模块就是 PCL 里的 “眼睛”,一定要好好用起来~Ps.pcl官方文档。

2025-08-05 15:59:01 929

原创 内置画图工具PCLPlotter

自动配色如果调用时没指定颜色,PCLPlotter会用默认的配色方案(如,包含 7 种光谱色)。可通过// 换成“暖色调”配色换配色要在之前调用,否则不生效。自定义颜色调用// 曲线用红色(RGB:255,0,0)可以自己写一个函数,表示y = f(x),然后传给PCLPlotter// 定义函数:y = x(恒等函数)return val;// 添加到 Plotter,x 范围 [-10, 10]适合 “函数复杂,无法用多项式表示” 的场景(如分段函数、含条件判断的函数)。在调用。

2025-08-05 15:46:24 788

原创 PCLVisualizer

/ 1. 创建可视化器// 2. 创建“自定义颜色处理器”:所有点设为绿色(0,255,0)// 3. 添加点云时,指定颜色处理器// 4. 设置点大小(3个单位)效果:整个点云变成绿色(不管点云本身有没有颜色)。关键逻辑:强制给点云设置统一颜色;适合 “单色点云”(比如区分不同的点云集群)。// 1. 创建可视化器// 2. 注册回调函数:处理键盘、鼠标事件// 键盘事件回调// 按 'r' 时,删除所有文字++i) {

2025-08-05 15:15:54 1026

原创 深度图像(Range Image)可视化

include <pcl/range_image/range_image.h> // 深度图像相关#include <pcl/io/pcd_io.h> // 加载PCD点云文件#include <pcl/visualization/range_image_visualizer.h> // 2D深度图像可视化#include <pcl/visualization/pcl_visualizer.h> // 3D点云可视化。

2025-08-05 01:27:09 428

原创 CloudViewer

简单说,是 PCL(点云库)提供的“轻量级点云可视化工具”,目的是让你用最少的代码,快速把点云显示出来。优点:用法简单,几行代码就能实现可视化;缺点:不支持多线程(线程不安全),如果需要在多线程程序中用,得用更强大的(后面会提到)。内部其实是用实现的,但它运行在单独的线程中。如果想自定义可视化效果(比如改背景色、加点图形、动态更新文字),不能直接操作,必须用“回调函数”。回调函数就像 “钩子”,会在可视化线程中被自动调用,避免多线程冲突。

2025-08-05 01:12:32 435

原创 3D 物体识别中的假设验证(Hypothesis Verification)

这段代码实现了“3D 物体识别 + 假设验证”预处理:加载点云、算法线、提关键点;特征匹配:用 SHOT 描述子 + KdTree 找对应关系;聚类分组:用霍夫或几何一致性算法,得到物体假设位姿;位姿细化:用 ICP 优化位姿;假设验证:用全局验证算法过滤误报;可视化:直观展示识别结果。可以把它理解成 “3D 版的物体识别 pipeline”:从杂乱场景中找模型、验证并可视化,适合理解 3D 识别的完整流程~Ps.pcl官方文档。

2025-08-05 01:00:10 1065

原创 隐式形状模型(Implicit Shape Model, ISM)

ISM 算法的核心是“用训练好的‘几何特征模式’,在新点云中投票找物体中心”。加载训练点云,计算法线、特征,训练模型;加载测试点云,用模型投票、找峰值,预测物体中心;可视化结果。可以把它理解成 “3D 版的模板匹配”:先学模板的特征模式,再在新场景中找匹配的模式,确定物体位置~

2025-08-04 22:14:23 975

原创 基于对应关系分组(Correspondence Grouping)的 3D 目标识别

这段代码是一个完整的3D 目标识别 pipeline“通过关键点 → 描述子 → 对应关系 → 聚类”,从场景中找到已知模型的实例,并计算其位姿。可以把它理解成 “3D 版的物体识别”:先提取特征,再匹配特征,最后通过几何约束聚类,确定物体的位置和姿态。你可以用不同的模型和场景点云测试,调整参数(比如采样半径、描述子半径),看看识别效果的变化~

2025-08-04 21:16:08 233

原创 使用 `ModelOutlierRemoval` 过滤点云

用已知的几何模型参数(比如球面的球心、半径),从混合点云中筛选出符合该模型的点。构造混合点云(噪声 + 目标模型点)→ 2. 定义模型参数 → 3. 用过滤 → 4. 输出结果。你可以把它理解成 “按模型筛点” 的工具,除了球面(),还支持平面()、圆柱()等模型。只要你知道模型的参数(比如平面的法向量、圆柱的轴和半径),就能用它筛选出对应模型的点,过滤掉噪声或其他模型的点~Ps.要是还有细节不懂(比如球面点生成的数学原理),可以去看看pcl官方文档里的参考链接。

2025-08-04 17:32:09 561

原创 使用渐进形态学滤波(Progressive Morphological Filter)分割地面点云

这段代码的核心就是用渐进形态学滤波,把点云里的地面和非地面点分开。读入原始点云 → 2. 用形态学滤波找地面点索引 → 3. 提取地面点和非地面点 → 4. 保存并可视化。你可以把它理解成 “给点云‘挑出地面’的筛子”,通过调整参数(比如窗口大小、坡度、高度阈值),适配不同的场景(比如城市、山地)。如果处理自己的数据,记得替换为你实际的点云文件路径,再根据效果微调参数就行啦~Ps.pcl官方文档。

2025-08-04 17:15:27 593

原创 点云超体素聚类(Supervoxel Clustering)

/ VTK 用于绘制连线// 类型定义(简化代码)作用:引入必要的库(IO、可视化、超体素聚类等),定义点云类型(简化代码)。算法思想:用 “区域生长” 生成超体素,融合空间、颜色、法向量信息,贴合物体边界。关键参数:体素大小、种子间距、颜色 / 空间 / 法向量权重,决定超体素的形状和分布。适用场景:点云分割、识别的预处理,减少计算量,提升算法效率。如果想更深入,建议修改参数(如权重、分辨率),观察超体素的变化,或者尝试处理自己的点云数据~Ps.pcl官方文档。

2025-08-04 16:40:09 648

原创 条件欧几里得聚类(Conditional Euclidean Clustering)

核心思想和普通 “区域生长” 类似(从一个点开始,不断合并邻居点),但合并的条件由你写的函数决定。基础流程从一个点开始,找它的邻居点(基于欧氏距离);用你写的条件函数判断:邻居点是否满足 “合并条件”;满足条件就合并,继续以新点为种子生长,直到没有新点能合并。条件函数的作用你可以在函数里写任何逻辑(比如判断颜色、法向量、强度等),决定两个点是否该合并。只要函数返回true,就会合并;返回false,就不合并(但可能通过其他点间接合并)。// 输入点类型(带强度)

2025-08-04 03:48:40 971

原创 基于最小割(Min-Cut)的点云分割

算法思想:构建包含 “点、源点、汇点” 的图,用 “最小割” 划分前景(源点侧)和背景(汇点侧)。关键参数::目标中心,决定算法分割的 “参考位置”;sigma:控制相邻点的平滑约束;radius:控制背景惩罚的范围;:控制图的复杂度和分割细腻度;:控制前景的 “优先级”。适用场景:已知目标物体大致中心和半径时,快速分割出目标点云(比如从场景中分割特定物体)。如果想更深入,建议换不同的点云文件测试,或者调整参数观察效果变化。Ps.pcl官方文档。

2025-08-03 21:17:20 802

原创 基于颜色的区域生长分割

算法思想:用颜色差异代替法向量,分割后自动合并颜色相近或点数太少的区域,减少过分割 / 欠分割。关键参数::控制 “邻居搜索范围”;:控制基础分割的 “颜色严格度”;:控制合并阶段的 “颜色宽容度”;:控制 “小区域是否合并”。适用场景:彩色点云(比如 RGB-D 相机数据),想按颜色区分物体 / 表面时特别好用。如果想更深入,建议换不同的彩色点云文件测试,或者调整参数观察效果变化,这样理解会更深刻~Ps.pcl官方文档。

2025-08-03 20:54:00 949

原创 区域生长分割

区域生长的思想:从平坦点开始,用 “法向量夹角 + 曲率” 约束,合并成光滑区域。关键步骤:计算法向量 → 配置生长参数(阈值、区域大小)→ 执行分割 → 可视化。参数调试(法向量夹角)和(曲率)直接影响分割结果,需根据数据调整。如果想更深入,可以试试换不同的点云文件,或者调整参数看效果变化,这样理解会更透彻~Ps.pcl官方文档。

2025-08-03 16:50:57 770

原创 欧几里得聚类提取

今天学习这段关于 PCL(Point Cloud Library,点云库)里。

2025-08-03 16:24:09 1040

原创 圆柱模型分割

圆柱分割的核心是带法向量的 RANSAC 算法,结合分步分割(先平面、后圆柱 )处理多结构点云。加载点云 → 直通滤波 → 法向量估计 → 平面分割 + 保存 → 移除平面点 → 圆柱分割 + 保存带法向量的分割更准确,适合平面、圆柱等模型;分步分割(先平面后圆柱 )能有效处理多结构点云;参数(如半径范围、距离阈值 )需根据实际物体调整,影响分割效果。可以试着调整或,观察圆柱分割的结果变化;或换其他点云(含圆柱结构 ),感受算法的适用性~

2025-08-02 20:13:24 854

原创 平面模型分割

平面分割的核心是用 RANSAC 算法稳健拟合平面模型,区分内点(平面上的点 )和外点(噪声 )。生成点云(含噪声 ) → 配置 RANSAC 分割参数 → 执行分割 → 输出平面方程和内点RANSAC 适合处理噪声多的场景,能有效找到平面;距离阈值决定内点的判断严格程度,需根据点云调整;平面方程参数可用于后续处理(如提取平面、计算位姿 )。可以试着调整的值,观察内点数量的变化;或修改点云的外点数量,感受 RANSAC 的鲁棒性~Ps.pcl官方文档。

2025-08-02 19:46:01 921

原创 给无序点云拟合裁剪 B 样条(Trimmed B-splines)

B 样条拟合的核心是参数化表示 + 迭代优化,把无序点云转成光滑、可裁剪的曲面。加载点云 → 初始化 B 样条曲面(PCA ) → 细化 + 拟合曲面 → 初始化 + 拟合裁剪曲线 → 裁剪曲面三角剖分 → 保存 + 可视化B 样条的灵活性和参数化特点,适合表示复杂曲面;细化过程让曲面逐步逼近点云,避免直接高自由度拟合的不稳定;裁剪曲线用于保留点云对应的曲面区域,生成更实用的模型。可以试着调整参数(比如refinementiterations),观察曲面拟合的效果;

2025-08-02 17:28:24 994

原创 无序点云的快速三角剖分

贪心投影三角剖分的核心是局部邻域投影 + 贪心生长,把无序点云转成三角网格。加载点云 → 估计法向量 → 拼接坐标和法向量 → 配置三角剖分参数 → 执行剖分 → (可选:保存网格 )法向量是三角剖分的重要输入,影响投影方向和邻域连接;参数(尤其是Mu、角度 )会显著影响网格质量,需要根据点云调整;生成的三角网格可用于 3D 重建、可视化、物理仿真等后续任务。可以试着调整参数(比如),观察三角网格的变化;或换不同点云(比如自己扫描的点云 ),感受算法的适用性~Ps.pcl官方文档。

2025-08-02 16:17:13 991

原创 为平面模型构造凹包或凸包多边形

该代码实现了从点云数据中提取平面轮廓的功能。主要流程为:1) 加载点云并使用直通滤波去除背景噪声;2) 通过RANSAC算法分割平面,获取平面方程参数;3) 将平面点云投影到二维平面;4) 计算投影点的凹包轮廓。代码使用了PCL库的相关模块,包括点云滤波、平面分割、投影变换和凹包计算等关键技术。该方法适用于场景理解任务,如识别桌面等平面物体的轮廓形状,输出结果为描述平面边界的多边形点集。

2025-08-01 17:44:01 866

原创 基于多项式重构的平滑与法向量估计

移动最小二乘法(MLS)是一种用于点云平滑和重采样的技术,能够修复噪声误差、重建缺失表面并计算准确的法向量。其核心思想是通过局部多项式拟合,将噪声点拉回平滑表面,同时补全缺失区域。PCL库中的MLS实现包括加载点云、配置多项式阶数和搜索半径、执行处理及保存结果等步骤。关键参数如多项式阶数和搜索半径会影响平滑效果,需根据需求调整。处理后点云法向量更准确,有利于后续3D重建和分割任务。用户可通过调整参数观察平滑效果变化,优化处理结果。

2025-08-01 17:00:59 1040

原创 全局对齐空间分布(GASD)描述子

GASD(全局对齐空间分布)是一种用于物体识别和位姿估计的点云全局描述子。其核心流程包括:通过PCA计算参考坐标系(质心、协方差矩阵分解确定主方向),将点云对齐到标准坐标系以消除位姿影响;在对齐后的点云中,通过网格划分统计空间分布(形状)和颜色分布(HSV色调直方图)生成描述子。PCL提供两类实现:仅形状描述(512维)和形状+颜色描述(984维)。匹配描述子后,可利用对齐变换矩阵计算物体粗位姿,并通过ICP进行精修。该方法通过坐标对齐实现位姿不变性,适用于单视角点云的物体识别任务。

2025-08-01 16:05:39 1010

原创 RoPs(旋转投影统计 )特征

RoPs(旋转投影统计)是一种用于3D点云局部几何特征提取的方法。它通过建立局部参考系(LRF)消除旋转影响,采用旋转投影和统计矩分析来生成特征描述子。核心步骤包括:裁剪局部点云、计算LRF、对齐表面、多角度旋转投影,并统计投影点分布的矩和熵。该方法适用于物体识别和点云匹配任务。代码实现包含点云加载、参数设置(支持半径、分箱数、旋转次数)和特征计算三个主要部分,通过PCL库的ROPSEstimation类完成特征提取。

2025-07-31 18:00:45 923

原创 基于惯性矩和偏心率的描述子

摘要 本文介绍了基于PCL库的点云几何特征分析方法,重点讲解了惯性矩和偏心率的计算原理及实现。通过pcl::MomentOfInertiaEstimation类可计算点云的惯性矩(反映点云分布)、偏心率(描述形状伸展程度)等描述子,并提取轴对齐包围盒(AABB)和有向包围盒(OBB)。核心算法基于协方差矩阵的特征分解,获取特征向量作为主方向,使描述子具有旋转不变性。代码实现包括点云加载、特征计算、结果提取和可视化四个步骤,最终可直观展示点云的主方向向量和两种包围盒。

2025-07-31 17:08:41 811

原创 从深度图像提取 NARF 特征

本文介绍了使用PCL库从深度图像中提取NARF特征的方法。NARF特征是一种用于3D点云的特征描述子,可用于物体识别和位姿估计。代码首先将点云转换为深度图像,然后通过边界提取器识别关键点,并计算旋转不变的特征描述子。整个过程包括参数设置、点云加载、深度图像生成、关键点检测和特征提取等步骤,最后通过可视化展示关键点和特征。该方法支持自定义角度分辨率、坐标系等参数,适用于各种3D点云处理任务。

2025-07-31 13:45:33 844

原创 视点特征直方图(VFH)描述子

视点特征直方图(VFH)是一种用于物体识别和6DOF位姿估计的全局点云特征。它基于FPFH改进,通过融合视点方向组件(相机到物体中心的夹角直方图)和表面形状组件(扩展FPFH的几何特征)来描述物体整体特性。PCL中通过VFHEstimation类实现,需预先计算法线,输出308维特征向量。相比局部特征,VFH对单物体点云仅生成一个特征,兼具几何形状和视角敏感性,适用于完整物体的识别与位姿分析。使用时需确保输入点云包含完整物体信息,结果可通过PCL可视化工具呈现直方图。

2025-07-31 13:11:11 805

原创 快速点特征直方图(FPFH)描述子

FPFH(快速点特征直方图)是PFH的高效简化版本,通过两步计算将复杂度从O(nk²)降至O(nk)。首先计算查询点与其邻域的SPFH(简化点特征直方图),然后加权融合邻域点SPFH得到最终FPFH。PCL中通过FPFHEstimation类实现,需要预先计算法线并设置合适的邻域半径。相比PFH,FPFH虽然覆盖范围略广但计算更快,适合实时应用。多线程版本FPFHEstimationOMP可进一步提升计算速度。该方法在保留几何特征区分能力的同时显著提高了计算效率。

2025-07-30 22:51:54 659

原创 点特征直方图(PFH)描述子

摘要:点特征直方图(PFH)是一种用于描述点云局部几何特征的高维直方图方法,相较于表面法线和曲率等基础特征具有更强的区分能力。PFH通过统计查询点邻域内所有点对及其法线间的关系(包括三个角度特征α、φ、θ和距离d),构建125维直方图(5个区间×3个特征)。PCL中通过PFHEstimation类实现该功能,计算前需先估计点云法线,并合理设置邻域搜索半径。该方法对6D位姿具有不变性,能有效应对不同采样密度和噪声,适用于点云识别、匹配等任务。关键参数包括邻域半径和特征区间数,需根据实际场景调整优化。

2025-07-30 22:02:54 920

原创 使用积分图像进行法线估计

该代码演示了使用积分图像方法快速估计有组织点云的法线。通过加载点云数据,利用PCL库的IntegralImageNormalEstimation类,采用AVERAGE_3D_GRADIENT方法计算法线,并设置深度变化阈值和平滑窗口参数。最后将带有法线的点云可视化展示。这种方法利用积分图像预先计算邻域信息,显著提高了法线计算效率,特别适合处理规则排列的点云数据。代码完整展示了从加载、计算到可视化的全流程。

2025-07-30 19:43:47 924

原创 点云表面法线估计

本文介绍了PCL中点云表面法线估计的原理与实现。通过分析查询点的k邻域构建协方差矩阵,利用PCA获取最小特征值对应的特征向量作为法线方向,并解决法线符号歧义问题。关键参数是邻域范围的选择,需在细节保留和抗噪性间权衡。PCL提供NormalEstimation类实现法线估计,支持半径搜索、视点调整等功能,还能通过NormalEstimationOMP进行多线程加速。文章强调实际应用中需根据场景调整参数,建议通过修改搜索半径值观察不同尺度下的法线估计效果。

2025-07-30 17:47:02 924

原创 如何在点云中提取能代表局部几何特征的描述符

本文介绍了PCL中点云3D特征估计的基本原理与实现方法。主要内容包括:1)点云局部描述符的作用,通过结合邻域信息区分不同几何表面;2)PCL特征估计的四种输入数据传递方式,包括处理全部点、部分点及使用不同搜索表面等场景;3)法线估计的具体实现示例,展示了如何设置搜索半径、索引列表和搜索表面等参数。这些方法解决了单纯依赖坐标点无法区分表面特征的问题,为点云处理提供了更丰富的几何信息。

2025-07-30 17:10:02 938

原创 使用 `ConditionalRemoval` 和 `RadiusOutlierRemoval` 滤波器去除离群点

本文介绍了使用PCL库中两种滤波器去除点云离群点的方法。RadiusOutlierRemoval通过设定半径范围和最小邻居数,移除周围点密度不足的离群点;ConditionalRemoval则支持自定义条件(如坐标范围)进行灵活过滤。文章详细解析了代码实现,包括点云初始化、命令行参数处理以及两种滤波器的具体应用场景。通过比较滤波前后的点云数据,展示了滤波器对离群点的有效处理能力。

2025-07-30 16:07:59 622

原创 根据索引提取点云子集

本文介绍了点云处理中根据索引提取子集的关键操作,重点讲解了ExtractIndices滤波器的使用。主要内容包括:1)通过体素网格下采样预处理点云;2)使用RANSAC算法分割平面并获取点索引;3)利用ExtractIndices提取平面点集;4)循环处理直到剩余点少于30%。代码解析部分详细说明了各功能模块的实现,包括点云加载、下采样、平面分割和索引提取等关键步骤。该技术可用于从复杂场景中精确提取特定几何特征的点集。

2025-07-29 20:23:35 694

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除