
Point Cloud Library (PCL)
文章平均质量分 60
介绍PCL中算法与用法
点云实验室lab
从事多源激光点云数据智能处理、图像处理与应用(目标检测、识别),深度学习以及数学相关推理与应用。
展开
-
点云八叉树构建(机载、车载与地基)
1、八叉树构建原理点云八叉树是在点云体素化或者二维格网化基础上(点云二维组织与体素化构建参考博客三维点云的格网(体素)组织_仰望星空_2022的博客-优快云博客),再做进一步处理,将满足相同性质的点划入到同一块中,如同一体素内点能够拟合成面,或者来自同一地物等。不管是二维格网还是三维体素构建八叉树,其原理步骤是相同的,都是以初始体素(或者格网)为处理基元,根据八叉树构建原理对其进行划分,实现构建。下面以体素块为例,讲解八叉树构建的思路。一个正方体均匀划分成8个小立方体的形式如下(左图),包括两原创 2022-05-28 17:25:02 · 1923 阅读 · 0 评论 -
三维点云的格网(体素)组织
1、格网(体素)化原理 点云格网化组织可以分为二维格网化与三维体素,其主要根据不同应用场景进行分类。其中二维格网化主要用于机载LiDAR采集的点云数据,该类数据主要从俯视的角度采集的数据,因此采用二维格网对数据进行组织比较合适,过程类似规则的影像数据,将点投影在XOY平面上。点云体素化(voxel)在车载、地面三维激光上应用较为广泛,因为在三维空间分布离散,且无论投影在任意一个面上都不合理,如XOY不可取,存在大量的重叠点,因此一般采用体素化对其进行组织。 无论是点云格网化......原创 2022-05-28 10:05:37 · 6762 阅读 · 3 评论 -
基于KDtree的点云欧氏距离聚类
欧氏聚类2.编程步骤3.增长源代码:区域增长函数源代码:std::vector<std::vector<pcl::PointXYZ>> EuclideanCluster::EuclideanCluster2DDis(std::vector<pcl::PointXYZ> BeforeCluster, double r){ IO IOExample; CalculateFeatures CalcuExample; st.....原创 2022-05-24 22:06:54 · 1791 阅读 · 0 评论 -
七参数坐标参数解算(MATLAB、C++)
3、测试数据及代码:源代码下载链接:七参数刚性坐标转换参数解算(Matlab)-数据集文档类资源-优快云下载两测站下的公共点坐标如下:解算结果:参考:[1] 适用于大旋转角的三维基准转换的一种简便模型[2] 一种简便的三维激光点云拼接模型...原创 2022-05-10 22:10:57 · 1868 阅读 · 0 评论 -
基于微切面的最大夹角约束的边缘点提取
1、原理PCL中本身自带了基于夹角提取轮廓点的函数API,但是原理介绍的不是很清楚,这篇博客主要介绍其提取轮廓点的原理。其主要包括3个核心步骤:微切面估算、点投影、最大夹角计算,以最大夹角为依据,判断该点是否为轮廓点。(1)微切面估算使用基于最小二乘原理估算微切面,推导过程如下:(2)点投影点投影到微切面的示意图如下,其投影的步骤如下:(3)夹角计算选定一指定方向,计算旋转角,再计算相邻旋转角之间的差值,便可计算出任意相邻旋转角之间的夹角,计算...原创 2022-05-01 12:50:31 · 669 阅读 · 3 评论 -
任意空间平面点云旋转至与水平面平行(C++)
介绍了三维空间内平面点云旋转平移,投影至水平面过程,并展示程序测试效果。原创 2024-07-18 11:22:11 · 1081 阅读 · 0 评论 -
点云格网过程可视化(C++ PCL)
详细介绍了点云格网可视化原理与结果原创 2024-06-18 10:06:25 · 1260 阅读 · 0 评论 -
C++读取多行文本文件
很多点云文件以文本文件进行存储,其形式大同小异,目前主要常见如下两类 :数据一: X Y X数据二:X,Y,Z下面对该两类代码进行读取显示:(一)数据一:X,Y,Z读取代码如下:#include<iostream>using namespace std;#include<fstream>#include<sstream>voi...原创 2019-06-05 20:06:34 · 6838 阅读 · 3 评论 -
道格拉斯普克算法(DP)的点云轮廓线简化
利用DP算法实现边缘精简原创 2024-05-13 18:00:35 · 852 阅读 · 2 评论 -
二维轮廓自动添加屋顶
介绍一种自动给轮廓线添加屋顶方式原创 2024-05-18 13:33:55 · 1395 阅读 · 0 评论 -
PCL平面多边形可视化
多边形可视化原创 2024-05-18 12:07:09 · 328 阅读 · 0 评论 -
平面圆参数解算推导(解析法)
介绍圆参数推导过程原创 2024-05-16 16:09:39 · 222 阅读 · 0 评论 -
文件路径中‘/’与‘\’用法详解,与等效使用方法介绍
文件路径设置方法介绍原创 2024-03-20 18:05:09 · 2063 阅读 · 0 评论 -
简单形状点云轮廓点排序(旋转角 C++)
对轮廓点进行有序排序,依据旋转角度策略进行排序原创 2024-03-09 14:24:40 · 1044 阅读 · 1 评论 -
详解平面点云面积计算
详细介绍利用格网法、鞋带定理矩阵法计算点云面积,并总结两者方法的优缺点原创 2024-02-19 10:25:53 · 970 阅读 · 0 评论 -
点云最小外包矩形计算
介绍计算点云簇最小外包矩形计算原理,并给出源代码与测试数据原创 2023-07-09 13:10:35 · 1974 阅读 · 0 评论 -
平面点云面积计算的两种方式
2、源码//根据给定的序列点,计算其面积//输入:// sortedpoints 输入的一些列点***必须要有先后顺序//输出:// double 计算的面积double Contor::AreaCalculation(vector<pcl::PointXYZ> sortedpoints){ /*double result = 0; for (int i = 0; i < ...原创 2022-04-03 09:59:16 · 5110 阅读 · 6 评论 -
win11+VS2019下配置PCL1.11.1
PCL1.11.1配置vs2019原创 2023-05-12 23:09:23 · 2605 阅读 · 4 评论 -
平面点云的有序边缘点提取
提取有序边缘点原创 2023-02-08 23:03:57 · 2018 阅读 · 2 评论 -
基于 RANSAC 及其改进的面片分割
经典RANSAC原理讲解及其改进,用于平面分割原创 2022-11-25 22:57:39 · 715 阅读 · 8 评论 -
详解基于格网法统计平面点云面积
基于格网法统计水平面上点云面积原创 2022-10-30 09:42:32 · 959 阅读 · 3 评论 -
error C2872: “flann”: 不明确的符号 解决方法
PCL与opencv联合配置出错原创 2022-08-01 12:12:48 · 933 阅读 · 0 评论 -
DBSCAN点云聚类
介绍DBSCAN原理,并测试其在树木分离方面的应用原创 2022-07-20 19:53:31 · 5258 阅读 · 5 评论 -
欧氏聚类(API)及其单木分割
基于欧氏聚类实现点云聚类,其在林业上的应用原创 2022-07-20 17:38:11 · 2112 阅读 · 3 评论 -
PCL出错:error C2589“(“:“::“右边的非法标记)
PCL中出现error C2589“(“:“::“右边的非法标记原创 2022-07-20 16:29:28 · 1972 阅读 · 6 评论 -
阶跃数特征
点云高程特征,实现可视化原创 2022-07-13 12:14:39 · 435 阅读 · 0 评论 -
八叉树图及点云构建
常见的八叉树的构建是根据递归思想构建,在递归划分时,一般按照格网大小,或者是格网内点数进行约束,对格网均匀划分成8个格网,直至满足条件为止。如下为一个立方体被划分成8个子节点示意图。根据需要,对点云进行八叉树构造,将点云划分成多个小的块。#include "arrayoperation.h"#include "DataStruct.h"#include "IO.h"#include "CalculateFeatures.h"#include<iostream>#inc原创 2020-10-15 12:01:40 · 6259 阅读 · 4 评论 -
alpha shapes提取平面点云边界点
1、原理介绍由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点,可快速准确提取边界点,其原理如下:如下图所示,对于任意形状的平面点云,若一个半径为a的圆,绕其进行滚动,其滚动的轨迹形成的点为轮廓点。需要注意的是,alpha shapes算法只能探测二维点的轮廓点,大多数是将点投影到二维平面,形成二维点,再进行轮廓点探测。源码下载网站:2、代码示例:void main(){ vec原创 2022-05-02 17:44:58 · 6393 阅读 · 3 评论 -
(二)cloudcompare框选分割点云
CC软件是可以选择特定区域的点云数据,并进行单独保存,显示。具体如下:如下想选择黄色框内的点,单独进行显示,如下:首先选中要操作的点云数据,再选择小剪刀操作(segment),出现如下的选项再绘制任意的多边形,其中右击则为结束,将想要的点云数据框住,结果如下:选择内部点则可以显示出内部点选择勾选则会将该数据保存下来,如下所示:...原创 2022-04-15 09:23:04 · 13294 阅读 · 4 评论 -
PCL可视化八叉树格网
1 原理八叉树其实是一种特殊的由上至下的体素,其构造原理在这里不再进行赘述,详细的构造方式可参考博客:https://blog.youkuaiyun.com/qq_32867925/article/details/109094719有时候为了将点云、构造的层次八叉树需要进行可视化,便于人理解以及检查构造八叉树是否合理。如下图示,可以看见其构建了2次八叉树,即蓝色框和黄色框所示,每一个体素内包含的点各不相同。更多层次的八叉树,如3层、4层等都是类似的。2 可视化PCL支持将上述可视化结果进行显示,原创 2022-03-02 11:05:45 · 1479 阅读 · 0 评论 -
超体素分割——分割块点云单独保存及遗漏点的处理
根据上一篇博客介绍的超体素分割原理,在PCL中该功能以将其实现,并将其进行可视化。但是存在如下问题:(1)其将所有的块同时显示,对于很多其他应用,比如后续处理需要对每一块点单独进行操作,那么就需要将每个块点云单独抽取出来处理;(2)基于超体素分割,分割得到的点云块数据是远少于原始点的数据,其中与初始体素大小密切相关,初始体素体积越小,损失会小一点。这有点类似降采样,但实际中是不要降采样的,即我们期望最后处理的点云个数与你刚开始输入的点云个数要保持一致。针对问题(1),即单独将分出的点云簇分开,代码如下:原创 2021-12-19 11:22:55 · 1637 阅读 · 2 评论 -
超体素分割
网上很多关于点云超体素的介绍,原理应该比较简单,但一直存在两个方面疑问:(1)体素或者块之间的相邻关系的构建,其中使用Octree可以构建体素将关系,但不知道怎么构建的,比较迷糊(2)超体素的生成,按照区域增长原理,生成的块应该可以很大,尤其是在较大平面上时,但实际对块的大小控制比较理想(3)多个目标交接处的点如何划分,即经过超体素划分后点均划分成块,单个点好像几乎不存在这是超体素的原文:《Voxel Cloud Connectivity Segmentation - Supervoxels原创 2021-12-18 14:19:05 · 4115 阅读 · 3 评论 -
点云块拓扑关系构建
在使用八叉树对点云进行体素化处理后,会得到点云块,如下图所示是探测到的多个平面块,红色三角形对应的点云块与蓝色圆形点云块之间是相邻关系,那么怎么判断其是相邻关系。给出一种结合KDTree的构建面片块关系方法:...原创 2021-12-15 22:31:18 · 496 阅读 · 0 评论 -
cloudcompare--点云八叉树可视化
Cloudcompare软件(CC)中可以对点云进行八叉树进行组织并进行可视化,有助于理解八叉树对数据组织方式与原理。1. Octree的组织CC中设置八叉树的步骤如下,其默认是根据原始点云数据坐标,计算包含点云数据的最小立方体,再对该立方体进行8等份。8个子立方体内均包含了点云数据,因此显示出8个立方体。2. 可视化其包含3种可视化方式,分别为线、点、实体三种,如下所示显示级别,可以理解成将立方体划分成的次数,比如2就是将立方体划分2次...原创 2021-12-06 11:43:40 · 1851 阅读 · 0 评论 -
(一)CloudCompare软件拟合点云
CC中有个探测多边形的功能,其中包括平面、圆柱体等,推断应该是文献《Segmentation of point clouds using smoothness constraint》的算法,有知道的大佬可以下方留言,确认下。该功能的用法如下:仅探测平面,其结果为:...原创 2021-06-26 17:20:23 · 2557 阅读 · 5 评论 -
点云法向量可视化
PCL中自带法向量估算函数,也可以使用其他方法估算法向量。下面代码展示了使用其他方法估算法向量的使用方法:#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/kdtree/kdtree_flann.h>#include <pcl/features/normal_3d.h>#include <pcl/surface/gp3.h>#include <原创 2021-05-12 21:14:19 · 1235 阅读 · 0 评论 -
KDtree近邻点搜索
PCL中kdtree搜索,可以实现K近邻搜索与半径r近邻搜索两种,使用案例如下:K个近邻点搜索:#include <pcl/point_cloud.h>#include <pcl/kdtree/kdtree_flann.h>#include <iostream>#include <pcl/io/pcd_io.h>#include <vector>#include <pcl/visualization/pcl_visuali原创 2020-10-29 20:17:54 · 1517 阅读 · 0 评论 -
点云立方体体素可视化
超体素类似与超像素,其基本单元是体素,一个体素为一个立方体。加单的可视化如下所示:#include <thread>#include <pcl/common/common_headers.h>#include <pcl/features/normal_3d.h>#include <pcl/visualization/pcl_visualizer.h>using namespace std;void main(int argc, char**原创 2020-09-28 22:18:12 · 2689 阅读 · 2 评论 -
PCL中形态学滤波
故事背景和目的:在进行机载LiDAR数据处理的时候,需要将激光雷达采集的点云数据进行分类,分离出地面点云以及地物点云。基于地面点云,再经过一定的处理,可生成DEM(数字高程模型),通过DEM能详细掌握区域内的地形地貌,是目前测绘领域广泛采用的方法。生成DEM的关键是有从原始点云中分类产生的地面点,分类结果对后面的处理至关重要。本文主要介绍基于改进的形态学滤波器方法,分离地面点和地物点的方法。该算法...原创 2020-03-10 13:35:12 · 2205 阅读 · 0 评论 -
快速点特征直方图FPFH的可视化
(一)点特征(PF) 点特征直方图是描述通过计算邻域内所有两点之间关系而得到的直方图,其中使用三个角度来描述两点之间的关系。三个角度的计算如下图所示。因此,在计算PFH时需要计算每个点的法向量,依据相邻点法向量计算得到。 在推导计算三个角度时,感觉应该是均要加arccos,另外在推导第3个角度时,不清楚是怎么推理的,有知道的留下言。(二)点特征直方图(PFH)...原创 2020-03-09 12:52:47 · 1829 阅读 · 5 评论