点云兔子
这个作者很懒,什么都没留下…
展开
-
手写三维点云配准的迭代最近点(ICP)算法
ICP是计算机视觉和机器人领域广泛使用的技术,用于将两组三维点进行配准。其主要应用是将一组观测点与参考模型进行配准。这在3D重建、SLAM(同时定位与地图构建)和物体识别等场景中至关重要。以下代码是完成了基于P2P和P2Line的ICP方法。KDtree是采用PCL自带的方法,主要的ICP方法没有使用PCL库。原创 2024-03-30 21:37:37 · 135 阅读 · 0 评论 -
三维重建-单目相机标定
理论知识可以看北邮鲁鹏老师的课程,哔哩哔哩上有。一、代码讲解public:// 构造函数,初始化成员变量// 用像素坐标和世界坐标计算相机矩阵 P// 对相机矩阵 P 进行奇异值分解,计算相机内部矩阵 A 和外部矩阵 M// 计算相机的内部和外部参数// 对标定结果进行自检private:// 成员变量,存储世界坐标和像素坐标以及相关矩阵类实现了与相机标定和 3D 重建相关的功能。该类具有几个成员变量和函数:world_coor:一个。原创 2024-03-24 14:30:19 · 51 阅读 · 0 评论 -
三维重建-三角化
三角化算法是计算机视觉和三维重建领域中常用的技术,用于从多个视角的图像或视觉数据中推导出场景中的三维结构信息。三角化算法利用视觉几何原理,通过对多个视角下的特征点或对应点进行测量和分析,计算出这些点在三维空间中的位置。下面是一个简单的三角化算法的步骤:特征提取:对于每个视角的图像或视觉数据,首先从中提取出一些可以匹配的特征点,比如角点、边缘点或描述符。特征匹配:将不同视角中的特征点进行匹配,找出在多个视角下都有对应关系的特征点对。原创 2024-03-24 14:29:08 · 44 阅读 · 0 评论 -
PCL自定义特征描述子报错解决办法
在使用PCL自定义了一个特征描述子,使用最近邻搜索的时候发现Flann报错原创 2022-12-19 20:42:12 · 396 阅读 · 0 评论 -
点云配准SIFT+SI+RANSAC+ICP
Spin Image(SI)是一种用于点云数据描述的特征描述子,广泛应用于三维点云配准、识别和重建等领域。它能够捕捉点云中的局部几何信息,具有旋转不变性和部分平移不变性等优点,是一种非常强大的特征描述子。Spin Image是一种强大的点云特征描述子,具有旋转不变性、局部几何信息捕捉等优点,适用于点云配准、目标识别和三维重建等多个领域。通过合理选择局部区域、建立参考框架和计算描述子,可以充分利用Spin Image描述点云的特征,从而实现各种三维场景分析和处理任务。原创 2024-02-20 19:47:25 · 160 阅读 · 0 评论 -
点云处理开发测试题目 完整解决方案
中有一个场景的三块点云数据,单位mm。是一个桌子上放了一个纸箱,纸箱上有四个圆孔。需要做的内容是:1. 绘制出最小外接立方体,得到纸箱的长宽高值。注意高度计算是纸箱平面到桌子平面的距离。2. 计算出纸箱上的四个圆的圆心坐标和半径,对圆心坐标进行排序,沿着X+方向排序并把排序后的圆心坐标保存到本地。3. 在每个圆的圆心位置绘制一个小坐标系,x轴方向沿着纸箱长边方向,y轴沿着纸箱短板方向,Z轴朝上。原创 2023-10-10 22:44:10 · 420 阅读 · 0 评论 -
点云处理开发测试题目 实现2
返回拟合模型的系数。该函数使用了RANSAC算法来估计3D圆,并设置了相关拟合参数。如果无法估计圆模型,则会打印错误消息。计算出纸箱上的四个圆的圆心坐标和半径,对圆心坐标进行排序,沿着X+方向排序并把排序后的圆心坐标保存到本地。函数用于提取点云中的孤立边界点云,并将它们存储在一个包含多个点云的 vector 中。这两个函数一起实现了点云边界的估计和提取。函数用于估计整个点云的边界并将其保存到一个文件中。函数:拟合3D点云中的圆,并通过参数。原创 2023-10-10 22:32:41 · 210 阅读 · 0 评论 -
点云处理开发测试题目 实现1
这个函数的主要目的是计算点云的有向包围盒并可视化结果,同时输出一些有关点云和计算结果的信息,例如两个平面之间的距离、每个对象的圆心坐标、主成分方向等。获取了点云的惯性矩、离心率、OBB(有向包围盒)的最小和最大点、OBB 的位置和旋转矩阵、特征值、特征向量、以及质心信息等。最后,通过一个循环,保持 PCL 可视化窗口的运行,直到用户关闭可视化窗口为止。创建 PCL 可视化窗口并将点云数据进行可视化,包括原始点云、用于计算的点云。对对象的 X 坐标进行排序,并打印出每个对象的 X 坐标。原创 2023-10-05 11:24:33 · 199 阅读 · 0 评论 -
点云处理开发测试题目
文件夹中有一个场景的三块点云数据,单位mm。是一个桌子上放了一个纸箱,纸箱上有四个圆孔。2. 计算出纸箱上的四个圆的圆心坐标和半径,对圆心坐标进行排序,沿着X+方向排序并把排序后的圆心坐标保存到本地。3. 在每个圆的圆心位置绘制一个小坐标系,x轴方向沿着纸箱长边方向,y轴沿着纸箱短板方向,Z轴朝上。1. 绘制出最小外接立方体,得到纸箱的长宽高值。注意高度计算是纸箱平面到桌子平面的距离。原创 2023-10-04 19:30:44 · 166 阅读 · 0 评论 -
点云文件格式相互转化
OBJ(Wavefront OBJ)和PCD(Point Cloud Data)是两种不同的文件格式,用于存储不同类型的3D数据。OBJ文件通常用于表示3D模型的几何形状和纹理信息,而PCD文件通常用于表示点云数据,例如激光扫描数据或3D传感器捕获的点云。原创 2023-09-10 13:10:04 · 638 阅读 · 0 评论 -
三维点云转深度图
点云投影过程是将三维点云数据转化为二维图像坐标的关键步骤,它的实现涉及到相机内外参数的计算,包括相机的内部参数(如焦距和主点)和外部参数(如相机位置和方向)。具体来说,可以通过将每个点的三维坐标转换为相机坐标系下的坐标,然后使用相机内部参数和外部参数来计算在二维图像中的坐标。接着计算每个点的深度值,将深度值映射到像素值上,最后创建深度图像并将深度值赋给对应的像素值。这里需要注意的是,在将深度值映射到像素值上时,需要将像素值转换为 uchar 类型,否则在将深度值赋给像素值时会出现类型不匹配的错误。原创 2023-03-17 15:05:33 · 2006 阅读 · 0 评论 -
PCL点云滤波
点云滤波是点云处理中常用的一种技术,主要用于去除噪点和异常点,提高点云数据的质量。PCL(Point Cloud Library)是一个开源的点云处理库,提供了多种点云滤波方法。本文将介绍PCL的点云滤波方法,包括体素滤波、半径滤波和统计滤波,并提供相应的代码示例。PCL支持多种点云文件格式,包括PLY、PCD、OBJ等。// 读取点云文件// 显示点云while (!return 0;原创 2023-03-15 10:22:31 · 240 阅读 · 0 评论 -
在平面模型上提取凸(凹)多边形
首先从点云中提取平面模型,再通过该估计的平面模型系数从滤波后的点云投影一组点集形成点云,最后为投影后的点云计算其对应的二维凸(凹)多边形。如果想要创建凸多边形,只需要把源文件所有“凹”换成“凸”。同时还需要将函数setAlpha()注释掉,因为它并不适用于凸多边形算法相关的类。原创 2023-02-23 15:42:15 · 318 阅读 · 0 评论 -
基于移动最小二乘法(MLS)的点云数据重采样
有时,测量较小的对象时会产生一些误差,这些误差所造成的不规则数据如果直接拿来曲面重建的话会使重建的曲面不光滑或者有漏洞。这些不规则很难用统计分析消除,所以为了建立完整的模型必须对表面进行平滑处理和漏洞修复。在不能进行额外扫描的情况下,我们可以通过对数据重采样来解决这一问题,重采样算法通过对周围数据点进行高阶多项式插值来重建表面缺少的部分。此外,由多个扫描点扫描结果配准后得到的数据直接拿来曲面重建的话会产生“双墙”等人造伪数据,即某块区域会出现重叠的两个曲面。重采样算法也可以对这个问题进行处理。原创 2023-02-23 15:07:59 · 747 阅读 · 0 评论 -
基于 RANSAC 的地面分割与聚类算法
激光雷达采集无人驾驶系统驾驶环境时,由于地面点云形状固定,增加点云信息计算量;同 时存在地面纹理杂乱并含有部分离群点,大幅度降低三维车辆检测的精度。RANSAC 算法是剔除地面点云最简单的方法之一 , RANSAC 算法首先通过随机采样从测试点集中选取一个子集进行参数估计。运用所有测试数据集对该估计模型进行检验,根据测试样本集中 数据对模型的支持度,确定地面估计的正确性。原创 2023-02-17 17:48:14 · 967 阅读 · 0 评论 -
利用Eigen实现点云体素滤波
体素滤波原理简单,是常用的精简点云方法之一,该方法原理简单有效,而且比较容易实现,能够从整体上对于含有大量数据点的点云进行高效率的简化工作。一般情况下使用深度相机或者激光扫描仪采集的点云数据往往密度较大,这极大影响后续处理算法的效率,因此,在后续处理之前通常要对点云数据进行下采样。体素滤波可以在不改变点云整体形状的情况下完成下采样的操作,该方法一般多用于密集型点云的预处理中,在提高特征提取、配准以及目标识别等算法的效率方面相当实用。一、算法原理。原创 2023-02-16 17:00:51 · 624 阅读 · 0 评论 -
利用Eigen库实现主成分分析法(Principle Component Analysis, PCA)
PCA在点云中的应用主要是寻找点云的主方向。数据降维表面法线估计主方向关键点检测特征描述本文主要利用Eigen库实现PCA算法,利用PCA计算点云的特征值以及对应的特征向量,计算点云的主方向、估计法线以及投影。原创 2023-01-13 11:37:41 · 718 阅读 · 0 评论 -
点云配准误差衡量标准
为了定量衡量实验结果的精度, 定义了均方根距离误差和均方根角度误差两个评价指标对结果进行分析。 公式如下:式中 m 表示目标点云和模型点云配准后匹配点对 的数量, 和 分别表示目标点云和模型点云配准后对应点的空间三维坐标值。 公式如下:和分别表示 目标点云和模型点云配准后对应点的法向量。 因此评价指标均方根距离误差和均方根角度误差分别衡量的是目标点云中所有的点通过估计出的6D位姿变换后与模型点云中的对应点的距离和法向量夹角的平均值,这两个指标的值越小,则目标点云与模原创 2023-01-10 16:00:38 · 1570 阅读 · 0 评论 -
手写点特征直方图(PFH)
PCL中代码好像没有用到点对之间的距离这一属性,而且PFH计算两两点对之间的属性,计算量太大,计算时间巨长。原创 2022-12-08 21:59:09 · 208 阅读 · 2 评论 -
迭代最近点(ICP)算法-手动实现
在点云粗配准之后,我们还需要对点云进行精配准。对于点云的精配准问题,学者们提出了许多不同的算法,例如点标记法、自旋图像等,但其中应用最广泛、最为大众熟知的便是由Besl和Mckay于1992年提出的迭代最近点(Iterative Closest Point,ICP)算法。ICP算法本质上是一种基于最小二乘最优匹配思想的配准算法,它不需要事先知道对应的特征匹配点对,可以直接对点云进行操作,该算法流程简单,容易实现,在初始位置较好的情况下可以快速获得较好的配准结果。下面探讨ICP算法的实现原理。原创 2022-11-12 22:49:48 · 271 阅读 · 0 评论 -
基于SAC-IA和ICP融合的点云配准方法
FPFH算法基于局部特征描述,是通过对点特征直方图(Point feature histograms,PFH)改进得到的。PFH将查询点与邻原创 2022-10-26 20:59:16 · 1366 阅读 · 4 评论 -
双向KD-Tree的点云配准算法
经典ICP算法请看这里。传统ICP算法原始的随机 KD-Tree的ICP算法在搜索匹配点对的时候是的单向的,但是会出现一对多的问题,造成匹配不准确。基于此提出一种基于双向KD-Tree的点云配准算法,该算法的搜索时间会比经典的算法高一倍,但是能够确定一一对应的点对,能加快迭代速度,提高配准精度。一、算法原理1. 经典ICP算法经典ICP算法和随机KD树一般可将ICP算法流程大致分为4个步骤:1)设有从不同角度获取的点集P和Q,对点集P中每一点,在点集Q中搜索其最近点,组成对应点对集。原创 2022-09-23 10:32:24 · 464 阅读 · 0 评论 -
【点云配准】SIFT+FPFH+RANSAC+ICP
一、算法原理算法流程图1. SIFT特征检测算法2. FPFH特征描述二、代码展示总结 SIFT算法是LoweDG在1999年提出的一种局部特征描述算法,并在2004年对其进行了完善,该特征对亮度变化、噪声、旋转和平移等因素保持较好的不变性。SIFT算法步骤简介如下:(1) 生成尺度空间。图像的尺度空间定义为其中,是尺度可变高斯函数:式中,表示尺度空间因子,反应了图像的模糊程度;(x,y)表示像素的坐标。(2) 在尺度空间上检测极值点。构造高斯差分(DoG,Difference of Gu原创 2022-09-03 17:56:00 · 1862 阅读 · 0 评论 -
KdTree
在实际查询近邻点一般使用 nearestKSearch直接设置查询点最近的K个点,计算简单快速。原创 2022-08-26 14:30:21 · 347 阅读 · 0 评论 -
循环体素滤波算法
循环体素滤波的最大好处就是能把点云的数目将采样到你想要的个数附近,有利于两片点云的配准。原创 2022-08-23 22:51:05 · 266 阅读 · 0 评论 -
基于SAC_IA和NDT融合的点云配准方法
采样一致性(SAC-IA)为代表的基于特征匹配的配准算法和以正态分布变换(NDT)为代表的基于统计学概率的算法 ,SAC-IA是一种粗配准方法,NDT为精配准算法,但是它对两片点云的初始位姿不如ICP算法敏感。一、算法原理1.NDT的精度不如ICP高而且NDT在我自己拍的点云数据上参数很难设置,感觉不同参数没什么变化,我的点云数据每个点的间距为0.2以上。............原创 2022-08-17 22:49:35 · 664 阅读 · 0 评论 -
PCA 点云配准
PCA计算变换矩阵用时72.322s变换矩阵为效果不咋地,一看就是陷入局部最优了。PCA计算变换矩阵用时51.573s变换矩阵为httpsR%5EdhttpshttpshttpsR%5Erhttpshttpsv_%7Bi%7Dhttpsu_%7Bi%7Dhttpshttpshttpshttpshttpshttps。原创 2022-07-20 15:05:36 · 986 阅读 · 0 评论 -
改进的RANSAC算法实现点云粗配准
随机样本共识 (RANSAC) 是一种迭代方法,用于从包含异常值的一组观测数据中估计数学模型的参数,此时异常值不会对估计值产生影响。因此,它也可以解释为异常值检测方法。它是一种非确定性算法,因为它只产生一定概率的合理结果,随着允许更多的迭代,这个概率也会增加。 RANSAC使用重复的随机子采样。一个基本的假设是,数据由“内点”组成,即其分布可以通过一些模型参数来解释的数据,尽管可能会受到噪声的影响,以及“异常值”,这些数据与模型不符。例如,异常值可能来自噪声的极值,或者来自错误的测量或关于数据原创 2022-06-24 11:47:40 · 852 阅读 · 0 评论