Upupup6
这个作者很懒,什么都没留下…
展开
-
PCL调错:合集
1、 errorC4996 'pcl::visualization::PointCloudColorHandler<pcl::PCLPointCLOUD2>::getColor': use getColor() without parameters instead (It will be removed in PCL 1.12)2、errorC4996 'pcl::visualization::PointCloudColorHandler<PointT>::getColor'..原创 2020-12-04 13:47:45 · 1162 阅读 · 1 评论 -
PCL调错:(3)error C2589“(“:“::“右边的非法标记
错误提示:造成该错误的原因是:pcl库中的函数模板max与Visual C++中的全局的宏max冲突。百度了以下看了一共有两种解决方案:第一种不用修改库里边的源代码:设置项目属性,在预定义处理器中添加定义NOMINMAX来禁止使用Visual C++的min/max宏定义。vs工程属性中进行修改,“属性-c++-预处理器-预处理器定义”中加入NOMINMAX即可。第二种解决方案:(需要对pcl库中pcd_io.h的源代码进行修改,自认为这样不妥,库里边的代码最好不要改动,以免后期原创 2020-11-04 15:14:31 · 1333 阅读 · 2 评论 -
PCL调错(2):VTK报错
为了解决这两个问题,一共做了两步操作:第一:百度搜索结果是说我的lib库连接不对(就是VTK附加依赖项没有添加完整),所以又重新把vtk下的lib库都导入一遍。有一种方法,在cmd里边操作可以很方便快速的把你需要的lib直接下载下来。方法如下:(1)首先找到你的VTK目录下的lib位置,如下:(2)快捷键win+R打开cmd。之后可以根据你配置的Pcl是Debuge还是Release版本进行选择。第二:把opengl32. lib添加进去就好了,添加方法如...原创 2020-07-07 10:37:50 · 1103 阅读 · 0 评论 -
PCL分割:Conditional Euclidean Clustering官方历程,在自己配置环境上调错
本人环境:VS2015,PCL1.8.11.首先遇到遇到了“无法解析的外部符号”,提示和normal estimation等错误解决办法:打开项目属性页>C/C++>预处理器,添加:PCL_NO_PRECOMPILE2.errorC2079:“pcl::KdTreeFLANN<PointT>::param_radius_”使用未定义的struct“fl...原创 2020-03-03 10:56:30 · 617 阅读 · 0 评论 -
求取质心坐标
#include "stdafx.h"//#include <vtkAutoInit.h>//VTK_MODULE_INIT(vtkRenderingOpenGL2)#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/filters/statistical_ou...原创 2019-10-24 09:04:26 · 503 阅读 · 0 评论 -
PCL:求两条直线交点
使用PCL库中的直线拟合方法,可以拟合出来多条直线,可以对这多条直线求交点(前提是直线相交)。对应实现代码如下:PS:如果是多条直线,要首先判断哪些直线的相交的,哪些直线是平行的。要有这个过程。...原创 2021-01-07 23:05:07 · 1434 阅读 · 0 评论 -
PCL点云处理算法目录
一、点云配准PCL中的点云配准方法:https://www.sohu.com/a/321034987_715754点云配准资源汇总:https://mp.weixin.qq.com/s/rj090vstXl8nlI_lWndmTg1、PCL ICP算法实现点云精配准:https://blog.csdn.net/qq_36686437/article/details/1058252522、PCL 点到面的ICP精配准:https://blog.csdn.net/qq_36686437/article/转载 2020-12-23 14:09:07 · 1717 阅读 · 1 评论 -
PCL:点云配准1、基础知识:平面3自由度、旋转矩阵精讲
背景:(台大林沛群讲义)1、如何去描述一个刚体的运动?先从平面开始:假设我们的刚体是图中所画的绿色的椭圆(黑白相见的是质心位置),在平面上面定义一个平面坐标(因为是二维的所以是xy),那如何去描述这个平面上的运动呢?一个平面运动总共有3个我们称之为自由度(2个移动1个转动),就等于说我们需要3个参数来描述它的运动,从图中可以看出来这三个自由度中有两个是可以是移动的,这个椭圆可以水平的移动沿着x轴,或者上下的移动沿着y轴,所以说我们需要2个参数来描述这个刚体的移动状态,所以说平面上有两个自由度;这个椭原创 2020-12-14 20:09:55 · 2047 阅读 · 1 评论 -
PCL:自定义创建带颜色的点云保存后rgb是一个很大的数,由x y z rgb解包为x y z r g b
由于实验需要自己需要从3D相机中读取数据并保存为pcd格式,下面是一部分读取并保存的代码,以及最后保存结果,但是在保存为pcd的时候发现是这个样子:pcd里边的rgb是连在一起的不是我们平时看到的r g b分开的。最后查找原因是因为如下:(就是把RGB三个值通过位运算合一起了,你搜索 生成带有rgb值的pcd文件并显示就可以看到说明)所以需要再处理一下。解决办法:参考链接:https://blog.csdn.net/wkxxuanzijie920129/article/deta...原创 2020-12-14 13:52:51 · 2447 阅读 · 2 评论 -
(曲率系列4:)基于点拟合二次曲面并求曲率
现实世界中的一切,都可以用二次曲面表示,那么如何拟合二次曲面呢?二次曲面是在三维坐标系(x、y、z)下三元二次代数方程对应的所有图形的统称。在欧氏三维空间里坐标x,y,z之间的二次方程(系数为实数,且二次项系数不全为零)所表示的曲面。二次曲面的方程为: 分类:二次曲面有12种:(1)圆柱面(Cyindrical surface)(2)椭圆柱面(Elliptic cyl...原创 2020-12-02 14:01:28 · 4161 阅读 · 2 评论 -
随笔:送给初次使用PCL库的小伙伴
写在前面:PCL库,之前在使用他的时候,只是各种掉库,觉得自己会调库了,根据案例可以跑出来自己想要的结果(比如计算一个点云的边界,使用RANSAC拟合三维直线等)觉得自己就是掌握了,其实并不然,这样的话只是懵懵懂懂的浅显的入门了而已,而有的时候并没有把简单的掉库代码读懂,只是按照案例代码复制粘贴导入自己的数据出来了自己想要的结果,并没有搞懂每一句话是什么意思,这样的话连一个搬运者也算不上罢了,只是停留在表面的知道功能。最近通过摸索尝试着去读一下他的底层各个类结构以及API函数的底层代码,才觉得自己原来.原创 2020-10-24 22:03:13 · 1224 阅读 · 3 评论 -
(曲率系列3:)PCL:PCL库中的两种曲率表示方法pcl::NormalEstimation和PrincipalCurvaturesEstimation
PCL里有两个计算曲率的调用函数:(1)pcl::NormalEstimation 这里边计算的曲率不是数学上定义的曲率。(2)pcl::PrincipalCurvaturesEstimation计算主曲率的。其中该种方法对应的英文文献链接为:原创 2020-10-16 14:28:51 · 3890 阅读 · 0 评论 -
PCA(3):PCA实现C++代码
先看一下PCA算法实现流程:(设有m条n维数据)(1)将原始数据按列组成n行m列矩阵X。(2)将X的每一行(代表一个属性字段),进行零均值化处理,即减去这一行的均值。(3)求出协方差矩阵。(4)求出协方差矩阵的特征值及对应的特征向量。(5)将特征向量按对应特征值大小,从上到下按行排列成矩阵,取前k行组成矩阵P。(6)Y=KX即为降维到k维后的数据。...原创 2020-07-10 15:02:51 · 1965 阅读 · 0 评论 -
PCL:英文参考链接
从基础到进阶,还是英文的比较准确一些吧啊嗯!!PCL/OpenNI tutorial 0: The very basics:http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_0:_The_very_basicsPCL/OpenNI tutorial 1: Installing and testing:http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_1:_Installin原创 2020-09-05 23:13:35 · 218 阅读 · 0 评论 -
PCL:点云特征描述子3D_object_recognition_(descriptors)
翻译自该网站:原创 2020-09-04 17:09:48 · 4930 阅读 · 0 评论 -
PCLPCL/OpenNI tutorial 2: Cloud processing (basic)
翻译自:http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_2:_Cloud_processing_(basic)#Feature_estimation原创 2020-09-04 15:25:17 · 360 阅读 · 0 评论 -
基于多线雷达的数据异常检测:检查测第去条线序出错
基于多线雷达的数据异常检测:原始数据展示:/*强度异常点检测:虚点(0),(255)*/#pragma warning(disable:4996)#include <iostream>#include <fstream>#include <vector>#include <string>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#inc原创 2020-10-19 15:38:47 · 133 阅读 · 0 评论 -
PCL:最小特征值与特征向量为什么可以表示法向量??
求解点云法向:(基于局部平面拟合点云的法向量)点云法向量求解需要其邻域内点支持,而邻域的大小一般由邻域半径值或临近点个数来表示。现实中需要根据点分辨率、物体细节精细程度和用途等因素来取值。过大的邻域会抹平三维结构细节使得法向量过于粗糙,而过小的邻域由于包含了太少的点受噪声干扰程度较强。特征值物理意义:事实上,我们求方阵特征值和特征向量是在处理一个半成品,对于一个非方阵的矩阵A,它往往代表一个多维空间里的多个数据。我们求这个矩阵A的协方差阵Cov(A,A’),即得到一个方阵B,而我们平时求的特征.转载 2020-07-30 15:25:28 · 3329 阅读 · 0 评论 -
PCL:基于PCL绘制包围盒代码实现(2)
本博客基于pcl::MomentOflnertiaEstimation类获取基于惯性矩(moment of inertia)与偏心率(eccentricity)的描述子,而该类的另一个功能就是提取有向包围盒(OBB)和坐标轴对齐包围盒(AABB),但是所提取的有向包围盒OBB并不一定是最小的包围盒。主特征向量概念: 一个矩阵可以有多个特征值,在这些特征值中,模最大的那个特征值即主特征值(对于实数阵即绝对值最大的特征值),主特征值对应的特征向量称为主特征向量。(“主特征向量...原创 2020-07-27 16:07:30 · 1367 阅读 · 1 评论 -
PCL:基于PCL绘制包围盒基础介绍(1)
包围盒顾名思义就是类似一个盒子把物体包围起来。以下内容来自百科:包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。常见的包围盒算法有AABB包围盒、包围球、方向包围盒OBB以及固定方向凸包FDH。碰撞检测问题在虚拟现实、计算机辅助设计与制造、游戏及机器人等领域有着广泛的应用,甚至成为关键技术。而包围盒算法是进行碰撞干涉初步检测的重要方法之一。分类:最常见的包围盒算法有AABB包围盒(Axis-aligned bou原创 2020-07-10 17:47:36 · 2304 阅读 · 2 评论 -
落地项目代码:霍夫变换在点云数据数据中的应用---霍夫直线检测进行箱体分割
HOUGH_LINE.h//HOUGH_LINE.h文件#pragma once#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/visualization/pcl_visualizer.h>#include <iostream>#include <pcl/common/common.h>#include <pcl/visualizati原创 2020-06-29 15:15:00 · 359 阅读 · 0 评论 -
PCL:PCLPlotter可视化特征直方图
PCLPlotter提供了一个直接简单的绘图接口,可以绘制许多类型的二维图形,包括多项式函数和特征直方图,比如PFH,FPFH等。利用PCLPlotter绘制图形,通常分为以下4步:(1)声明绘图对象PCLPlotter;(2)利用addPlottter()函数,增加绘图所需的函数或者数据;(3)添加窗口特性,可以调整窗口大小和设置标题;(此步是可选)(4)显示绘图;...原创 2020-06-11 17:11:54 · 1242 阅读 · 0 评论 -
读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
在第(3)实现了地面点与障碍物的分离,此部分要实现的是聚类,聚类是指把不同物体的点云分别组合聚集起来, 从而能让你跟踪汽车, 行人等多个目标. 其中一种对点云数据进行分组和聚类的方法称为欧氏聚类。欧式聚类是指将距离紧密度高的点云聚合起来. 为了有效地进行最近邻搜索, 可以使用 KD-Tree 数据结构, 这种结构平均可以加快从 o (n)到 o (log (n))的查找时间. 这是因为Kd-Tree允许你更好地分割你的搜索空间. 通过将点分组到 KD-Tree 中的区域中, 您可以避免计算可能有数千..原创 2020-05-31 14:53:11 · 1838 阅读 · 0 评论 -
读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(1):Stream PCD流式载入激光点云数据
首先贴一下大佬的github链接:https://github.com/williamhyin/SFND_Lidar_Obstacle_Detection知乎专栏:https://www.zhihu.com/people/william.hyinCSDN博客:https://blog.csdn.net/williamhyin/article/details/105159842原创 2020-05-31 14:52:51 · 1406 阅读 · 6 评论 -
读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(3):Segmentation
Segmentation的任务是将属于道路的点和属于场景的点分开。基于Manual RANSAC Segmentation实现的分割效果展示:代码涉及到的知识:下图代表的是输入,是在上个博客处理过的滤波后的点云:输入滤波后的点云数据下图表示的是分割的效果。提取的点云数据代码展示:...原创 2020-05-28 23:20:37 · 983 阅读 · 0 评论 -
读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(2):点云滤波FilterCloud()函数
原始函数声明在processPointCloud.h原始函数定义在processPointCloud.cpp函数调用在environment.cpp中的cityBlock()函数中本部分涉及到的知识:Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。Eigen:矩阵(Matrix)类的介绍及使用(在Eigen中,所有矩阵和向量均为Matrix模板类的对象,向量是矩阵的行(或列)为1是的特殊情况。)1、矩阵的三参数模板Matrix类有原创 2020-05-28 11:01:28 · 1532 阅读 · 10 评论 -
HOG特征
本篇博客转载于http://shartoo.github.io/HOG-feature/图像hog特征计算:https://zhuanlan.zhihu.com/p/40960756图像gamma校正:https://blog.csdn.net/akadiao/article/details/79679306梯度计算:https://www.learnopencv.com/his...转载 2020-05-26 14:38:37 · 526 阅读 · 0 评论 -
霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用
霍夫变换(Hough Transfrom)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果。最初的霍夫变换是设计用来检测直线和曲线的,起初的方法要求知道物体边界线的解析方程,但不需要有关区域位置的先验知识,这种方法的一个突出优点是分割结果的鲁棒性,即对数据的不完全或者噪声不是非常的敏感,然而要获得描述边界的解析表达常常是不可能的;后经过推广,经典霍夫变换用来检测图像中的直线,再后来霍原创 2020-05-25 14:20:34 · 5137 阅读 · 8 评论 -
RANSAC算法(2):(拟合平面)本文以地面为基础以及源码分布解读
---------------基于ransac算法直线检测:(1)从样本集N中,随机选n个点作为初始子集(但是所选取的这n个点点必须能够表达待拟合的模型,比如拟合直线的话最少需要2个点,所以n=2(这是正常求解方式),但是基于最小二乘的思想的化最少需要大于2个点,所以n>2(必须))。(2)根据(1)中拟合的模型,遍历N集合中的数据,如果在设置的距离阈值范围之内,则将其视为内点,将所有的内点称为一致集。(3)如果一致集中的内点个数大于设置的阈值个数T,则用内点重新拟合模型算法结束。(4原创 2020-05-23 23:27:51 · 3609 阅读 · 0 评论 -
PCL:拟合平面直线和曲线以及空间曲线的原理到算法实现
使用两种思路进行直线拟合:1.利用逆矩阵思想--------------进行下列公式的推导需要理解逆矩阵(求A矩阵的逆矩阵,则A矩阵必须是方阵)的知识:(1)为什么要引入逆矩阵呢?逆矩阵可以类比成数字的倒数,比如数字5的倒数是1/5,矩阵A的“倒数”是A的逆矩阵。5*(1/5)=1, A*(A的逆矩阵) = I,I是单位矩阵。引入逆矩阵的原因之一是用来实现矩阵的除法。比如有矩阵X,A,B,其中X*A = B,我们要求X矩阵的值。本能来说,我们只需要将B/A就可以得到X矩阵了。但是对于矩阵来说原创 2020-05-20 16:26:21 · 6943 阅读 · 16 评论 -
CloudCompare 的简单的使用说明
Fileopen:打开 save:保存 Global Shift settings:设置最大绝对坐标,最大实体对角线 Primitive Factory:对点云进行原始加工,改变原始点云的形状 3D mouse:对3D鼠标(如3Dconnexion)的支持 Close all:关闭所有打开的实体 Quit:退出Edit:Clone:克隆选中的点云 Merge:合并两个或者多个实体。可以合并点云(原始云会被删除);可以合并网格(原始网不会修改,CC会创建一个新的网格结构) Subsa转载 2020-05-11 16:28:13 · 2230 阅读 · 0 评论 -
PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
以下是分步代码解读:1.就是读取数据(略)2.基于kd-tree搜索求法线,求的的法线保存在normal_里边(略)3.邻域//3.邻域************************************************************************************ int point_num = cloud->points.size...原创 2020-05-03 16:23:38 · 5414 阅读 · 6 评论 -
PCL:从法线计算到曲率计算并可视化
表面法线是几何体表面的重要属性,在很多领域都有大量应用,例如:在进行光照渲染时产生符合可视习惯的效果时需要表面法线信息才能正常进行,对于一个已知的几何体表面,根据垂直于点表面的矢量,因此推断表面某一点的法线方向通常比较简单。然而,由于我们获取的点云数据集在真实物体的表面表现为一组定点样本,这样就会有两种解决方法:(1)使用曲面重建技术,从获取的点云数据集中得到采样点对应的曲面,然后从曲面模型中...原创 2020-04-28 16:53:43 · 11407 阅读 · 9 评论 -
PCL:点云数据基于法线的边界提取(从最初的法线估计理论推导到最终的边界提取)
该边界提取采用PCL库里边的方法,基于法线估计来实现的边界检测与提取:首先从原始点云上计算出法线,再由法线结合数据估计出边界。(这样解释还是特别抽像吧)------------法线求解:(平面的法线是垂直于它的单位向量。在点云的表面的法线被定义为垂直于与点云表面相切的平面的向量。法线提供了关于曲面的曲率信息)对点云数据集的每个点的法线估计,可以看作是对表面法线的近似推断。(因此该表面的...原创 2020-04-09 16:35:24 · 13593 阅读 · 33 评论 -
PCL:点云中的超体素数据
-----------------------体素数据---------------------体素化网格体素(Voxel)是体积元素(Volume pixel)的简称,是数据位于三维空间内规则网格上的最小单位,体素,其物理意义类似于二维图像像素在三维空间上的推广,是一组均匀分布、位于正交网格中心的立方体的集合。体素不能表示三维空间中的位置信息,即不具有三维坐标。可以通过体素数据在立体空间内的...原创 2020-03-24 10:28:38 · 3825 阅读 · 0 评论 -
PCL:不同 r 半径邻域下最大邻近点数目(2)+加可视化显示
#include <pcl/point_cloud.h>#include <pcl/kdtree/kdtree_flann.h>#include <iostream>#include <vector>#include <ctime>#include <pcl/io/io.h> #include <pcl/...原创 2020-05-18 15:39:49 · 550 阅读 · 0 评论 -
Pcl:Normal的定义结构及输出
1. pcl::Normal在pcl官网中的定义/*brief A point structure representing normal coordinates and the surface curvature estimate. (SSE friendly)ingroup common*/struct Normal : public _Normal{ inline Norm...原创 2020-03-17 15:02:42 · 3991 阅读 · 2 评论 -
PCL:法向夹角计算
#include <iostream>#include<cstdlib>#include <pcl/point_cloud.h>#include <pcl/kdtree/kdtree_flann.h>#include <vector>#include <pcl/io/pcd_io.h>#include &...原创 2020-05-18 15:38:13 · 3924 阅读 · 2 评论 -
PCL:不同 r 半径邻域下最大邻近点数目(1)
#include <pcl/point_cloud.h>#include <pcl/kdtree/kdtree_flann.h>#include <iostream>#include <vector>#include <ctime>#include <pcl/io/io.h> #include <pcl/...原创 2020-05-18 15:40:14 · 697 阅读 · 0 评论 -
PCL :K-d tree 2 结构理解
K-d tree 基础思路:(先看之前的KNN思想,更容易理解)导语:kd 树是一种二叉树数据结构,可以用来进行高效的 kNN 计算。kd 树算法偏于复杂,本篇将先介绍以二叉树的形式来记录和索引空间的思路,以便读者更轻松地理解 kd 树。kd 树(k-dimensional tree)是一个包含空间信息的二项树数据结构,它是用来计算 kNN 的一个非常常用的工具。如果特征的维度是 DDD,...转载 2020-03-16 21:08:41 · 328 阅读 · 2 评论