- 博客(99)
- 收藏
- 关注

原创 PCL Delaunay贪婪投影三角化(Surface_GreedyProjectionTriangulation)
即一个三角形(或边)的外接圆范围内(边界除外),不包含点集P中的任何顶点。如下图:黑色点为点集P。圆形为三角形的外接圆。图左,三角形的外接圆内部包含点集P中的其他顶点(不符合空圆性质);图右,两个三角形外接圆的内部都不包含点集P中的其他顶点(符合空圆性质);
2024-09-13 10:46:17
1925
2

原创 PCL 欧式聚类(Segmentation_EuclideanClusterExtraction)
2)更换初始点P的位置(红色簇已聚类,被剔除,因此只能在其他点云中得到初始点P)。假设更换后的初始点P在蓝色簇中,再进行1)的步骤,摸出蓝色簇。(2)对P进行邻近搜索,获取其在用户设定的距离阈值内的所有点云点。1)我们首先通过距离阈值,不停摸完附近点云,直到摸无可摸,得到红色簇的点云簇。(5)重新设置未聚类的点云初始点P,再进行如上步骤,直到聚类得到所有点云。(4)不停迭代(2)(3),得到一簇符合距离阈值的点。(3)一簇点包含的最大点数(大于这个点数不当作点云簇)(4)得到的结果为分簇之后的点云索引。
2024-09-11 17:03:58
1170

原创 PCL 渐进式形态学滤波(去除地面/提取地面点)(Segmentation_ApproximateProgressiveMorphologicalFilter)
3)再度增大窗口,设置窗口大小为14m,然后执行形态学滤波的开运算,结果中大多数建筑物被剔除。1)我们首先设置初始窗口大小为10m,然后执行形态学滤波的开运算,结果中有些建筑物未被剔除。2)增大窗口,设置窗口大小为12m,然后执行形态学滤波的开运算,结果中仍有些建筑物未被剔除。以上例子中,窗口大小10m->12m->14m,执行形态学滤波的过程,即为渐进式形态学滤波。注:PCL中,需手动设置三个参数,分别为地形坡度参数,初始高差阈值,最大高差阈值。如:一棵大树,增加树叶等数据,丰富树木细节,提升数据量。
2024-09-11 16:12:27
1778

原创 PCL ICP配准【点到点】(Registration_ICP)
注意:ICP配准为最常用的配准方法,需掌握原理及代码。注意:ICP配准为最常用的配准方法,需掌握原理及代码。
2024-09-07 10:28:40
1709
2

原创 PCL KD树的原理及应用(K邻域搜索、半径搜索)(Kdtree_kdtree)
3)将由(7,2)划分的左右两平面中的剩余点按照二维平面的第二维(y轴)对数据排序,排序结果为左枝:(2,3),(5,4),(4,7)和右枝(8,1),(9,6)2)取得上述点集的中位数处的点,偶数个数的中位数一般取大的那个,在上述点集中取到的为(7,2),在该点处对平面进行划分,如图1中(7,2)位置画上一条竖线。1)将上述六个点的点集按照二维平面的第一维(x轴)对数据进行排序,排序结果为(2,3),(4,7),(5,4),(7,2),(8,1),(9,6)索引为1的点,即为你要搜索的最邻近点。
2024-09-04 16:19:04
3002

