精华内容
下载资源
问答
  • Lidar点云原始数据

    2016-05-03 09:49:19
    机载Lidar点云数据包含影像等
  • 提出了一种机载LiDAR点云分类的自适应特征选择方法,该方法依据地形起伏情况对整体点云数据进行区域划分,自适应选择适宜该区域LiDAR点云分类的特征集合。为了验证这种特征选择方法的有效性,利用优选后的特征集合,...
  • 3D-Lidar点云数据处理

    千次阅读 2020-07-20 18:39:27
    3D-Lidar点云数据处理3D-Lidar点云数据处理原始激光点云数据滤波点云分割(地面与非地面)合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...

    3D-Lidar点云数据处理

    本篇博客,记录自己学习处理3D-Lidar点云数据目前遇到的算法及本工程使用的算法,作为记录有不足的地方,烦请大家批评指正、指导。

    原始激光点云数据滤波

    参考Being_young大佬文章:https://blog.csdn.net/u013019296/article/details/70052319

    对于原始点的滤波,觉得目前PCL库已经做了很好的处理,PCL库中给出几种需要进行点云滤波处理情况:

    1. 点云数据密度不规则需要平滑;
    2. 扫描时,由于障碍物可能会存在遮挡,离群点需要去除;
    3. 数据太大需要下采样(现在已经遇到这个数据量太大的问题了,16线的Lidar一次采样存在 ( 32 + 16 * 2 ) * 360 / 0.18 = 128000 个点云数据);
    4. 去除噪声

    对应解决方案:

    1. 给定的规则限制过滤去除点
    2. 通过常用滤波算法修改点的部分属性,统计滤波
    3. 下采样(测试选在0.1,过滤可达到50%以上)

    PCL库直通滤波例子

    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);
    /**
    * 1、创建直通滤波器的对象,设立参数,滤波字段名被设置为Z轴方向
    * 2、通过函数setFilterLimitsNegative,过滤所有点的Z轴坐标不在该范围内的点过滤掉(false)或保留(true) 
    */
    // 设置滤波器对象
    pcl::PassThrough<pcl::PointXYZ> pass;	// 声明滤波器对象
    pass.setInputCloud (cloud);				// 设置输入点云(ptr指针)
    pass.setFilterFieldName ("z");			// 设置过滤x,y,z哪个方向
    pass.setFilterLimits (-1.8, 0.5);		// 设置在过滤方向的范围
    pass.setFilterLimitsNegative (false);   // 设置保留范围内还是过滤掉范围内
    pass.filter (*cloud_filtered);			// 执行滤波,保存过滤结果到cloud_filtered(ptr指针)
    

    PCL库体素下采样例子

    本工程使用的滤波器

    /**
    * 创建pcl::VoxelGrid滤波器对象,并设置叶素大小为1cm
    */
    pcl::VoxelGrid<pcl::PCLPointCloud2> vg;	// 创建滤波对象
    vg.setInputCloud (cloud);				// 输入点云(ptr指针)
    vg.setLeafSize (0.01f, 0.01f, 0.01f);	// 设置体素体积为1cm的立方体
    vg.filter (*cloud_filtered);			// 执行滤波处理,存储输出
    
    

    PCL库统计滤波器例子

    /**
    * 1、创建统计滤波器statisticalOutlierRemoval对象
    * 2、设置在进行统计时考虑查询点临近点数
    */
    pcl::StatisticalOutlierRemoval<pcl::PointXYZ> sor;	// 创建滤波器对象  
    sor.setInputCloud(cloud);							// 输入点云(ptr指针)
    sor.setMeanK(50);									// 设置在进行统计时考虑查询点临近点数  
    sor.setStddevMulThresh(1.0);						// 设置判断是否为离群点的阀值  
    sor.filter(*cloud_filtered);						// 执行滤波处理,存储输出  
    
    

    原始点云数据
    After-filter

    点云分割(地面与非地面)

    1. Fast Segmentation of 3D Ponit Clouds for Ground Vehicles 论文实现 文章解读 IEEE 文章下载
    2. PCL库,随机采样一致性实现

    本工程采用快速分割
    1、根据Lidar旋转角度和角分辨率分割扇形区域,sector_num = 360° / 0.18°;0.18是水平角分辨率;
    2、根据object的x,y值计算θ\theta角,通过向下取整的方式把点运数据投影到不同扇形区域内,然后每个扇形区域内的点根据半径距离也向下取整并从小到大排列;
    3、设置点与点之间最大坡度 point2point_max_slope = 5° 和地面坡度 ground_max_slope = 8°,根据实际情况标定;
    4、计算点与点之间的高度阈值 point_height_threshold 和 ground_height_threshold 以及 point_distance;

    计算开始之前,需要将原有点云数据转类型,新类型除包含原有数据内容,还添加了投影在xy平面的半径,X轴方向上的夹角θ\theta,扇形分割的序列索引,所在扇形根据半径从小到大重排列的序列索引,以及原始点云序列索引

    struct PointXYZRTCO
    {
        pcl::PointXYZ point; 	// 保存原始点云数据 
        float radius;		 	// cylindric coords on XY Plane
        float theta;		 	// angle deg on XY plane
        size_t radial_div;   	// index = 保存点云数据属于哪个扇形
        size_t concentric_div;  // index = 保存该扇形点云的重排列序列
        size_t original_index;  // index = 保存原始点云序列
    };
    

    对LIDAR的扫描区域进行扇形分割,每个扇形区域的点云将组成一条射线

    XY平面扇形分割

    对扇形区域内的点云,进行重排列:
    1、根据 floor(θ\theta / 0.18°),对点云的射线所以归属进行取值;
    2、然后,根据每个点云数据的x,y坐标值计算每个点云所在圆弧的半径r,根据半径r,将原有射线上的点云进行从小到大的顺序排列;

    单个扇形点云转换为单个射线

    根据每条射线的点云分布,对其进行地面分割:
    1、首先,对点与点之间坡度以及地面总体坡度进行估计,该估计值属于经验值,对于不同雷达,在分割数据时,需要进行标定调参;
    2、从射线的最小端开始,计算点与点之间之间的距离,和高度差的阈值;

    当前点高度属于前一个点高度 ± 点与点高度阈值情况,即
    current_point.z ∈ (pre_point.z - height_threshold , pre_point.z + height_threshold)
    1、情况一,前个点属于非地面的情况:

    • 如果,当前点的高度也属于负的Lidar高度 ± 地面高度通用阈值,即current_point.z ∈ (- sensor_height - general_height_threshold , - sensor_height + general_height_threshold) :得到当前点为地面点;
    • 否则,也属于非地面点。

    前一个点不属于地面

    当前点高度属于前一个点高度 ± 高度阈值情况,即
    current_point.z ∈ (pre_point.z - height_threshold , pre_point.z + height_threshold)
    2、情况二,前个点属于地面的情况:

    • 此时,当前点也为地面点。

    前一个点属于地面

    当前点高度不属于前一个点高度 ± 高度阈值情况,即
    current_point.z ∉ (pre_point.z - height_threshold , pre_point.z + height_threshold)
    1、情况一,当前点的高度属于负的Lidar高度 ± 地面高度通用阈值,即current_point.z ∈ (- sensor_height - general_height_threshold , - sensor_height + general_height_threshold) && 点与点之间的距离很大p2p_distance > reclass_distance_threshold:得到当前点为地面点;
    2、其他情况,当前点都为非地面点。

    前一个点不论在不在地面

    分割后,地面点云:

    ground

    分割后,非地面点云:

    unground

    目标聚类

    本工程基于非地面分割点云数据进行欧式聚类

    1. PCL库 欧式聚类
    2. 深度学习 Point++ / PointNet++ / PointRCNN
    3. Fast and Furious: Real Time End-to-End 3D Detection, Tracking and Motion Forecasting with a Single Convolutional Net (1) (2) (3) (4)

    对于2/3的方式,下一步可以尝试优化3D检测跟踪

    欧式聚类

    PCL库使用kd-tree加快欧式聚类算法进度

    Kd-tree详解:(1)
    欧式聚类算法流程详解: (1) (2)
    由于点云数据在距离增加的时候,离散度在不断增加,所以考虑这种情况,在下面传参的时候根据距离判断传入不同的容忍度:

    std::vector<pcl::PointIndices> local_indices;
    pcl::EuclideanClusterExtraction<PointT> euclid;
    euclid.setInputCloud(in_ground_cloud_2d);
    euclid.setClusterTolerance(in_max_cluster_distance[i]);
    euclid.setMinClusterSize(50);
    euclid.setMaxClusterSize(10000);
    euclid.setSearchMethod(tree);
    euclid.extract(local_indices);
    

    KD-Tree 搜索过程关键点:
    k = 3情况下,x,y,z三个方向的超平面选择方法,根据三个方向上数值方差最大值判断超平面选择顺序,根据均值选择二分点;
    方差越大,数据分布越离散,选择最大的可以很好的将数据分割开来。

    KD搜索流程,二分速度就是快:
    图中对于给定的查询数据点m,须从KD-Tree的根结点开始进行比较,其中m(k)为当前结点划分维度k上数据点m对应的值,d为当前结点划分的阈值。若 m(k)小于d,则访问左子树;否则访问右子树,直至到达叶子结点Q。此时Q就是当m前最近邻点,而m与Q之间的距离就是当前最小距离Dmin 。随后沿着原搜索路径回退至根结点,若此过程中发现和m之间距离小于 Dmin的点,则须将未曾访问过的子节点均纳入搜索范畴,并及时更新最近邻点,直至所有的搜索路径都为空,整个基于KD-Tree结构的最近邻点查询过程便告完成。

    KD-tree

    欧式聚类流程:
    对于欧式聚类来说,距离判断准则为欧氏距离 Eu=sqrt((xkxi)2+(ykyi)2+(zkzi)2+...)Eu = sqrt((xk-xi)^2 + (yk-yi)^2 + (zk-zi)^2 + ...)。对于空间某点P,通过KD-Tree近邻搜索算法找到k个离p点最近的点,这些点中距离小于设定阈值的便聚类到集合Q中。如果Q中元素的数目不在增加(或者小于最小搜索数目,或者大于最大搜索数目),整个聚类过程便结束;否则须在集合Q中选取p点以外的点,重复上述过程,直到Q中元素的数目不在增加为止。

    欧式聚类

    Add Bounding Boxes

    对于Bounding Boxes的生成可以使用PCA主成分分析法生成更小的方框, 实现更高的预测结果精准性. 具体PCL实现可以查看这个链接:PCL-PCA.

    BBox

    目标跟踪

    Doing

    在使用深度学习目标检测算法(PointRCNN)后,该3D多目标追踪系统不需要使用GPU且取得了最快处理速度(214.7FPS)。
    本工程尝试使用欧式聚类的方式获取bbox,然后根据该目标检测结果进行多目标跟踪。

    1. 基础卡尔曼滤波 -> 根据需求可以优化为EKF(扩展卡尔曼滤波)和UKF(无损卡尔曼滤波)
    2. 3D-MOT
    3. A Baseline for 3D Multi-Object Tracking 原文 (译文)

    基础卡尔曼滤波

    用最简单的过程模型来描述目标运动——恒定速度模型

    1. 同论文一样,对于检测目标object中 [ x\ x, y\ y, z\ z]T 信息转化为 [ x\ x, y\ y, z\ z,θ\theta, l\ l, w\ w, h\ h, vx\ v_{x}, vy\ v_{y}, vz\ v_{z}]T
    2. 然后根据卡尔曼滤波算法,预测更新
       Xk\ X_{k} =  F\ F ·  Xk1\ X_{k-1} +  B\ B ·  uk\ u_{k}
       Pk\ P_{k} =  F\ F ·  Pk1\ P_{k-1} ·  FT\ F^T +  Q\ Q
       Gk\ G_{k} =  Pk\ P_{k} ·  CT\ C^T / (  F\ F ·  Pk\ P_{k} ·  FT\ F^T +  R\ R)
       Xk\ X_{k} =  Xk\ X_{k} +  Gk\ G_{k} · ( Z\ Z -  C\ C ·  Xk\ X_{k})
       Pk\ P_{k} = ( I\ I Gk\ G_{k} ·  C\ C) ·  Pk\ P_{k}
    3. 其中, Xk\ X_{k} 为状态向量, F\ F 为状态转移矩阵, B\ B为控制矩阵, Pk\ P_{k}为估计状态概率分布的协方差矩阵,  Q\ Q是我们的过程噪声的协方差矩阵,由于过程噪声是随机带入的,所以 uk\ u_{k} 本质是一个高斯分布: uk\ u_{k} ~  N\ N( 0\ 0, Q\ Q), Q\ Q是过程噪声的协方差, C\ C为测量矩阵, Z\ Z为实际测量值矩阵,同样对于恒速运动模型,我们可以将 B\ B ·  uk\ u_{k}忽略。
    4. 特别注意,过程噪声协方差矩阵获取方式参考(1),论文中用的过程噪声协方差矩阵,值为0.01的7*7方阵,并且没有考虑到采样时间问题,直接考虑时间为等值分布。

    3D-IoU ( Interserction over Union)

    从1D-IoU到2D-IoU推导

    匈牙利算法(Hungarian)

    匹配前后帧的对象,中心思想为二分图查找 实现最大匹配数

    3D-MOT

    中心思想就是使用每次检测结果的去估计

    展开全文
  • 一种基于Lidar点云数据的矢量采集方法,梁静,邓喀中,本文提出并实现一种基于Lidar点云数据的矢量采集方法,首先推导出由二维的屏幕坐标反算到三维空间中点云坐标的公式,接着提出一种�
  • 使用Adaboost的LiDAR点云中的地面目标检测
  • 机载LiDAR点云滤波是点云数据处理中的关键步骤, 大量国内外专家学者对点云滤波算法进行了针对性的研究。近年来滤波算法发展迅速, 不断提出各种具有新的理论背景的滤波算法。因此, 急需对现有的各种滤波算法进行更为...
  • 一种机载LiDAR和车载LiDAR点云的自动配准方法,张靖,沈欣,机载激光扫描(ALS)和车载激光扫描(MLS)是目前采集城区三维数据的重要手段。由于两者工作方式的局限性,都不能完整获取目标顶面
  • 针对经典的基于同名点状特征匹配的LiDAR点云配准算法存在计算量大,点状特征提取精度低,以及基于七参数转换模型的LiDAR点云配准算法中方程线性化过程对配准精度影响较大的特点,提出了以线状特征作为LiDAR点云配准...
  • lidar点云边缘线提取

    2015-04-15 09:54:07
    基于坡度和聚类的算法,提取lidar点云的地物边缘线。最终得到地物的轮廓
  • 利用机载LiDAR点云数据分割建筑物屋顶的新方法
  • 机载LiDAR点云数据滤波是获取高精度数字高程模型的关键,也是目前LiDAR点云数据处理领域研究的重点和难点之一。提出了基于渐进三角网的机载LiDAR点云数据滤波方法,首先以规则格网和不规则三角网组织数据,采用区域...
  • 机载LiDAR点云冗余数据辨识及消除 ,王丽英,夏玉红,多回波激光雷达点云的冗余数据或源于航带重叠区的重复观测,或源于多次回波间的重复记录。两者均将增加数据量、降低数据处理效率
  • 车载LiDAR点云中建筑物立面自动分割 论文,希望对大家有所帮助
  • 提出了利用机载LiDAR点云数据进行复杂平面建筑物重建的方法。首先,将提取出的建筑物点云聚类到不同的平面点集;然后,对各个平面点集进行平面拟合,采用平面相交确定平面边界,并解算出各平面边界角点的三维坐标,...
  • 机载lidar点云数据的DSM、生产技术研究应用论文,讲述机载lidar数据生产的一般过程
  • 机载 LiDAR 点云和倾斜摄影影像数据融合处理技术流程
  • LiDAR点云辅助的高分辨率卫星影像建筑物地面阴影提取研究,颜宇阳,乔刚,随着遥感影像分辨率的提高,城市建筑物阴影对遥感影像的处理与分析产生很大的影响。本文研究基于LiDAR点云数据及高分辨率卫星遥感�
  • LIDAR 点云三维显示

    2012-06-02 15:09:33
    基于OPENL的LIDAR点云显示,C++
  • 系统探讨基于平面特征约束的地面LiDAR点云的高精度融合问题,引入单位四元数作为空间旋转变换的描述算子,给出了三维空间中平面特征的四参数表达方法,在确保数学表达形式唯一的基础上实现对基于平面特征约束的空间相似...
  • LiDAR点云提取植被

    2011-04-28 21:55:57
    LiDAR点云数据与影像数据融合,自动提取植被,这是IEEE上面的文章,写的很好
  • 城区LiDAR点云数据的树木提取
  • 提出了一种基于机栽LiDAR点云数据的电力线提取方法。首先在进行LiDAR数据滤波的基础上,分离地面点与非地面点;然后针对非地面点采取一种基于角度的滤波方法,分离非地面点中的植被点与电力线点,对电力线点,采用二...
  • 综述 自动驾驶中的LiDAR点云深度学习 《Deep Learning for LiDAR Point Clouds in Autonomous Driving: A Review》 自主驾驶中的LiDAR点云深度学习技术 作者 | Ying Li, Lingfei Ma, Zilong Zhong, Fei Liu, ...

    中科院模式识别国家重点实验室在读博士生刘永成:深度学习在3D点云处理中的探索

     

     

    陈亮—深度学习点云

     

     

     

    综述   自动驾驶中的LiDAR点云深度学习

     

    《Deep Learning for LiDAR Point Clouds in Autonomous Driving: A Review》

        自主驾驶中的LiDAR点云深度学习技术

    作者 | Ying Li, Lingfei Ma, Zilong Zhong, Fei Liu, Dongpu Cao, Jonathan Li, Michael A. Chapman

    单位 | 滑铁卢大学;中山大学;赛灵思电子科技;瑞尔森大学

     

    在这篇文章中,我们对应用于LiDAR点云的现有引人注目的深度学习架构进行了系统回顾,详细介绍了自主驾驶中的特定任务,如分割、检测和分类。

    本综述总结了近五年来140多个关键性的贡献,包括里程碑式的3D深度架构,在3D语义分割、目标检测和分类方面的显著深度学习应用;具体的数据集、评估指标以及最新的性能状况。最后,我们总结了技术挑战和未来的研究方向。

     

     

     

     

     

     

     

    展开全文
  • 分析了当前点云滤波算法和机载LiDAR数据获取的特点,提出了影像分类信息辅助的机载LiDAR点云自动分类滤波算法。通过对植被覆盖的山区和建筑物密集的城区点云数据进行滤波实验,获得了区域内点云数据的准确分类信息,...
  • 提出了一种建筑物LiDAR点云的屋顶边界提取方法。首先构建了离散的建筑物屋顶LiDAR点的 TIN模型,在TIN模型中根据点的空间几何关系,过滤整个三角网的边界线,从而过滤出初始边界点。在初始边界点构成的边界中,过滤...
  • 基于此,利用三维激光扫描仪获得毛竹冠层的LiDAR点云数据,尝试通过点云密度来估算其蓄积量。研究结果表明:毛竹冠层蓄积量与其竹竿、竹枝的点云密度之间存在一定的数学模型;通过样本检验,毛竹冠层内部竹竿与枝条的模型...
  • 点云数据滤波是机载激光雷达(LiDAR)数据处理研究中很重要的问题之一。提出了一种基于区域预测的LiDAR 点云数据形态学滤波算法,该算法由点云数据建立规则格网、去除粗差点,对实验区域进行分块,然后使用各个分块...
  • 在回顾现有机载LiDAR点云数据滤波算法的基础上,引入统计学偏度与峰度的概念,提出了一种新的基于偏度平衡的点云滤波算法,并重点对算法性能展开深入分析。通过对比实验得出结论:与传统滤波方法相比,该算法完全...
  • 在回顾和总结已有滤波算法的基础上,将统计学中偏度与峰度的概念引入到算法中,提出了一种新的基于偏度平衡的地面点与非地面点非监督分类方法,利用统计矩原理从LiDAR点云数据生成的DSM中有效地提取DTM。该方法区别...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 795
精华内容 318
关键字:

lidar点云