- 博客(27)
- 资源 (33)
- 收藏
- 关注
原创 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(4):Clustering(欧式聚类)
在第(3)实现了地面点与障碍物的分离,此部分要实现的是聚类,聚类是指把不同物体的点云分别组合聚集起来, 从而能让你跟踪汽车, 行人等多个目标. 其中一种对点云数据进行分组和聚类的方法称为欧氏聚类。欧式聚类是指将距离紧密度高的点云聚合起来. 为了有效地进行最近邻搜索, 可以使用 KD-Tree 数据结构, 这种结构平均可以加快从 o (n)到 o (log (n))的查找时间. 这是因为Kd-Tree允许你更好地分割你的搜索空间. 通过将点分组到 KD-Tree 中的区域中, 您可以避免计算可能有数千..
2020-05-31 14:53:11 1815
原创 读自动驾驶激光雷达物体检测技术(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 1381 6
原创 深度学习中的一些英文解释
A:BCDEFG:(1)ground truth:真实标签HI:(1)intersection over union( IOU):交并比JKLMNOPQRSTUVWXYZ
2020-05-31 14:52:09 1638 1
原创 使用system语句出现不明确问题
使用system("pause")出现不明确问题,很简单直接加上头文件#include<cstdlib>OK
2020-05-28 23:23:17 5524 1
原创 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(3):Segmentation
Segmentation的任务是将属于道路的点和属于场景的点分开。基于Manual RANSAC Segmentation实现的分割效果展示:代码涉及到的知识:下图代表的是输入,是在上个博客处理过的滤波后的点云:输入滤波后的点云数据下图表示的是分割的效果。提取的点云数据代码展示:...
2020-05-28 23:20:37 961
原创 读自动驾驶激光雷达物体检测技术(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 1497 10
转载 boost--文件、目录操作
filesystem库是文件系统操作库,可以使用其中的basic_path类用来操作目录、文件,使用需要包含编译好的system库和filesystem库,我们一般不直接使用basic_path,而是使用typedef : path和wpath。使用它需要包含"boost/filesystem.hpp"。boost::filesystem::path p1("D:\\dir"); //windows下既可使用斜杠也可使用反斜杠(资源管理器地址栏中使用的就是反斜杠),又因为在c++中反斜杠是转义..
2020-05-27 16:42:26 1092
转载 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 498
原创 Paper1:HoPE: Horizontal Plane Extractor for Cluttered
摘要:在杂乱的三维场景中提取水平面是许多机器人应用的基本步骤。针对一般平面分割方法在这一问题上的局限性,我们提出了一种新的平面提取的算法,它能够在杂乱的有序点云或者是无序点云数据中高效的提取平面。通过预校准或惯性测量单元获得的传感器方向将源点云转换为参考坐标系,提出了一种改进的区域增长算法与Z轴聚类算法结合,一种基于主成分分析(PCA)的点云聚类和分割的方法。此外,我们还提出了一种最近邻平面匹配(NNPM)策略来保持连续序列中提取平面的稳定性。对真实场景和合成场景的定性和定量评估表明,我们的方法在对有噪声的
2020-05-26 14:32:00 387 3
原创 高斯混合模型Gaussian Mixture Model (GMM)算法从基础详解
高斯混合模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,它是一个将事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。 对图像背景建立高斯模型的原理及过程:图像灰度直方图反映的是图像中某个灰度值出现的频次,也可以以为是图像灰度概率密度的估计。如果图像所包含的目标区域和背景区域相差比较大,且背景区域和目标区域在灰度上有一定的差异,那么该图像的灰度直方图呈
2020-05-26 14:30:23 5014 1
原创 点云标注工具:1.PCAT
原作者在优酷上发布了PCAT软件的使用教程视频:视频1:https://v.youku.com/v_show/id_XNDYxNjY4MDExMg==.html?spm=a2h0k.11417342.soresults.dtitle视频2:https://v.youku.com/v_show/id_XNDYxNjY4MDI5Mg==.html?spm=a2hzp.8244740.0.0-----------PCAT在github上的链接:https://github.com/halostorm/
2020-05-25 15:27:52 3191 6
原创 霍夫变换(Hough Transform):霍夫变化在图像处理以及点云处理中的直线检测应用
霍夫变换(Hough Transfrom)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换的结果。最初的霍夫变换是设计用来检测直线和曲线的,起初的方法要求知道物体边界线的解析方程,但不需要有关区域位置的先验知识,这种方法的一个突出优点是分割结果的鲁棒性,即对数据的不完全或者噪声不是非常的敏感,然而要获得描述边界的解析表达常常是不可能的;后经过推广,经典霍夫变换用来检测图像中的直线,再后来霍
2020-05-25 14:20:34 5076 8
转载 C++:vector中使用.clear()函数
vector.clear()函数并不会把所有元素清零。vector有两个参数,一个是size,表示当前vector容器内存储的元素个数,一个是capacity,表示当前vector在内存中申请的这片区域所能容纳的元素个数。通常capacity会比size大,如果往vector中push_back数据,这样就不用重新申请内存和拷贝元素到新内存区域了,便于节省时间。所以vector.clear()的真正作用是:把size设置成0,capacity不变。#include<iostream&
2020-05-25 09:38:52 49248 2
原创 C++:rand()函数和srand()函数解读
(1)srand(unsigned int t)这个是设定种子。因为电脑取随机数是伪随机,只要种子一样,则取出来的数一定一样。这里用time(0)这个内函数,copy则是返回了当前的时间值。这个值是按照时间而变化的,所以,srand(unsigned(time(NULL)))这个函数的作用,就是一个简单的设定随机数的种子方法。通过这个函数,可以得到每次都不容一样zd的随机数。time(0)或者time(1)指c++中的一种函数。其作用是返回一特定时间的小数值。time(0)指函数返回当前
2020-05-25 09:25:50 694
原创 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 3497
原创 双系统安装的流程记录
首先本人平时用得是windows10,但是为了其它实验需要在linux下实现,为了保存自己原来熟悉的win以及自己平时安装使用的软件和资料就想知道了装一个双系统吧。------------首先准备的东西:(1)首先下载Ubuntu的18.04,放到桌面就行。下载链接:http://mirror.hust.edu.cn/ubuntu-releases/18.04.4/ubuntu-18.04.4-desktop-amd64.iso(3)百度下载一个rufus(这是一个制作U盘的工具)。PS:下载的
2020-05-23 16:41:32 260 1
转载 Anaconda:虚拟环境
什么是虚拟环境、为什么使用虚拟环境、Anaconda创建、激活、退出、删除虚拟环境一、虚拟环境 virtual environment它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。譬如,本次学习需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了,需要Scrapy库,就在
2020-05-23 12:21:51 2204 1
原创 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 6877 16
转载 C++:构造函数作用及用法
PS:写在前面就是构造函数的作用可以这样理解,如果没有构造函数就是类里边只是声明了成员变量,成员函数,还有最后的对象,这样你在对该对象进行初始化赋值时就比较麻烦就得先调用成员函数对成员变量赋值,成员变量进而作用到对象上,之后有了构造函数,在构建构造函数时直接可以带参数对对象进行初始化,相当于省略了步骤,可以这样简单的理解。PS:但是构造函数远远不止只有赋值这一条作用(此处不要陷入误区以为他就是给成员变量赋值的这一个作用,不是这样的或者说不完全是这样,给成员变量赋值只是构造函数的作用之一,他还有其
2020-05-18 17:45:55 5700 1
原创 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 686
原创 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 534
原创 计算点云之间的平均距离,方差,标准差
Tips:看公式,可以推断出计算标准差分为几步:计算平均值u=(x1+x2+...+xn)/n 计算方差s²=((x1-u)^2 +(x2-u)^2 +...+(xn-u)^2)/n 计算标准差σ=sqrt(s²)//求平均值double average(double *x, int len){ double sum = 0; for (int i = 0; ...
2020-05-18 15:39:02 7922 7
原创 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 3863 2
转载 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 2175
原创 隐马尔可夫(HIdden Markov Model)1:隐马尔可夫模型(HMM)背景介绍
首先引入两个概念:1.频率派(后来逐渐发展称为统计机器学习,其核心问题就是优化问题,把他的loss function定义出来,求解) 2.贝叶斯派(后来发展为概率图模型,最终是要做推断,实际上就是求后验概率,围绕拿到后验概率怎么去求解他的期望方差等。进而把他隐身为积分问题,最重要的是一个积分问题,进行数值积分(MCMC))个人认为接下来所表述的HMM从根本上来讲他其实是一个概率图模型。概...
2020-05-08 09:26:39 741
转载 C++:map用法示例
#include <iostream>#include <map>using namespace std;int main(){ /************************************************************************/ /* map的常用方法示例 ...
2020-05-03 21:22:22 669
原创 PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
以下是分步代码解读:1.就是读取数据(略)2.基于kd-tree搜索求法线,求的的法线保存在normal_里边(略)3.邻域//3.邻域************************************************************************************ int point_num = cloud->points.size...
2020-05-03 16:23:38 5353 6
自己实地项目,关于通信:与安川控制器P3000通信模块代码
2022-07-03
解析波士顿Handle机器人背后的技术 - 硬创公开课-超清720P(2893481).mp4
2021-09-06
PCL-Principal-Curvature-CAN-master.zip
2020-11-27
基于coco格式的MaskRCNN完整训练过程
2020-11-27
Curvature Estimation
2020-10-12
Point Feature Extraction on 3D Range Scans Taking into Account
2020-09-05
HOUGH_LINE.cpp
2020-06-29
Fast 3D Line Segment Detection From Unorganized Point Cloud.pdf
2020-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人