原创 PCL法向量空间下采样滤波(normal_space)
对于原始点云,通过其点云法向量进行下采样,在,在。(1)计算点云的空间法向量。(2)依次,以此近似判断每个点的曲率。曲率大的地方判断为边缘点,曲率小的地方判断为内部点。(3)对于曲率大的地方(),下采样量级小(曲率小的地方(),下采样量级大(以此达到的目的。(4)输出结果点云。以下图为例:红色即为法向量变化小的点云块,他们的曲率变化小,那么抽稀阈值大,抽稀过后较稀疏。绿色即为法向量变化大的点云块,他们的曲率变化大,那么抽稀阈值小,抽稀过后较稠密。
2024-07-31 16:52:54
1231
原创 PCL 耳切法三角剖分(Surface_EarClipping)
1.耳切法1.耳切法大致思想:(1)多边形的一个顶点和它相邻两个顶点可以组成一个三角形,如果,那么就可以把这个由该顶点及其相邻点组成的三角形当做一个“”,沿着这两个相邻顶点切下这个“耳朵”,并移除“”所代表的顶点。(2)然后对剩下的顶点组成的多边形重复上述的这个操作。(3)直到这个多边形只剩3个顶点。即把这个多边形完全分解为三角形。如下图:1)对左图原始多边形,执行一次切耳之后,得到右图的一次切耳之后的耳朵三角形(耳朵1)、及剩余多边形。2)不停重复切耳,得到如下结果。
2024-09-13 18:38:09
545
原创 PCL Possion泊松表面重建(Surface_Poisson)
【代码】PCL Possion泊松表面重建(Surface_Poisson)
2024-09-13 18:05:05
694
原创 PCL MLS移动最小二乘法上采样(Surface_Mls)
大致思想:即使用一个类似窗口,不停移动窗口,对窗口内的点云点进行最小二乘法平面计算,按照计算出的平面方程往点云内插值。
2024-09-13 17:31:20
559
2
原创 PCL MC移动立方体重建(RBF)(Surface_MarchingCubesRBF)
Marching cubes(MC移动立方体3D重建)在一文中讲述了具体原理,本文原理解释,只涉及其RBF移动立方体方法的改进部分。
2024-09-13 16:16:28
639
原创 PCL MC移动立方体重建(HOPPE)(Surface_MarchingCubesHoppe)
triTable查找表得到triTable[8] = {3, 11, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}。即该顶点状态可以生成三角面,该三角面的3个顶点为。在点云表面重建中,无法像3D医学图像那样直接获取Cube顶点的数据值,Hoppe等人使用Cube顶点到点云的有符号距离(signed distance function)来表示该数据值。并以一内部对象(红色)及一外部对象(蓝色)的连线的中间位置(1/2处)作为记录值(紫色顶点)。
2024-09-13 16:02:52
1006
原创 PCL 网格投影曲面重建
算法结果输出为立方体,并非三角网格。使用八叉树,通过分辨率和深度的设置,对点云进行体素化的分割,并通过对空洞体素点附近的点进行加权平均,填充相应体素块,填补空洞,得到结果文件。如下图:我们要填补红色这一块空洞区域,那么就计算该区域附近几个体素块的加权平均数,然后填充相应体素块,弥补空洞。计算较慢,参考意义不大。(1)网格分辨率(2)填充空洞时,创建的填充单元格的数量(从种子点开始,每个维度分别填充n个八叉树体素块)原始点云重建结果
2024-09-13 11:14:01
514
原创 PCL 计算点云凹包(2D及3D)(Surface_ConcaveHull)
(5)判断两个外接圆Cpi,Cqi,若其中任意一个外接圆内,不存在点集P中的其他点(即pi及qi处在一个滚球内),那么连接pi及qi,作为凹包的其中一条边。(3)从点集P中任取种子点pi,计算pi同点集P内各点间的距离,并将所有与点pi间距离小于滚球直径alpha * 2的点加入点集Q(初始边界点)。(7)对点集P中所有点,依次进行(3)-(6)步骤,直到所有点被处理。(6)对点集Q中所有点,依次进行(4)(5)步骤,直到所有点被处理。(2)定义一个圆(即滚球),圆半径为alpha。
2024-09-12 17:32:01
1507
原创 PCL 基于颜色的区域生长分割(Segmentation_RegionGrowingRGB)
1)聚类之间的色差小于色差阀值和并为一个聚类,且当前聚类中点的数量小于聚类点数量的与最近的聚类合并在一起。diffArea = 区域中所有点与点的颜色差异值累加和 / 区域中点对个数。1)当前种子点P和距离范围在邻域点之间色差小于色差阀值的点簇视为一个聚类。2)迭代进行步骤1),直到遍历完所有点云。相似,只是阈值从法线/曲率变为了颜色。(1)距离阈值,用于聚类相邻点搜索。如示例中的建筑物等。的点云块,得到结果点云。(3)两类区域颜色阈值。(1)原始RGB点云。
2024-09-12 12:18:50
475
原创 PCL 区域生长分割(Segmentation_RegionGrowing)
对于分割建筑物或地面的各个平面,有较好的效果,工作中经常使用。3.关键函数(1)法向量夹角的阈值,超过这个夹角,即认为不在一个平面上(2)曲率的阈值,超过这个阈值,即认为不在一个平面上。
2024-09-12 11:11:48
559
原创 PCL 条件欧氏聚类(Segmentation_ConditionalEuclideanClustering)
条件聚类是欧式聚类的拓展,除了欧式聚类的距离阈值以外,还添加了条件阈值。通过本类,可自定义距离约束以外的条件约束,然后重写比较方法,进行条件比较。(1)进行。(2)对聚类出的结果再进行。以RGB颜色条件欧式聚类为例:1)首先对如上点云,进行欧式聚类(基于距离)分割点云,得到欧式聚类之后的结果点。即下图的树1,树2,树3。2)再对欧式聚类之后的结果点,进行依照RGB条件判断的聚类。得到最终结果(不同颜色即为不同的聚类簇)。不是的点云点将被抛弃。
2024-09-12 09:11:12
520
原创 PCL 拟合圆锥(以RANSAC为例)(SampleConsensus_Cone)
球体的Eigen::VectorXf参数为7个。圆锥体顶点的x坐标;圆锥体顶点的y坐标;圆锥体顶点的z坐标;圆锥体轴方向的x坐标;圆锥体轴方向的y坐标;圆锥体轴方向的z坐标;圆锥体的张开角度;2.
2024-09-10 18:55:45
710
原创 PCL 拟合圆柱(以RANSAC为例)(SampleConsensus_Cylinder)
圆柱的Eigen::VectorXf参数为7个。圆柱轴上一点的x坐标;圆柱轴上一点的y坐标;圆柱轴上一点的z坐标;圆柱轴方向的x;圆柱轴方向的y;圆柱轴方向的z;圆柱半径;
2024-09-10 18:38:53
817
原创 PCL 拟合球体(以RANSAC为例)(SampleConsensus_Sphere)
球体的Eigen::VectorXf参数为4个。球心的x坐标;球心的y坐标;球心的z坐标;球体的半径;
2024-09-10 18:07:21
408
原创 PCL 拟合直线(以RANSAC为例)(SampleConsensus_Line)
直线的Eigen::VectorXf参数为6个。直线上一点的x坐标;直线上一点的y坐标;直线上一点的z坐标;直线的方向x;直线的方向y;直线的方向z;
2024-09-10 17:53:10
707
原创 PCL 拟合三维圆(以RANSAC为例)(SampleConsensus_Circle3D)
三维圆的Eigen::VectorXf参数为7个。圆心x坐标;圆心y坐标;圆心z坐标;圆的半径;法线的x方向;法线的y方向;法线的z方向;2.完整代码int main()/****************拟合三维圆********************/// 源点云// 拟合出的内点/****************拟合三维圆********************/// 定义RANSAC算法对象// 设置距离阈值// 设置最大迭代次数// 参数// 获取属于拟合出的内点。
2024-09-10 17:18:28
676
原创 PCL 拟合二维圆(以RANSAC为例)(SampleConsensus_Circle)
二维圆的Eigen::VectorXf参数为3个。圆心x坐标;圆心y坐标;圆的半径。
2024-09-10 17:03:42
394
原创 PCL RMSAC算法拟合(拟合平面为例)(SampleConsensus_RMSAC)
1.RMSAC介绍本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。1.RMSAC介绍一种LMeds算法的改进,用于提升计算速度。类似于RRANSAC,在算法的2,3歩中间插入了一个预判断,进行该判断时会从当前点集中随机抽取一定数量d的点,用当前模型去判断,如果为内点,则继续下面的步骤,否则直接放弃当前模型重新抽样。
2024-09-10 13:08:46
373
原创 PCL RANSAC随机采样一致性拟合(拟合平面为例)(SampleConsensus_Ransac)
本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。Ransac为最常用的拟合模型方法。
2024-09-10 13:02:46
1540
2
原创 PCL Prosac算法(拟合平面为例)(SampleConsensus_PROSAC)
本示例以拟合平面为例。剩余模型拟合,流程同本示例一致本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。
2024-09-10 12:53:06
637
原创 PCL MASC M估计样本一致性(拟合平面为例)(SampleConsensus_MSAC)
1.MSAC算法本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。1.MSAC算法2.注意事项MSAC算法属于ransac的改进,基本思想同样是使用距离阈值作为判断条件,拟合最优平面。3.完整代码。
2024-09-10 12:43:51
444
原创 PCL MLESAC极大似然采样一致性估计(拟合平面为例)(SampleConsensus_MLESAC)
本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。
2024-09-10 12:32:52
674
原创 PCL LMedS最小中值平方拟合(以拟合平面为例)(SampleConsensus_LMedS)
本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。本示例以拟合平面为例。剩余模型拟合,流程同本示例一致。1.LMedS 算法2.注意事项不适用于局外点大于50%的样本。3.完整代码。
2024-09-10 11:43:53
541
原创 PCL NDT精配准(Registration_NDT)
将目标点云按照固定的分辨率划分成3d网格,并计算出每个3d网格点云的分布情况。然后计算源点云在目标点云3d网格分布的概率,以确定两点云之间的匹配关系。(1)将目标点云按照输入的分辨率划分到3d网格中,并计算每个网格的均值与协方差。(2)计算源点云中的每个点落在目标点云的3d网格中的哪个网格里。(3)通过公式计算NDT代价值,确定是否收敛。代价值公式:(4)迭代计算最优解。
2024-09-07 16:22:32
570
原创 PCL 4PCS点云粗配准(Registration_FPCS)
1.4PCS算法原理核心思想:使用四个近似共面点来描述两个三维点云之间的刚性变换关系,因此由称”四点匹配算法“。即,得到粗配准的变换矩阵。如下图:1.点云四点集的确定(1)选择三个共面点1)在源点云中,要求这三点所构成的三角形面积尽量的大(三点确定一个平面,向量叉积可以计算面积),但是三点间的距离不能超过一定的阈值上限,该上限由两片点云的给定确定。2)因为三点之间距离越大,配准的鲁棒性越高;但距离过大,三点均在两点云的重叠区域之外了,配准效果又不好。
2024-09-07 15:31:24
1549
原创 PCL GICP配准(Registration_GICP)
GICP 实质上是一种的ICP算法。其将概率信息(使用协方差矩阵计算)和点对点的ICP 结合在一起,生成gicp统一模型(Generalized-ICP)。其中通过局部点集协方差矩阵起到类似于权重的作用,消除某些不好的对应点在求解过程中的作用。(1)计算源点云P和目标点云Q中的最邻近点集对(Pi,Qi)。(2)通过KD树,拟合生成Pi和Qi的局部平面。(2)分别计算点集Pi和Qi所拟合平面的协方差矩阵Mp、Mq。(3)计算两拟合平面之间的变换矩阵Mt。
2024-09-07 11:30:51
742
原创 PCL 筛选对应点对(距离筛选+中值筛选+法线一致性筛选+ICP重叠率估计筛选+一对一删除重复点对)(Registration_CorrespondenceRejector)
注意:本文较长,包括PCL中大多数筛选对应点对的方法,该方法均用于提高配准的精确性和减少可能的误匹配。因方法大多简单,合并为一个文章。目录如下。1.根据距离筛选对应点对2.根据中值筛选对应点对3.一对一删除重复点对4.根据法线一致性筛选对应点对5.根据ICP重叠率估计筛选对应点对6.完整代码本文基于寻找到对应点对之后,对寻找到的对应点对做二次筛选。。用于下方各筛选方法测试的原始点对关系如下图。
2024-09-06 17:02:39
973
原创 PCL 基于特征点寻找对应点对(Registration_CorrespondenceEstimationFeature)
在寻找对应点对时,pcl::registration::CorrespondenceEstimation可使用诸如以下的模板匹配,以实现的功能。(1)计算点云的某种特征,如PFH、FPFH、VFH、3DSC等特征描述子。具体可查阅PCL::Feature中可使用的特征描述子。(2)使用计算出的特征描述子来计算对应点对。(3)得到最终结果(1)在声明并定义对应点对计算对象时,使用你需要的特征描述子作为模板。。点对类声明时,修改模板。
2024-09-06 15:39:59
512
原创 PCL 寻找点云对应点对关系(Registration_CorrespondenceEstimation)
注意:本示例为PCL中寻找对应点对的基础方法,无需输入法向量或者直方图等其他特征,直接输入点云就可计算。注意:本示例为PCL中寻找对应点对的基础方法,无需输入法向量或者直方图等其他特征,直接输入点云就可计算。1.原理PCL源代码中没有相关论文名称,也没有某种算法的关键字。无从查找原理。所以本示例不介绍原理。但本方法在点对匹配中较常用。2.关键函数(1)本类类名3.代码。
2024-09-06 11:13:33
349
原创 PCL 基于反投影法寻找对应点对(Registration_CorrespondenceEstimationBackProjection)
类似于2D下的,即基于某个特征的,用已知图像的某些特征来突出其它图像中此类特征的一种方法。(1)统计已知图像某个特征的直方图,PCL中通常用法向量特征来统计直方图,并把直方图表示为概率的形式。(2)经过滤波处理后的投影数据被反投影回物体空间。这个过程是通过计算每个投影角度下射线穿过物体的路径,并将滤波后的投影数据按照这些路径均匀地分布回去,从而得到一个初步的结果。(3)计算源点云和目标点云的直方图数据,并对二者进行点对匹配,得到最终结果。
2024-09-06 10:46:26
436
原创 PCL 基于法线信息寻找对应点对(Registration_CorrespondenceEstimationNormalShooting)
本匹配适用于具有曲率或复杂几何形状的两点云之间的对应点计算。本匹配适用于具有曲率或复杂几何形状的两点云之间的对应点计算。
2024-09-06 10:18:27
269
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人