精华内容
下载资源
问答
  • 经过一周的综述撰写,深感点云算法应用之浩瀚,只能仰仗前辈们的文章作一些整理: 点云硬件: 点云获取技术可分为接触式扫描仪、激光雷达、结构光、三角测距(Triangulation)、以及立体视觉等多种。最近二十...

    经过一周的综述撰写,深感点云算法应用之浩瀚,只能仰仗前辈们的文章作一些整理:

     

    点云硬件:

     

    点云获取技术可分为接触式扫描仪、激光雷达、结构光、三角测距(Triangulation)、以及立体视觉等多种。最近二十年,点云获取设备有突飞猛进发展。

    经过20多年的发展,三维激光扫描硬件在稳定性、精度、易操作性等方面取得了长足的进步,尤其在机载/车载/地面三维激光扫描方面进展显著,其中具有代表性的三维激光扫描硬件研制厂商包括:Riegl、Leica、Optech、Velodyne、北科测绘、海达数云等。此外还有美国NASA的ICESat和中国资源三号02星搭载的激光雷达。

    点云软件:

    目前,工业界和学术界已经开发了多种针对点云处理的商用软件和开源软件。商业化的软件主要有TerraSolid公司的TerraSolid基于Microstation平台开发,功能强大)、Trimble公司的Realworks、Leica公司的Cyclone、Bentley公司的Pointtools、Orbit GT公司的Orbit Mobile Mapping等,以及国内科研院所和公司开发的一些工具软件,如武汉天擎的LiDAR Suite、西安煤航的LiDAR-DP以及北京数字绿土的LiDAR 360等。其重点主要集中在点云数据的管理、面向DEM生产的滤波[1]、三维建筑物提取及重建[2]、森林垂直结果参数提取[3]等方面。

     

    此外,还有一些开源、自由的点云数据处理软件,包括以下几款:

    1. Lastools:国际知名度高,C++编写,分模块,部分模块开源,底层IO库,压缩库都开源。
    2. OPALS:维也纳技术大学摄影测量研究组开发的软件,学界最好。同样是底层库+功能模块的结构,可支持几乎任何一种激光雷达数据,处理效率很高。支持C++/Python二次开发。
    3. BCAL LiDAR tools:一个ENVI插件,支持LiDAR格式点云的可视化、处理,IDL编写。
    4. CloudCompare:C ++开发,依赖于QT和OPENGL。支持基于插件的扩展机制。可拔插操作,可二次开发与源程序互不影响。富有活力,经常更新。
    5. FUSION:开源软件,功能很多,在forestry和ecology学界比较有名,可以计算多种LiDAR metrics。

    相对三维激光扫描硬件设备的快速发展而言,三维点云的智能化处理发展较为落后,点云处理的智能化水平、软件界面友好性、专业化应用数据接口方面还有待提高。

     

    点云算法:

    点云处理可以分为低中高三个层次。低层次处理主要包括滤波以及关键点的检测;中层次处理包括点云的特征描述和分割、分类;高层次处理有配准、SLAM图优化、三维重建等。与传统的测量方式相比,三维激光扫描数据采集速度快、采样频率高,但也导致点云数据具有高冗余、误差分布非线性、不完整等特点,给海量三维点云的智能化处理带来了极大的困难。

    滤波:

    常用的滤波方法主要有直通滤波、体素法滤波、统计滤波、半径滤波、条件滤波、双边滤波、高斯滤波、随机采样一致性滤波以及基于频率的滤波。

    除了以上比较常见的滤波算法,从LiDAR点云中去除地物点而保留地形点是点云滤波的一个重要环节。发展至今,算法可以归为以下几大类:

    ⑴布料模拟滤波

    布料模拟滤波(Cloth Simulation Filtering,CSF)是一种物理模拟算法。该算法先将地表点云翻转,然后让一块由格网构成的虚拟布料放置于翻转后的点云表面最高处,使其自由落下,布料节点在重力和邻近节点相互作用力的影响下会产生位移,会贴附于地形表面上。运算完成后,当布料上某节点的高程小于或等于对应点的高程,则将用点云的高程为该节点赋值,并将其标记为不可移动点。最后,计算密集匹配点云与布料节点的高差,大于阈值的被视为非地面点高差,反之则被视为地面点[5-6]

     

     

     

    ⑵基于坡度的滤波算法

    Vosselman [7]提出地面点间坡度值较小,计算各个点与周围邻近点间的坡度值,根据阈值可以判断是否为地面点;Sithole[8]坡度阈值不再是固定常量,根据地形坡度的变化而变化;张皓[9]等采用坡度、坡度增量、最小坡度、最大坡度四个参数共同进行滤波判断。

    问题:计算量大、占内存;依赖阈值。

    ⑶基于形态学的滤波算法

    形态学滤波原理:非地面点在形态学开运算前后高程变化较大,而地面点在形态学开运算前后高程变化小,通过设定阈值可将非地面点剔除(形态学腐蚀再膨胀)。

    关键在于滤波窗口的选择,Zhang[10]提出经典的渐进式形态学滤波,窗口有小变大,对应不同的高度阈值;此后学者在该方法基础上进行改进,Hui[11]等结合克里金插值计算各层级局部区域的地形起伏度,以此为滤波准则进行优化。

    问题:滤波窗口不好选取,渐进变化窗口效果不错,但大窗口易将地形起伏点误判为地物点。

    ⑷基于曲面拟合的滤波算法

    原理:通常采用一定的插值拟合方法建立一个粗糙地形曲面,设定滤波准则,如点到曲面的距离,将不满足条件的点逐步剔除。持续迭代,直到所有的地形曲面的精度达到所需的分辨率。

    Kraus和Pfeifer[12]采用线性预测的方法,设定权重函数,在森林区域效果良好;Mongus和Zalik[13]提出了一种无参数的多层级渐进加密点云滤波法;Hu[14]等同样采用TPS插值法,但在各层级进行拟合曲面时,计算各层级局部区域的弯曲能量,实现滤波阈值的自动计算。

    优缺点:不需要过多的参数设置,自适应能力强,但多层级迭代,每一层级的滤波结果都会受到上一层的影响,初始地面不准确,就会出现误差的传递与累积。内插方法也有很大影响。

    ⑸基于不规则三角网的滤波算法

    原理:利用TIN模型中的地物临近点云高程突变关系,研究利用高差临界值条件和满足该条件的临近点数量等参数来过滤地物点。

    Axelsson[15]提出经典的渐进加密不规则三角网(PTIND)滤波算法,简称PTD算法:首先获取地面种子点,建TIN并进行迭代加密。在每次迭代过程中,都对其余各点到所在三角形的反复角和反复距离进行阈值判断,满足条件的点加入TIN,迭代至无点。Zhang和Lin[16]将光滑约束分割法与PTD方法相结合,减少地形凸起区域的细节误差。隋立春[17]等首先对各个格网内的点云按升序进行排序,然后按照排序顺序再对TIN进行加密,有效减小Ⅱ类误差;吴芳等[18]在选择地面种子点之前首先去除非地面点的影响,保证契合原有地形。

    渐进加密不规则三角网算法近年来表现最为稳健。在复杂地形中效果良好,误差低;但处理时间稍长,初始TIN对后续滤波影响很大;PTD算法对低位噪声敏感,极易将低位噪声点或低势地物点误判为地面点。

    ⑹基于分割的滤波算法

    通常包含两步,一是采取某种分割方法对点云进行分割,二是基于分割结果按照某种设定的规则进行点云滤波。

    点云聚类分割的方法有很多:扫描线、Mean Shift分割法、区域生长法、、随机抽样一致等。滤波判断的标准大多为地面点聚类区域低于地物点聚类区域。Lin和Zhang[19]首先采用区域生长法将点云分割成不同的部分,再设定规则选择地面种子点,建TIN,PTD算法迭代;Tovari和Pfeifer[20]首先对点云进行分割,对分割后的每一部分计算残差值,并根据残差值对属于同一部分的点云设置相同的权重,再按照Kraus和Pfeifer提的方法进行迭代滤波。

    优缺点:能获得更好的点云滤波效果,原因在于点云聚类分割,点云块能够提供更多的语义信息,更有利于后续的滤波判断;分割后的点云能准确地到达地形断裂线或者高程跳跃边缘。但过分依赖聚类分割的结果。

    ⑺基于机器学习的滤波算法

           基于机器学习的滤波算法将点云滤波视为二分类问题。采用某种机器学习算法,如条件随机场、支持向量机、Adaboost等对训练样本进行训练获取训练模型,然后采用此训练模型对点云进行0(地面点),1(非地面点)标记。

    Lu等[21]建立了一种基于离散和连续隐含随机变量的条件随机场模型,以区分地面点和非地面点;Jahromi等[22]提出了一种基于人工神经网络(ANN)的算法:分别采用半自动化获取训练样本和人工获取训练样本两种策略。Hu和Yuan[23]采用卷积神经网络(CNN)通过对点云进行深度学习实现滤波,该方法将点云滤波问题转化为图像的分类问题,通过对1.728*10的7次方个标记的点云进行训练学习,可以获得1.5*10的八次方个参数的深度卷积神经网络模型,现有滤波算法中精度最高。

    缺点:需要大量的标记点云作为训练样本,耗费大量人力,占用大量计算机资源,耗时;训练样本要求覆盖所有地形特征,很难实现。

    ⑻基于伪扫描线的滤波算法

    伪扫描线:指将水平面上二维离散分布的激光点重新组织成一堆线状连续分布点序列的一种数据结构。基本思想:两点之间的高度差是由自然地形的起伏和地物的高度共同引起的。若两个邻近点之间的高度差越大,那么这个高度差是由自然地形引起的可能性就越小,更有可能是较高点位于地物上而较低点位于地面上。

    优点:算法简单,有效减少计算量并且保证了准确性,同时只需两个滤波参数,较容易实现自动化;总能保证每个滤波窗口都包含有地面点,准确地提取出地形点;在平坦区域,效果非常好,在地形陡峭地区,误差控制在较小范围。

    缺点:当地面点较少的时候,这类方法会失效;滤波窗口大小的选取还不能完全自动化,尤其在高程变化剧烈的区域和城市地区。

    ⑼基于多分辨率方向预测的滤波算法

    方向预测法的思想:对于某一距离范围,若当前点与所有方向预测值的差值均大于该距离条件下的最大高差限差,则该点为地物点,否则为地面点。

    优缺点:此算法可以实现复杂尺寸的地物目标的剔除处理,由于数据集再数据量上的减少,地面点提取的效率有很大提高。对于附属在斜坡上的建筑物会出现滤除不完全的情况,需要结合航片等辅助数据源来提高滤波精度。多分辨率平滑处理可以得到格网数据集,但格网之间存在缝隙,降低了精度,需要利用点云数据和格网数据集进一步做点云滤波处理。

    小结

    总体而言,在训练样本足够多的情况下基于深度学习的点云滤波算法能获得最好的滤波效果,但其较为复杂的样本标记和较长的处理时间会限制算法进一步发展;相较而言,基于分割的滤波算法因为能获得更多聚类后的语义信息可以获得更高的滤波精度,此外渐进迭代方式的算法也有较好的结果。

    关键点\特征线提取

    点云数据的几何特征主要是指对反映被测物体三维形态和纹理特征有关键性影响的点、线、面。不同的对象需要的特征提取方式不同,即便是同一对象也需要依照不同需求提取不同的特征。

    在点云特征提取方式上,现有算法可以分为基于全局特征的方法和基于局部特征的方法两类,全局特征利用点云上所有点的信息构建特征描述子。然而由于复杂场景下的物体遮挡、数据分辨率变化、噪声干扰、背景影响以及视点变化等,使得获取的点云具有显著的多样性。这些多样性使得局部特征比全局特征更加胜任现实世界中的点云表示。局部特征提取通常包括关键点检测和局部特征描述两个步骤,其构成了三维模型重建与目标识别的基础和关键。

    本节主要阐述关键点和特征线的提取算法。

    3.2.1 点云的关键点提取算法

    点是三维点云数据中最基本的几何形状的特征基元,将三维模型模型表面具有代表性和描述性的点集定义为特征点,例如边界点、尖锐点,以及相邻曲面的公共点。关键点的数量相比于原始点云或图像的数据量减小很多,与局部特征描述子结合在一起,组成关键点描述子,常用来表示原始数据,而且不失代表性和描述性。

    ISS算法(Intrinsic Shape Signatures

    利用协方差矩阵建立模型:把pi和周围点pj的坐标相减:本质上这生成了许多从pi->pj的向量,理想情况下pi的法线应该是垂直于这些向量的。利用奇异值分解求这些向量的空间,拟合出一个尽可能垂直的向量,作为法线的估计。

    利用特征值之间关系来形容该点的特征程度。显然这种情况下的特征值是有几何意义的,特征值的大小实际上是椭球轴的长度。椭球的的形态则是对邻近点分布状态的抽象总结。 试想,如果临近点沿某个方向分布致密则该方向会作为椭球的第一主方向,稀疏的方向则是第二主方向,法线方向当然是极度稀疏(只有一层),那么则作为第三主方向。如果某个点恰好处于角点,则第一主特征值,第二主特征值,第三主特征值大小相差不会太大。如果点云沿着某方向致密,而垂直方向系数则有可能是边界。总而言之,这种局部坐标系建模分析的方法是基于特征值分析的特征点提取。

    Trajkovic关键点检测算法

    角点的一个重要特征就是法线方向和周围的点存在不同,而此算法的思想就是和相邻点的法线方向进行对比,判定法线方向差异的阈值,最终决定某点是否是角点。并且需要注意的是,本方法所针对的点云应该只是有序点云。本方法的优点是快,缺点是对噪声敏感。

    3DHarris算法

    在二维中是取一个窗口,然后移动窗口:

    1.两个特征值都很大,则为角点(两个响应方向)。

    2.一个特征值很大,一个很小,则为边缘(只有一个响应方向)。

    3.两个特征值都小,则为平原地区(响应都很微弱)。

    在点云中是建立一个方块体,以体内数量变化确定角点。如果在点云中存在一点p:

    1、在p上建立一个局部坐标系:z方向是法线方向,x,y方向和z垂直。

    2、在p上建立一个小正方体。

    3、假设点云的密度是相同的,点云是一层蒙皮,不是实心的。

    a、如果小正方体沿z方向移动,那小正方体里的点云数量应该不变。

    b、如果小正方体位于边缘上,则沿边缘移动,点云数量几乎不变,沿垂直边缘方向移动,点云数量改变。

    c、如果小正方体位于角点上,则两个方向都会大幅改变点云数量。

    NARF算法

    NARF 全称 normal aligned radial feature(法线对齐的径向特征) 。是一种3D特征点检测和描述算法。能提取到 borders points 和其对应的 shadow points,提取到的特征点都是位于物体的外轮廓(边缘)上,更加具有稳定性和可重复性。对特征点Normal的估计只使用共面点,因而对Normal的估计更加稳定。所有操作都是基于2D的range image,计算量相比于直接操作点云要小。

    对点云而言,场景的边缘代表前景物体和背景物体的分界线。所以,点云的边缘又分为三种:前景边缘,背景边缘,阴影边缘。三维点云的边缘有个很重要的特征,就是点a 和点b 如果在 rang Image 上是相邻的,然而在三维距离上却很远,那么多半这里就有边缘。

    1.这个点在某个平面上,边长为 s 的方窗没有涉及到边缘。

    2.这个点恰好在某条边缘上,边长 s 的方窗一半在边缘左边,一半在右边。

    3.这个点恰好处于某个角点上,边长 s 的方窗可能只有 1/4 与点处于同一个平面。

    将该点与不同点距离进行排序,得到一系列的距离;若这个数列存在某个阶跃跳动(可能会形成类似阶跃信号),那么发生阶跃的地方应该是有边缘存在。

    SIFT3D算法

    尺度不变特征转换(Scale-invariant feature transform,SIFT)David Lowe1999年发表,2004年总结完善。该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale orientation 的描述子得到特征并进行图像特征点匹配。

    首先构建尺度空间,目的是为了模拟图像数据的多尺度特征;为了寻找尺度空间的极值点,每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。一个点如果在尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点;然后去除不好的特征点:本质上要去掉尺度空间局部曲率非常不对称的像素;上一步中确定了每幅图中的特征点,为每个特征点计算一个方向,依照这个方向做进一步的计算, 利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

    3.2.2 点云的特征线提取算法

    在特征线提取方面,大部分学者主要针对网格模型进行相关特征线提取方法的研究,对点云模型的特征线提取研究相对而言较少,主要原因在于点云数据量大,本身没有自然拓扑连接关系,而且还可能存在噪声、数据缺失等问题,所以在点云数据上提取特征线比较困难。但是,利用点云数据提取特征线,由于不需要重建网格数据,具有所需时间少,而且数据容易获取的优势。

    目前,基于点云模型的特征线提取的方法可以分为基于几何特征、基于协方差分析和基于投影映射的三类方法。

    ⑴基于几何特征的方法

    此方法是利用点云的几何信息,比如法向量、曲率、Voronoi图等来提取特征曲线。Demarsin[1]等首先利用法向量估计的而信息对点云数据进行分割,对于每个分割后的区域内的点集,利用最小生成树的算法进行特征曲线的提取。Yang B[2]等提出的方法首先将根据曲率选择视觉突出点进行聚类,并未每个点赋予权重,然后提出描述点云形状特征的波峰线。刘倩[3]等提出的方法在高斯映射的基础上,对曲率值进行分析,主要是用来提取模型中较为尖锐部分的特征曲线,对于模型中的一些细微特征没有办法识别出。Merigot[4]等通过计算本地 Voronoi 图获得邻域信息,然后计算曲率,但是 Voronoi 图容易受到噪声点的影响。

    ⑵基于协方差分析的方法

    基于协方差分析的方法是根据协方差矩阵的特征值,通过对特征值进行计算分析,可以用来表示模型局部曲面的弯曲程度。Gumhold等[5]对局部邻域构建协方差矩阵,计算得到特征值,根据其比例关系,将特征点分为边界点,棱点,角点,构建最小生成树,提取出特征曲线。上述方法需要高质量的点云,而且对细微特征不敏感。Nie J[6-7]等首先利用 PCA 计算曲面变化度,并根据符号曲面变化度绝对值识别潜在特征点,对其进行分割, 然后根据曲面变化度与设置的距离权重不断将边界点进行细化,最终采用最小生成树的算法将特征点进行连接,得到特征曲线。但该方法随着噪声程度增加,特征线易出现断裂和缺损。

    ⑶基于投影映射的方法

    基于投影映射的方法是经过拟合得到模型的局部曲面,并将特征点投影在该曲面上。Daniels[8]等利用鲁棒移动最小二乘法,拟合每个点邻域的曲面,再将特征点投影到不同曲面的交线上,以提取特征线。但是因为该方法是在移动最小二乘的基础上实现的,算法运行的时间过长,代价略高。庞旭芳[9]等通过拟合局部二次曲面计算曲率,然后找到与特征点距离最短的潜在特征线,并把特征点投影在该条线上,得到增强后的特征点。这种方法可以提取到模型上平缓和细微的特征,但是最终得到的特征曲线中有部分特征线之间有裂缝。

     

    点云特征描述

    一个良好的特征描述子应能包含所在局部表面的主要形状信息以提供足量的鉴别力。此外,一个良好的特征描述子还应对噪声、遮挡、背景干扰、点密度变化以及视点变化等稳健。 现有的局部特征描述算法可以分为基于点特性、 基于直方图以及基于变换的算法三类。

    3.3.1 基于点特性的方法

    这类方法直接采用关键点局部邻域内部分或全部点上的几何属性集合对其局部邻域进行描述[45]。

    Stein和Medioni [1]采用关键点的测地邻域点法向量分布构建splash特征描述子。给定关键点p,首先采用测地半径r获得网格上的一个环状切线,进而采用点p处的曲面切平面及法向量n构建一个局部参考坐标框架(Local Reference Frame,LRF)。采用该LRF,将点p的法向量与环状切线上点的法向量的关系(即角度距离)采用一个三维矢量进行表示。接着,采用直线段对该三维曲线进行拟合,并以三维直线段的曲率和扭转角(torsion angle)构建特征描述子。实验结果表明,该算法对噪声稳健。

    Chua和Jarvis[2]提出了point signature特征描述子。Sun和Abidi[3]受人类指纹的启发,提出了一种 point’s fingerprint 特征描述子。给定关键点p,首先以与点 p的测地距离相同的点构成一个测地圆(geodesic circle),采用一系列不同的测地距离从而获得一个测地圆集合。进而采用点p的法向量和切平面构建一个LRF,并将这一系列测地圆投影到切平面上以获得一组二维等值线。采用这些二维等值线以及测地圆上的法向量和半径变化量等构成特征描述子。Sun和Abidi认为该算法优于 point signature 和 spin image 特征,且其计算量相对较小。

    Malassiotis和Strintzis [4]通过对关键点p的邻域点散布矩阵进行特征值分解从而构建一个LRF,然后在z轴方向与点p距离为d的位置放置一个虚拟针孔相机。该相机朝向点p,且该相机坐标系的x轴和y轴分别与点p处局部参考坐标系的x轴和y轴对齐。进而将局部邻域点投影到虚拟相机的成像平面并记录这些点到成像平面的距离从而获得 snapshot 特征描述子。snapshot 特征描述子对自遮挡稳健且易于计算,其获得了比 spin image更好的成对点云配准结果。类似的,文献[5]首先定义一个LRF并采用一个规则的栅格对局部表面进行拟合,并采用局部表面在该栅格上的深度值作为局部特征描述子。最后,采用主成分分析(Principle Component Analysis,PCA)对该特征描述子做进一步压缩。

    Castellani等[6]通过顺时针地将关键点p的一环(1-ring)邻域点连接起来,接着将二环及三环邻域点连接,不断重复该过程直到测地半径达到阈值r为止,从而获得关键点p周围的一个顺时针回形线。在该螺旋线上提取采样点的显著级别、最大曲率、最小曲率以及表面法向量变化量等属性,进而采用离散时间隐马尔科夫模型(Hidden Markov Model, HMM) 记录该螺旋线上的信息,从而获得 HMM 特征描述子。该 HMM 描述子对旋转、非均匀采样以及网格分辨率变化等十分稳健。实验结果表明其匹配性能优于spin image和3D shapecontext 特征描述子。

    Steder 等[7, 8]首先将关键点p的邻域表面与该点的法向量对齐,然后采用一个星状模式图(star pattern)放置到该对齐的表面上。该星状模式图的每个束线即对应于Normal Aligned Radial Feature(NARF)特征描述子的一个值。NARF描述子记录了每个束线上的点变化量。为使得该特征描述子具有对旋转的不变性,该算法从特征描述子中提取一个唯一确定的方向并依据该方向对特征描述子进行移位操作。该 NARF 特征描述子的特征匹配性能优于spin image 特征描述子。

    3.3.2 基于直方图的方法

    这类方法首先利用点云的某些信息(如点坐标、几何属性)定义直方图的一个或多个维度,然后采用邻域点的几何或拓扑测量值(如点数、 网格面积)对直方图中的相应单元格进行累加从而获得直方图统计以实现对局部表面的描述[9]。这类方法可进一步细分为基于空间分布直方图、 基于几何属性直方图以及基于方向梯度直方图的方法。

    基于空间分布直方图的方法

    这类方法依据局部邻域点的空间分布(如点坐标)获取直方图统计以实现局部表面描述。 这类方法首先在关键点上定义一个局部参考坐标框架或参考坐标轴,然后在该坐标系下将三维邻域空间划分成多个单元格,通过统计每个单元格上的空间分布测量值(如点数、网格面积)获得特征描述子。这类算法主要需解决两个问题,一是如何构建 LRF,二是如何对邻域空间进行划分。

    spin image特征描述子对刚性变换、 背景干扰以及遮挡稳健[10],且在点云配准、三维目标识别以及三维模型重建等多个场合得到了广泛应用。spin image已成为了三维局部特征描述子评估的事实基准[11-15]。但是,spin image依然存在许多缺陷:首先,spin image 特征对数据分辨率变化和非均匀采样敏感;其次,由于该特征的计算过程需要将三维点云投影到二维空间,因而维度信息的丢失使得其鉴别力有限。后续有大量算法对 spin image 特征描述子的各个方面进行改进,典型例子如基于面的 spin image[16]spin image signature [17] 、多分辨率 spin image[18]、球形 spin image [19]、尺度不变 spin image [20]、以及颜色 spin image [21]

    Frome 等[22]将二维 shape context 特征描述子扩展到三维点云,从而获得三维形状上下文(3D Shape Context, 3DSC)特征描述子。该算法采用关键点 p 的法向量 n 作为局部参考坐标轴,并将球形邻域空间划分成一系列单元格。为获得对旋转的不变性, Tombari 等[23]对 3DSC 进行了改进,通过给每个关键点赋予一个可重复且唯一确定的 LRF 以获得单值形状上下文(Unique Shape Context, USC) 特征描述子。 实验结果表明, 相比于 3DSC, USC 对存储的要求显著降低,且特征匹配的性能有所提高。此外,Sukno 等[24]亦提出一种对水平面旋转具有不变性的非对称模式形状上下文(Asymmetry Patterns Shape Context,APSC)。实验结果表明 APSC 获得了与 3DSC 相当的性能。对二维 shape context的另一种改进是内蕴形状上下文(Intrinsic Shape Context, ISC)特征描述子, 该描述子具有对等距形变的不变性。

    Mian 等[25]提出了一种 3D tensor 特征描述子。该算法首先选择一对满足特定几何约束的点构建局部参考坐标系,进而在该坐标系下进行空间三维栅格划分,并计算点云网格与每个栅格单元的相交面积从而得到 3D tensor 特征描述子。由于该算法采用表面面积而非点个数来获得直方图, 因此其对噪声和分辨率变化较为稳健。 实验结果表明该算法优于 spin image,其缺陷之一在于 LRF 的构建过程涉及网格顶点对的组合爆炸问题,因此运算量较大。

    Zhong[26]提出了一种内蕴形状特征(Intrinsic Shape Signature, ISS)描述子。该算法首先对邻域点的协方差矩阵进行特征值分解从而构建 LRF, 进而采用离散球面网格将球形邻域空间划分成均匀分布的栅格。通过统计每个栅格单元内的点密度加权和从而获得 ISS 特征描述子。车辆识别实验结果表明,该算法在存在噪声、遮挡和背景干扰时的性能优于 spin image和3DSC。

    基于几何属性直方图的方法

    这类算法依据关键点局部邻域的几何属性(如法向量及曲率)进行直方图统计从而获得特征描述子。

    Yamany 和 Farag[14]采用单形角近似估计自由形状表面上的曲率,将关键点邻域的单形角累加到一个二维直方图中,从而得到 surface signature 特征描述子。实验结果表明 surface signature 优于splash、 point signature 和 spin image 特征描述子。

    Chen 和 Bhanu[27]通过将关键点邻域的点数累加到一个二维直方图中从而获得 Local Surface Patches(LSP)特征描述子。LSP 特征描述子直方图的一维为邻域点的形状指数值, 另一维为关键点 p 法向量与邻域点法向量的夹角。实验结果表明 LSP 在三维目标识别应用中能获得与 spin image 相当的性能,但 LSP 的计算效率更高。

    Flint 等[28]通过将关键点邻域的点数累加到由表面法向量夹角定义的一维直方图中从而获得 THRIFT 特征描述子。Flint 等在其后续工作[29]中对该算法进行了改进, 改进的算法采用关键点法向量与邻域点法向量的夹角计算加权直方图。 实验结果表明THRIFT 对噪声和点密度变化较稳健。

    Taati等[30]对点云上每个点q的邻域点协方差矩阵进行主成分分析从而获得该点的 LRF 及三个特征值。在此基础上,利用每个点 q 的 LRF 和特征值获得一系列位置属性值、 方向属性值和散布属性值,进而采用特征选择算法从这些属性中选取部分属性,并将关键点 p 的邻域点属性值累加到一个直方图中,从而得到可变维度局部形状描述子(Variable Dimensional Local Shape Descriptor,VD-LSD)。Taati 和 Greenspan[31]亦给出了基于模型几何形状和传感器特性实现最优特征描述子选择的方法。实验结果表明,VD-LSD 在多个数据集上的识别率优于 spin image特征描述子。

    Rusu 等提出了一种用于局部表面描述的 Point Feature Histograms(PFH) 特征描述子。 对于关键点 p 邻域内的一个点对,首先计算其 Darboux 框架,进而采用文献[32]的方法计算由法向量以及点对距离向量等得到的四个测量值。最后,将所有点对的测量值累加到一个长度为16的直方图中,即得到 PFH 特征描述子。 为提高 PFH 的计算效率, Rusu 等[33] 仅将兴趣点与其邻域点之间(而非所有邻域点对) 的四个测量值累加到一个直方图中,从而得到 Simplified Point Feature Histogram(SPFH)。最后将关键点 p 的所有邻域点 SPFH 进行加权求和得到 Fast Point Feature Histograms(FPFH) 特征描述子。 FPFH 保留了 PFH 中的绝大部分鉴别信息,且其计算复杂度明显降低。

    Tombari 等[9]首先为关键点 p 构建一个 LRF, 进而在该坐标系下将球形邻域空间进行栅格化以获得多个三维栅格单元。 在每个栅格单元上, 依据落入该单元的点的法向量与关键点法向量的夹角将这些点累加到一个直方图中。最后,将所有栅格单元内的直方图串联起来以获得总的 Signature of Histograms of Orientations(SHOT)特征。SHOT 特征描述性强,计算效率高,且对噪声稳健。实验结果表明在各种噪声强度下的 SHOT 性能均优于 spin image 及 point signature 特征描述子。然而,该算法对数据分辨率变化较为敏感。 此后,Tombari 等[34]结合形状信息和颜色信息提出了Color-SHOT(CSHOT)特征描述子。 实验结果表明,将颜色(纹理)信息融合到几何特征描述子中有利于进一步提高其性能。

    基于梯度方向直方图的算法

    这类方法依据关键点的邻域点梯度方向构建直方图从而获得特征描述子。

    Hua等[35]将三维点云网格映射到二维规范化域中,并将表面的平均曲率和保角因子投影到一个两通道的形状矢量图像中。对于每个通道,采用与尺度不变特征变换(Scale Invariant Feature Transform, SIFT)类似的方法提取特征描述子。首先将每个二维平面划分成 16个子区域,并在每个子区域中依据梯度方向获得一个八单元的直方图。最后,将两个通道中的所有直方图串联起来便得到最终的描述子。实验结果表明,该特征描述子较为稳健且可良好应用于点云匹配。

    Zaharescu 等[36]首先在点云网格的顶点上定义一个标量函数 f 并计算该函数的梯度 ∇f ,该标量函数可以为曲率、法向量、密度以及纹理(强度)等。进而在每个关键点 p 处计算一个 LRF并将梯度向量投影到该坐标系三个相互正交的平面上,并将每个平面划分成四个子区域。在每个子区域中,依据梯度方向 ∇f 构建一个八单元的直方图。最后,将三个平面上所有子区域中得到的直方图连接起来便得到最终的网格方向梯度直方图(Mesh Histograms of Oriented Gradients,MeshHOG)特征描述子。MeshHOG 的有效性已通过刚性和非刚性物体的特征匹配得到验证。但是,MeshHOG 并不能应用于存在较大形变的物体。

    Hou 和Qin[37]首先在点云网格的每个点上定义一个标量函数 f 并计算其梯度∇f。进而采用极坐标系 [d(q) , θ (q)] 对每个邻域点q进行表示,其中 d(q) 为从点p 到 q 的测地距离,θ (q) 为在局部切平面上从点 q 到 p 的主方向的极坐标角。接着,将该二维参数化平面分成九个子区域,并在每个子区域中依据梯度 ∇f 的方向构建一个八单元的直方图。最后将九个子区域中得到的直方图串联起来便得到了最终的特征描述子。匹配结果表明,该方法能获得比 MeshHOG更高的召回率和精度,且对存在较大等距形变的物体亦能得到较好的结果。

    3.3.3 基于变换的方法

    这类方法首先将点云从空间域变换到其它域(比如谱域),进而采用该变换域中的信息实现对关键点局部邻域的描述。

    Hu 和 Hua[38]首先对局部表面点进行Laplace-Beltrami 变换从而获得局部表面的谱, 进而依据其谱分布构建直方图作为特征描述子。实验结果表明该特征描述子可很好地实现相似形状的匹配。此外,该特征描述子亦对刚性变换、等距形变以及尺度变化等具有不变性。Sun 等[39]提出了一种热核特征(Heat Kernel Signature,HKS)描述子。该算法将网格M当做一个黎曼流形,并将热核 K t (p, q) 限制在时域,即 K t (p, p) 。K t (p, p) 即为所求的 HKS 特征描述子。该特征描述子可看做是多尺度的高斯曲率,其中时间参数 t 给出了尺度信息。 HKS 是三维形状的内蕴属性, 其对等距形变具有较好的不变性。 在后续研究中, Bronstein 和 Kokkinos[40]提出了一种尺度不变 HKS 特征描述子用于非刚性形状检索,Kovnatsky等 [41]提出了一种包含光度信息的 HKS 特征描述子。

    Knopp等[42]将二维图像中的加速稳健特征(Speeded Up Robust Feature,SURF)描述子推广到三维点云领域,得到 3D SURF 描述子。该算法首先将点云体素化以得到三维体图像, 并对该体图像进行Haar小波变换,并采用关键点p邻域的 Haar小波响应获得关键点 p 的局部参考坐标系。接着,将关键点邻域划分成N b × N b × N b个单元,在每个单元中提取向量 v =( ∑ h x ,∑h y ,∑h z ) ,其中h x、h y和h z分别为沿 x、y和z轴的 Haar小波响应。最后,将 N b × N b × N b个单元中的所有向量串联起来以获得 3D SURF 描述子。

     

    综上所述,可得到如下简要结论:

    ①在三大类局部特征描述算法中,基于直方图的方法得到了最广泛地研究。在基于直方图的方法中,基于几何属性直方图和基于梯度方向直方图的方法均依赖于曲面的一阶或者二阶微分,因此这些方法对噪声较为敏感。

    ②为获得对刚性变换的不变性,大部分算法借助于 LRF 构建。这些算法首先在关键点上构建局部参考坐标系,进而将局部邻域点转换到该坐标系下。因此,LRF 的可重复性及稳健性对特征描述子的性能有很大的影响。

    ③为获得对等距形变的不变性,部分算法采用测地距离(或其 k 环近似)代替欧氏距离,另有部分算法则通过将点云变换到某个特定的域中以获得不变性,如 Laplace-Beltrami 谱域或时域。

    ④邻域大小对特征描述子的性能有较大影响。一个大的邻域半径可使特征描述子记录更多的形状信息,但同时也使特征描述子对遮挡和背景干扰更加敏感。部分算法为其特征描述子配置了相应的自适应关键点检测子。但事实上,可将任意两个关键点检测子和局部特征描述子进行搭配以寻找具有最优性能的组合。

    ⑤现有特征描述子难以同时获得高鉴别力、对噪声/数据分辨率/逸出噪声等干扰的强稳健性以及高计算效率。

     

    点云分割与分类

    点云分割与分类识别是三维目标检测的基础,也是目前的研究热点。三维点云分割是分类识别的基础。点云的分割与分类有一定区别,点云分割是根据空间,几何和纹理等特征点进行划分,使同一划分内的点云拥有相似的特征。点云分割的目的是分块,从而便于单独处理。点云的分类是为每个点分配一个语义标记,将点云分类到不同的点云集,同一个点云集具有相似或相同的属性,如法向量、曲率、树木、人等。

    3.4.1 点云分割

    三维点云的分割方法有很多种,一般主要有四种:基于边缘、区域增长、聚类、颜

    色RGB值的分割方法,以下分别介绍。

    基于边缘的分割方法

    Milroy[1]提出了一种新的确定边界方式,即首先确定边界点然后用能量等高线将各适界点连接起来即为边界,其中将正交截面模型中曲率最大值点作为边界点。刘胜兰[2]出了利用三角网格模型中主方向上主曲率为极值的顶点为特征点并且以此为起点做出特征线的提取方法。张强[3]将局部临近点网格化,先将三角面片顶点的法向量调整为同一个方向,点的法向量是用加权平均相邻三角面片的法向量替代的,然后利用平面点云的同向性和共面性对点云数进行分割。龚友平通过估算曲率的极值寻找边界点,把边界点连线从而构建边界。Woo[4]使用八叉树对空间网格进行细分和法矢标准差的提取,实现了三维点云的分割。

    基于边缘的分割方法速度快,对尖锐的边界比较敏感,但确定边界仅使用局部数据,所对于散乱的三维点云不能准确找到其边界,分割结果达不到一定标准。

    基于区域增长的分割方法

    该种分割方法实质是把相同特征的点划分为一个区域,而区域主要通过自上而下、自下而上两种方式不断迭代增长。自上而下方法是先选择种子片面或种子点,并且按一定准则向外延伸,确定邻近点是否在相同面,持续到邻域巧不存在连续点集,形成连接集合。而自下而上方法是先假设所有的点都在同一个面,拟合过程中误差不符合要求时,就把原集合分为两个集合。Kuo[5]等提出的DBRB(Delaunay-based Region-growing Algorithm)算法,该算法同时有Delaunay和区域增长的优点,先利用Delaunay构建三角片,角片为种子,不断扩大,其实质是通过迭代不断扩大三角片区域直到区域的边界。梁学章[6]等提出一种三角网络曲面的区域增长算法,先对点云进行预处理以达到数据精简的目的,然后在点云中选择新的匹配点构成新的三角形并连续更新边界以达到分割区域的不断增长。

    基于区域增长的分割方法对由多项式表达的二次曲面分割更加有效。但在使用基于区域增长的分割方法时,由于需要选择种子点或者种子片面,很难选择合适的种子,并且很难区分光滑边界,而且由于很难选择合适的生长准则,受给定阀值影响大。其中自上而下的方法比较适用规则曲面的区域分割,自上而下的方法适用于数据点较少的。由于三维点云,往往场景很大,比较复杂,所以基于区域增长的分割方法适用情况有限。

    基于聚类的分割方法

    该种分割方法属于多元统计分析,根据样本空间的特征,按照相似性和相似性测量准则对数据进行分类,使得同一类中的点有相同或者近似的属性,不同类别的点的属性不同。基于聚类的分割方法中常用的算法有:k-means算法,k-medoids算法,OPTIC算法,DENCLUE算法,STING算法,WAVE-CLUSTER算法,模糊聚类FCM。郭瑞[7]提出一种基于点的邻域信息(灰度值、邻域均方差、邻域均值、B值、熵值)的FCM分割算法。针对渐进式聚类,时收敛速度加快,抗噪性增强。Jean Koh[8]利用数据点的特征权值构成八维特征向量,其包括:数据点的坐标、法矢量、高斯曲率和平均曲率,利用多层自组织特征映射网络SOFM对八维特征向量来聚类,达到了区域分割的目的。刘雪梅[9]则添加法矢量、平均曲率以及高斯曲率来构成八维向量作为特征向量。

    对于具有明显的曲面类型的数据进行分割,基于聚类的分割方法效果比较好,然而对于复杂环境和结构复杂的物体中,很难直接确定曲面的分类个数和曲面类型。

    基于颜色RGB值的分割方法

    为了丰富分割方法,提高分割品质,万燕[10]等提出了一种基于HSV颜色空间的区域增长算法。该算法先求得区域增长的种子点同时确定分割的阈值,然后利用网格信息找到种子点的邻近点集,最后根据H分量的相似程度分割点云。Zhuo[11]提出了一个无监督分割算法平衡RGB-D图像中颜色和深度特性。输出部分包含可大可小的分割部分正确地表示了实物在场景中的位置,并且时间小于监督分割算法。Steven Hickson[12]提出一种无监督分层的分割算法,该算法对深度和颜色的结合体进行过分割,再用一棵树去合并过分割的区域。该方法准确地分割,并且质量得到一定提高。卢良锋[13]将深度学习和RGB、深度进行有效的结合,该方法提离了物体的识别准确率。

    3.4.2 点云分类

    依据获取特征的方式不同,本文将三维点云分类方法分为三大类:基于点的分类,基于传统机器学习方法的分类和基于深度学习的分类,并对各方法进行了详细地总结。

    基于点的分类方法

    点签名法[14](Point Signature),由 Chua 等人于 1994年提出。该方法根据每个点的球半径邻域与物体的交线 C 所拟合平面的法向量与参考矢量定义旋转角,从而计算签名距离,即每个点的签名,通过匹配签名实现分类。该方法消除了一阶导数的计算过程,但对噪声数据的处理效果较差。也有一些学者利用形状特征对点云进行识别,如旋转图像[15-16]和体素网格[17]。如文献[15]中提出了一种旋转图像法,通过二维数据生成旋转图以表征三维点云,可用于多目标分类但对大范围的遮挡物不能进行有效识别。董[17]等人提出了一种用于激光扫描数据的多目标的层次化提取方法。该算法:利用点云的多种特征,如颜色,激光反射强度,法向量,主方向等生成超级体素,然后利用体素特征快速实现小规模场景中的多目标点云的分割分类,但对于没有树冠的树木以及被树木遮挡的街灯仍出现误识别问题。

    基于传统机器学习的方法

    利用机器学习方法进行点云分类,本质就是借助模型进行特征的自学习和分类,国内外很多学者贡献了很多研究成果。常用的监督学习方法有:随机森林[18],支持向量机(SVM) [19],马尔可夫随机场等。如孙[18]等人提出了一种随机森林的城区机载点云识别方法,结合几何,纹理,空间等特征用于城市地物分类,实验结果表明通过自动筛选特征的方法略优于所有特征分类精度。文献[19]中提出了一种基于特征图像的 SVM建筑物立面的半自动提取方法。该方法利用三维数据生成二维特征图像,再结合支持向量机与二维网格属性对特征图像进行特征提取以达到分类目标。虽然有效降低计算开销,但只能提取一般建筑物,不适用于复杂场景的多目标物提取。

    基于深度学习的分类方法

    尽管以上方法在一定程度上能实现分类任务,但是特征的简单组合,浅层模型很难推广到大型复杂三维场景中。随着以深度学习为代表的人工智能的快速发展,国内外研究者们尝试将深度学习算法用于距离影像的分类。针对原有网格表示方法提取的低级特征表示不足,泛化性能差,无法满足应用需求。Qi[20]等人首次打破传统,设计了一种名为 Point Net 的网络,其基本思想直接对点云进行处理,使用对称函数解决了点云的顺序问题,整合单点特征以形成全局的点签名,能有效处理室内场景中的 3D 物体分类,目标分割和语义场景分割任务。但是 Point Net 不能捕获度量空间点的局部特征,限制了其识别细粒图案的能力和复杂场景的泛化性能。

    为了解决这个问题,设计了一种名为Point Net++[21]的分层神经网络。该网络步骤为:将点云分割成重叠的局部区域,从中分层提取局部几何特征,以形成高层特征。实验结果表明,取得了良好的性能。以上方法均未考虑点云颜色等信息,但 Roman[22]等人提出了一种 Deep Kd- Networks, 该网络可以将数据的颜色、反射光强度、法向量属性作为输入,利用 kd- tree 将点云结构化,学习树中每个节点的权重,在 Model Net数据集的准确率高达 90.6%,但该网络对噪声和旋转敏感,对每个点都需进行上采样或下采样操作,会带来额外的计算开销。基于以上研究进展,Li[23]等人提出了一种简单通用的点云特征学习框架——Point CNN。它利用多层感知机从输入点中学习一种变换阵,将无序点云转换成有序点云,在 Model Net 上准确率为91.7%,但置换矩阵离预想相距甚远,点云的顺序问题仍是一个难题,同时该方法是针对单一点云模型进行分类,因此面向复杂场景的点云数据分类也是亟待解决的难点。

    点云配准

    由于三维扫描设备对物体的视野有一定的局限,或者物体本身的几何形状较为复杂,所以不可能在同一视点上获得物体的所有数据信息。为了获得被测物体的完整点云数据,要将不同视角获得的面点云数据集成起来进行点云配准工作。点云配准的目的是寻找三维刚体变换,使在不同视角下获取的点云数据的三维坐标能够正确匹配和重叠。配准算法可分为成对点云配准和多视点云配准算法两类 [1]

    3.5.1 成对点云配准算法

    成对点云配准算法包含粗配准和精配准两个步骤,其中粗配准可进一步细分为基于关键点匹配的粗配准算法、基于线匹配的粗配准算法以及基于面匹配的粗配准算法三类。上述三类粗配准算法既可单独使用,也可组合使用[2]

    基于关键点匹配的粗配准算法

    这类方法首先在两幅点云上提取一系列关键点,并采用每个关键点上的邻域信息提取局部特征,进而通过特征匹配获得关键点对集合(point correspondences),最后利用该关键点对集合计算点云间的初始变换关系。Chua 和 Jarvis[3]在点云上提取一系列关键点,并采用 point signature 特征对每个关键点的局部邻域进行描述。 首先将一幅点云上的一个特征与另一幅点云上的特征进行匹配以获得一个关键点对,进而找到另外两个满足特定空间约束的关键点对。得到三个关键点对后便可计算两幅点云之间的变换关系。

    Johnson和Hebert[4]采用spin image对关键点局部邻域进行描述,并采用最近邻法获得关键点对。该算法对特征对进行聚类并采用几何一致性算法去除错误的关键点对,最后采用满足几何一致性的关键点对计算两幅点云之间的刚性变换关系。

    Yamany和Farag[5]采用 surface signatures 对关键点局部邻域进行描述,并采用图像模板匹配及欧氏距离计算获得关键点对集合。事实上,每三个关键点对组合均可得到一个刚性变换关系。为此,该算法从关键点对集合中选择一系列满足几何一致性约束的关键点对组合, 并依据组合内点对的空间距离对所有组合进行排序,最后对每个组合得到的刚性变换关系进行验证。

    Rusu等[6]采用 PFH 特征对关键点局部邻域进行描述。匹配时,首先从待匹配点云中选择两个关键点,并分别找到其在库点云中的 k 近邻关键点。通过将待匹配点云上两关键点之间距离与库点云上两候选对应点之间距离最小化以获得精确的对应点。接着,继续从待匹配点云中选择新的关键点并重复上述过程以找到待匹配点云上所有关键点在库点云上的精确对应点。最后采用得到的特征对应点对集合计算刚性变换关系。

    Tombari 等[7]采用SHOT作为局部特征描述子并通过特征匹配获得关键点对集合。 得到关键点对集合后,采用绝对方向(absolute orientation)算法[8]和随机采样一致性(RANSAC)[9]算法计算点云之间的刚性变化关系。

    基于线匹配的粗配准算法

    这类方法首先在点云上提取一系列线条,并利用线条对应关系计算点云之间的变换矩阵。这类方法可进一步细分为基于直线匹配的方法以及基于曲线匹配的方法两类。

    基于直线匹配的方法首先从点云中提取一系列直线段,进而通过直线段匹配计算刚性变换关系。这类算法通常适用于包含较多平面和直线的物体,如建筑物等。Stamos 和 Leordeanu [10]首先从点云中提取一系列平面和直线段,进而利用直线段的长度以及平面面积等信息高效地获得两幅点云间的匹配线段对集合。由于线段端点的位置准确度不高,因此文中只采用线段的位置和方向计算变换关系。理论上只需两对对应线段即可实现点云之间的变换关系计算,因此从匹配线段对集合中可以得到一系列变换关系。最后,以能使得平面数量最大化的变换关系作为两幅点云之间的变换关系。实验结果表明该算法可用于大数据量下的复杂形状点云配准,但该算法对具有对称形状的场景点云配准依然存在困难。

    Chao和Stamos[11]对文献[10]的算法进行了改进,提出了一种更加高效且支持用户交互的算法。该算法通过点云分割和对提取的线段及平面法向量进行聚类以得到每幅点云的三个主方向,从而为每幅点云构建一个局部坐标系。通过将两幅点云的局部坐标系进行对齐从而可快速精确地获得点云间的旋转变换矩阵。进而通过对旋转后的点云直线段进行匹配从而获得候选平移向量,最后采用最近邻分类器对候选平移向量进行聚类,从而将聚类中心作为点云间的平移向量。为了进一步消除对称三维表面可能带来的错误匹配,该算法引入了一个用户交互接口,从而可对拼接结果进行判断并校正。对大场景(建筑物)的配准结果表明该算法可以达到毫米级的配准精度。 该算法的缺陷在于某些场景(比如自然场景) 下提取直线段可能存在困难。

    Vanden Wyngaerd和Van Gool [12]将这类算法进一步推广到基于曲线的情况,从而通过双切线匹配实现自由形态目标点云的配准。双切线是由双切点并集构成的一对曲线,其可在对偶空间中获得。当从对偶空间中获得点云的所有双切线之后,将两幅点云之间的双切线匹配。当得到一对双切线匹配对后,便获得了四个匹配点对(即对应于两个双切线线段的端点)。由这四对匹配点对从而可以计算两幅点云之间的刚性变换关系,并将点云变换到统一坐标系下以获得配准误差,以取得最小误差的刚性变换关系用于点云粗配准。文献[12]认为,相对于基于关键点匹配的算法,此文的算法运算量更小且稳健性更强。其缺陷在于,对于某些形状的物体,其点云上提取的双切点较少,因而难以获得较好的配准结果。

    基于面匹配的粗配准算法

    这类算法通过将两幅点云的表面进行匹配从而实现配准。

    Chung 等[13]采用主成分分析法实现点云粗配准。该算法首先对每幅点云上的点坐标进行主成分分析,从而得到三个主方向。该算法认为,当两幅点云的重叠区域较大时,二者的主方向会比较一致,因此可以通过将主方向对齐来实现点云的粗配准。该算法比基于关键点匹配和线匹配的算法更加快速。但该算法同样存在很大的局限性。首先,点云上必须有较多的点;其次,该算法要求两幅点云有较大的重叠面积;再次,该算法对存在对称表面的点云效果很差。当主成分分析得到的两个特征值相差不大时,主方向的顺序会混淆,从而使得变换矩阵发生错误。

    Chen 等[14]采用 RANSAC 算法实现点云粗配准。该算法首先在一幅点云上随机选择三个点,并计算每两个点之间的距离。然后在另一幅点云上选择满足上述距离约束的三个潜在对应点,从而构成三个点对以得到一个潜在的变换关系。重复上述随机采样过程,从而可以得到一个变换关系集合。最后,以获得点云对应点数最多的变换关系作为两幅点云之间的刚性变换。该算法即使在存在大量逸出点时亦能获得很好的性能。但是该算法只适用于点云中点数较少的情形,否则随机采样的穷举过程会导致运算量急剧增加。文献[15]对该算法做了进一步改进以提高运算效率。

    Brunnstrom 和 Stoddart [16]采用遗传算法寻找对应点对从而实现点云配准。首先,利用点云上点之间的距离和夹角信息定义遗传算法的拟合函数,进而确定遗传算法的交叉概率和突变概率, 并采用遗传算法不断迭代直到满足停止条件为止。遗传算法停止时,使得拟合函数最大化的染色体中包含了所需要的点对应关系。然而,这些点对中包含部分错误点对, 因此需要依据点对质量选择其中的部分点对计算点云之间的刚性变换关系。该算法能获得很好的匹配结果,但是其运算量很大,因而难以应用于对计算时间要求较高的场合。

    Tarel 等[17]首先采用拟合算法获得点云的隐式多项式模型,进而通过多项式模型实现点云配准。该算法不需要计算点匹配或面匹配,因而计算时间较快。但该算法要求两幅点云之间有很高的重合度(通常要求重合度大于 85%),因此算法难以推广到实际应用中。

    成对点云精配准算法

    精配准算法可分为直接配准法以及迭代配准法两类,而目前主流的算法是迭代配准法。

    最经典的精配准算法为 ICP 算法[18],该算法通过最小化点对(亦称为最近点)之间的距离从而实现点云之间的精配准。对第一幅点云中的每一个点均寻找其在第二幅点云中的最近点,从而可获得一个最近点对集合,进而计算点云间的变换关系使得最近点对的平均距离最小。重复上述过程,直到满足收敛条件为止。该算法在存在高斯噪声时亦可以取得很好的性能, 其不足之处在于非重叠区域会对匹配结果带来比较大的影响。此外,当初始配准不准确时,ICP 精配准容易陷入局部极小值[19]。后续有大量算法对 ICP 的各个方面进行了改进,如文献[20–23]对 ICP 的运算速度进行了提升,文献 [24, 25]结合几何或颜色特征提高 ICP 算法精度,文献[26–28]侧重于提高算法对逸出点等干扰的稳健性,文献[26]针对 ICP 算法的精度和稳健性等进行了一系列改进。

    Chen 和 Medioni [29]的算法过程与 ICP 类似,其不同之处在于通过最小化点与面之间的距离实现点云之间的精配准。该算法的最小化优化函数为第一幅点云中的点到第二幅点云上的平面的平均距离。对于第一幅点云中的任一点,首先计算该点的法向量与第二幅点云的交点,进而采用第一幅点云中的点与其在第二幅点云中交点的距离作为点到面之间的距离。该算法对非重叠区域更加稳健,且其达到收敛所需要的迭代次数更少,其缺陷在于点面距离的计算比较耗时。针对该算法的不足之处,后续有不少算法对其进行了改进[ 30, 31]

    Liu[32]将点云精配准的迭代过程建模成一个马尔科夫链,其首先从用于马尔科夫链的 Lyapunov 函数中推导了可用于描述热力学系统成分长拖尾和短拖尾概率分布的熵, 并通过最大化该熵值估计点云间采用最近点准则构建的点对概率。将估计的点对概率嵌入到平均场模拟退火算法中以实现全局最优化,进而采用加权最小二乘法实现变换关系估计。其实验结果表明该算法优于 ICP 算法以及遗传算法,其缺陷在于配准过程耗时过长。

    3.5.2 多视点云配准算法

    多视点云配准算法包含粗配准和精配准两个步骤, 其中粗配准可进一步细分为序贯粗配准算法和同步粗配准算法两类。

    多视点云序贯粗配准算法

    序贯粗配准算法首先将两幅点云配准,进而将第三幅点云与之前已配准的点云进行配准, 重复上述过程直到所有的点云均被配准到一个统一的坐标系下,如文献 [33, 34]。由于这类算法每次只将两幅点云进行处理,因此减少了配准操作所需的内存和计算负担,且每次操作的计算量与待配准的点云总数无关。由于配准误差的不断传播,因此简单的序贯粗配准算法精度较差。

    Turk和Levoy首先对物体自上而下扫描从而得到一个基准点云,该点云包含了物体各个方位角的信息。进而将在各个方位角上扫描得到的点云与该基准点云进行配准,从而实现多视点云的配准。该算法巧妙地将多视点云配准问题转化为成对点云配准问题,但其对点云扫描视点有一定的约束,因而应用范围受限[35]

    Masuda等[36]采用 ICP 算法依次将一幅输入点云与模型点云配准,并依据输入点云上的点到配准后模型点云的误差,将输入点云上的部分点加入到模型点云中,不断重复上述过程从而实现多幅点云的配准。

    多视点云同步粗配准算法

    同步粗配准算法同时实现所有点云之间的配准,从而使得总的误差最小化,并使配准误差均匀分布到各幅点云上,避免了误差的积累。这类算法需要解决两个问题:一是获得点云邻接关系,即一幅点云与哪些点云相邻;二是计算邻接点云间的刚性变换关系。

    Huber和Hebert [37]首先采用基于spin image 特征的成对点云配准算法将所有点云进行配准,从而获得一个模型图。图的顶点为点云,图的边为两个顶点对应的点云间的刚性变换关系。进而在图中计算具有姿态一致性和全局表面一致性的张树,利用该张树便可实现点云的多视配准。文献[38-40]等采用类似的思路,分别采用基于LPHM、EM和SHOT 特征的算法实现两两点云对之间的配准,并构建能获得最大对应点对数(或重叠面积)的张树实现多视点云配准。由于这类算法需要对所有点云对进行配准,时间消耗较大,因而难以实现对大量点云的配准。

    Mian等[41]提出了一种连接图算法用于多视点云粗配准。该算法首先选择一幅点云作为连接图的根节点,并将其它点云与该节点上的点云进行配准,从而将能配准上的点云作为该节点的子节点加入到连接图中。不断重复上述过程, 直到所有点云均已加入到连接图中, 或者没有图像能加入到连接图为止,从而得到最终的连接图。该算法采用tensor 特征实现成对点云的配准, 并对配准进行全局一致性验证。此外,Mian等进一步提出了一种超图算法。该算法首先采用前述连接图算法构建多个子图,最后将子图连接起来构成超图,从而实现多视点云粗配准。该算法的效率优于张树算法。

    Ter Haar和Veltkamp [42] 提出了一种快速的多视点云配准算法。给定一幅点云,首先找到与其对应的左视点云、右视点云以及后视点云。进而对这四幅点云进行验证,通过验证的点云组合便可构成物体的一个非完整模型,并对该模型进行姿态归一化。最后,将得到的多幅非完整模型对齐从而获得完整三维模型。该算法可在无先验知识的情况下快速实现多幅点云的配准,其效率明显优于的张树算法。该算法要求四幅点云构成的组合应能基本覆盖物体的完整表面,否则难以实现精确的配准。此外,该算法要求点云均是在相似的姿态下获得的。

    多视点云精配准算法

    多视精配准算法的任务在于对多视粗配准结果做进一步优化以减少所有点云之间总的配准误差,并将配准误差均匀分布到各幅点云上。

    Stoddart和Hilton[43]将所有点云对应点之间的欧氏距离加权平方和作为优化函数,并采用梯度下降法迭代求解最优的刚性变换关系。该算法将多视点云配准过程类比于多弹簧系统的平衡过程,将两幅点云之间的对应点集当做一个弹簧,采用刚体力学对弹簧系统进行分析, 从而在系统平衡点位置和方向求解过程中实现了点云变换关系最优化。

    Neugebauer [44]将成对点云配准算法扩展到多视点云配准。该算法将所有点云间点到切平面的平均距离作为优化函数,采用最小二乘法对刚性变换关系进行迭代优化,并采用多分辨率点云加速配准过程。在开始迭代时,采用分辨率最低的点云,随着迭代次数的增加, 参与配准的点云分辨率不断提高,从而在保证配准精度的同时提高运算效率。

    Benjemaa和Schmitt [45]将ICP 算法从成对点云配准扩展到多视点云配准,采用单位四元数法实现多视点云的迭代配准。Williams 和 Bennamoun [46]将文献成对点云配准算法扩展到多视点云配准,其基本思路与文献[45]类似,主要区别在于该算法采用正交矩阵而非单位四元数表示旋转矩阵。Nishino和 Ikeuchi[47]采用类似的思路,采用共轭梯度法及M-估计器提高算法效率和稳健性,同时在寻找对应点时加入激光反射强度信息以进一步提高算法精度。

    Masuda[48]采用有向距离场(Signed Distance Field,SDF)表示点云,进而基于SDF采样同时实现多视点云配准和融合。该算法首先将点云融合得到融合形状,进而将点云与融合形状配准。虽然开始时融合形状并不精确,但通过迭代地融合和配准,可使最终的配准结果趋于准确。该算法的优化函数与变换矩阵、融合形状以及权值相关,点云融合通过计算每个采样点上的 SDF 均值实现,点云配准通过寻找使得优化函数最小化的变换矩阵实现。由于每幅点云均与融合形状配准,因此配准过程不会带来误差积累。此外,由于每幅点云均为融合形状的一部分,因此无需考虑点云之间的重叠区域大小。

     

    激光SLAM

    即时定位与地图构建 ( SimultaneousLocalization and Mapping,SLAM) 技术,是指把机器人放在未知的环境中,从一个未知位置开始移动对环境进行增量式地图创建,同时利用创建的地图进行自主定位和导航。SLAM技术可以使机器人实现真正的自主导航。

    SLAM是一个庞大且复杂的工程问题,不同的传感器通常对应着不同的SLAM解决方案,例如,激光传感器对应着激光SLAM,相机类传感器对应着视觉SLAM。通过集成LiDAR扫描仪、IMU(inertial measurement unit)等传感器可在扫描平台移动过程中实时获取位置、姿态信息以及场景的空间信息。基于SLAM技术的激光扫描可以高效完成室内空间或室外小场景的三维点云数据获取。本节主要介绍激光SLAM。

    3.6.1 激光雷达SLAM定位技术

    常见的移动机器人领域定位有位姿跟踪和全局定位两种。位姿跟踪是指机器人的当前位姿根据上一时刻的位姿进行递推计算,要求机器人的初始位姿必须已知。全局定位是指机器人被放在任何环境的任意位置,不必已知初始位姿,根据传感器信息获取机器人在全局坐标系中的位置。

    扫描匹配法

    扫描匹配算法是一种位姿跟踪定位方法。根据是否依赖于扫描的初始估计,分为半自动扫描匹配和自动扫描匹配。半自动扫描匹配在位姿初始估计的基础上迭代地使匹配更准确,但缺点是当初始估计不准或没有初始值时可能会导致匹配失败;自动匹配方法直接求解扫描的位姿,通常匹配的结果精度不高。常用的扫描匹配方法有:迭代最近点( Iterative Closest Points,ICP) 算法,随机抽样一致( Random Sample Consensus,RANSAC) 算法等。

    ICP 算法通过迭代的方式找出两个点集的空间位置变化关系,使对应点对的均方差最小化,实质是一种基于最小二乘法的最优匹配。这种采用最近邻寻找对应点的传统 ICP 方法,存在位姿中旋转估计收敛慢的缺点。后来的研究者不断将其改进,其中 IDC( Iterative Dual Correspondence) 和 MBICP( Metric-Based ICP) 两种改进方法中分别引入新的点匹配策略进行了改进。PLICP ( ICP Based on Point-to-Line metric) 算法利用点到线段匹配的方法改善了迭代效率,但鲁棒性变差,且更容易受到初始位姿误差的影响。郭瑞提出了一种极坐标点匹配 规则 ( ICP Based on Polar Point Matching,PMICP) ,该规则综合考虑了旋转和平移的影响,并通过实验数据验证了该方法相对于传统 ICP 算法及其改进算法的快速性、准确性及鲁棒性,可以确保局部地图紧密一致,但是该方法不能避免匹配误差的累计,所以不能保 证全局地图一致,而且PMICP 算法依赖于扫描间相对位姿的初始估计,仅适用于单步定位,也未考虑环境中的动态变化。因此研究者又提出了从扫描数据中提取的特征完成匹配,即基于几何统计特征的自动扫描匹配方法( Automatic Scan Matching based on Geometric Statistic Features,GSF-ASM) ,该方法不需要位姿的初始估计,而是在迭代过程中逐渐找到好的对应点并逐渐校正位姿估计。此外,通过分割段特征和扫描点特征的匹配过程,过滤掉了环境变化的区域,更适应动态变换的环境。

    随机抽样一致算法通过反复在一组数据中选择随机子集的方法,利用迭代方式估计数学模型的参数,能够有效应对环境中的粗大误差。随机抽样一致算法是一种不确定算法,对参数的选择非常敏感,而且只是有一定的概率得到合理的解,因此为了提高精度需要以增加迭代次数为代价。Yang 等人提出了一种基于多模型的随机抽样一致算法,该算法中将模型分为静态环境模型和动态目标模型等,用于在高动态环境中估计车辆的位置。

    扩展卡尔曼滤波 ( Extended Kalman FilterEKF) 定位

    Smith 等人[1]在 1987 年提出基于卡尔曼滤波( Kalman Filter,KF) 的 SLAM 算法,卡尔曼滤波器是一种通过预测和校正过程对线性高斯系统的状态进行估计的递推算法,这是一种经典的位姿跟踪算法。

    由于卡尔曼滤波只对线性高斯系统有效,应用受到限制,研究者对其改进,提出扩展卡尔曼滤波器定位,应用 EKF 对机器人位置和路标位置进行同时估计,EKF 定位适用于非线性高斯系统。EKF方法将机器人的位姿和环境特征地图用一个高维状态向量表示,对输入和输出方程利用泰勒级数展开形式进行局部线性化,然后对状态向量的均值和最小方差进行估计。EKF 算法能有效处理不确定信息,但在每次迭代过程中计算各个特征间的协方差矩阵,增大了算法复杂度。EKF 方法基于机器人位姿的不确定性为单模高斯分布假设,假设传感器数据在机器人位置上映射为高斯形状的分布,但由于复杂的实际环境无法满足这种强假设,所以仍需要不断的改进。

    另一种基于卡尔曼滤波的优化方法是无损卡尔曼滤波器( Unscented Kalman Filter,UKF) 。UKF通过近似概率来实现非线性滤波,误差比 EKF 更小。UKF 通过无迹变换( Unscented Transformation,UT) 将制定权值范围内的粒子集合带入所采用的非线性函数,进一步得到其统计特性。这样使粒子向后验概率高的区域变动,粒子可以更好的近似状态变量的后验概率密度函数。当计算量在可控的范围内时,使用 UKF 得到的定位结果要比 EKF 得到的定位结果更好。

    Shojaie 等人发现,迭代观测更新过程能有效的减少线性化误差,同时提高估计精度。由此提出了迭代扩展卡尔曼滤波器( Iterated EKF,IEKF) 、迭代无损卡尔曼滤波器 ( Iterated UKF,IUKF) 和迭代Sigma 点卡尔曼滤波器( Iterated Sigma Point Kalman Filter,ISPKF) 。

    Thrun 等人提出一种基于协方差矩阵的逆来改正机器人位姿的方法。信息滤波 ( Information Filtering,IF) 是另一种针对卡尔曼滤波研究的改进。信息滤波是基于信息矩阵和信息向量的表示方法,本质是应用信息矩阵代替协方差矩阵表示不确定性,同时利用信息矩阵的稀疏性进行等时间间隔的执行预测和更新,有效地减少计算量。

    马尔可夫定位

    马尔可夫定位[2]将定位问题视为一个离散的马尔可夫过程,是一种成功的全局定位方法。基于马尔可夫假设,即假设机器人观测独立和运动独立,FOX 等人最先提出了马尔可夫定位方法,计算机器人在所在全局环境的概率分布。马尔可夫过程中的每一个状态对应于机器人的每一个离散化的位姿,优点是能够处理多模和非高斯的概率分布,有效解决位姿跟踪和全局定位问题。马尔可夫定位通用性较强,可用于任何环境的定位,但是其效率较差。根据地图表示方法的不同,马尔可夫定位方法可分为拓扑马尔可夫定位 ( Topological Markov Localization,TML ) 和栅格马尔可夫定位 ( Grid Markov Localization,GML) 。马尔可夫定位方法最早应用在基于拓扑地图的定位中。栅格马尔可夫定位将连续的机器人位姿空间离散化为均匀的栅格,在栅格上完成数值积分。但由于计算量与状态空间的尺寸和分辨率相关,这种方法计算量太大。

    Burgard 使用八叉树获得状态空间的变分辨率表示,使计算量和需要使用的内存空间得到缩减,解决了来自固定分辨率的限制。吴庆祥等对马尔可夫定位进行了仿真研究,使用电子罗盘解决对称环境中的定位问题。Konolige 等人提出基于传感器数据和地图相关性的马 尔可夫定位方法( Correlation-based Markov Localization,CBML) ,减少了定位过程中的计算量,提高了地图更新的效率。Kosechka 和 Li 基于机器视觉建立室内环境拓扑地图。Gutmann 提出一种集成马尔可夫定位和EKF 的定位方法 ML-EKF。

    马尔可夫是一种基于概率的全局状态估计方法,通过传感器对环境的测量和自身运动对机器人状态进行递归的估计,以获得最接近机器人真实位置的状态。此外,马尔可夫定位可解决在定位初期因初始位置未知和环境相似性造成的多峰值分布问题,并能从定位失败中恢复。从运动控制的方面,马尔可夫定位结果直接确定了机器人与环境的相对位置关系,例如距离,这也是大多数机器人系统的重要输入信息。

    粒子滤波定位

    Dellater[3]等人和 Koller[4]等人提出了蒙特卡罗定位( Monte Carlo Localization,MCL) 方法,这是一种全局定位方法。蒙特卡罗定位是采样/重要性重采样 ( Sampling /Importance Re-sampling,SIR) 的一种版本,更为人们熟悉的叫法为粒子滤波( Particle Filter) 定位。粒子滤波的思想是用 N 个带有权重的粒子来表示机器人位姿的后验概率密度分布。根据系统状态的条件概率分布在状态空间构造一组随机粒子,根据观测信息不断调整每个粒子的位姿和权值,根据调整后的粒子信息来校正系统状态先前的条件概率分布。

    粒子滤波器不受线性高斯系统的限制,可应用在任何非线性的随机系统,但在全局定位中需要较多的粒子,而在位姿跟踪中,即机器人的初始位姿已知时,只需要很少的粒子就能得到较好的定位效果。粒子滤波的最大问题是会出现由于重采样过程而导致的粒子耗尽,这时粒子将没有办法逼近机器人位姿的真实后验分布。Koller 和 Kwok 等在定位机器人的过程中自适应地调整样本数量来降低计算量,Thrun 等提出 Mixture-MCL 算法,改变样本的产生方式,在样本数量较小的时候,使其产生良好的定位效果。Saarinne 等提出一种基于正态分布变化的蒙特卡洛定位方法 ( Normal Distributions Transform Monte-Carlo Localization,NDT-MCL ) ,用正态分布变化作为地图和传感器数据的表示形式,提高了室内机器人定位的精度和可重复性。

    3.6.2 激光雷达SLAM地图创建技术

    地图创建是指依靠移动机器人自身携带的传感器,在移动过程中,根据自身传感器不断采集的位姿和环境信息数据,建立环境地图的过程。首先机器人根据传感器传回的实时数据信息建立局部地图,然后将局部地图并入到全局地图。每次得到的局部地图既包含全局地图已有的信息,也有全局地图没有的新的环境信息。在地图创建过程中,不仅仅实现了对环境地图的估计,同时还实现了对移动机器人位姿的估计,也再次说明了定位与建图相辅相成的过程。地图表示方法在前文已经说明,根据不同的地图更新方式,不同的地图创建方法有其各自的优缺点及其需要解决的主要问题。

    基于滤波的地图创建算法

    ①基于EKF的地图创建算法

    EKF 方法是解决 SLAM 问题的一种经典方法,依赖于运动模型和观测模型的高斯噪 声假设。Smith 等人利用 EKF 方法提出的数学公式至今仍在广泛使用。EKF-SLAM 采用增广的系统状态空间,滤波过程包括状态预测、状态更新和地图更新,对增广的系统状态和增广的系统协方差矩阵进行递归的更新替换。其中地图更新部分,主要是在完成系统状态更新后,机器人把当前时刻的位姿和环境特征状态存储到环境地图中。地图更新主要包括: 匹配成功的特征点更新、新特征的加入、扩展地图、错误特征的删除。由于 EKF 的限制性,随后许多研究者对该方法进行了改进。EKF-SLAM 能够以在线的方式估计地图的全后验概率,能够获得最可能的地图和机器人位姿,地图中维护的不确定性在机器人利用地图导航的时候有极大的好处。此外,此框架能够使机器人位姿和所创建的环境地图依概率 1 收敛到真实值,其收敛程度由机器人初始不确定性和传感器观测的不确定性决定。基于EKF-SLAM 框架,研究人员在不同机器人系统上完成了很多开发工作。但是由于 EKF-SLAM 框架存在算法一致性限制、数据关联限制、计算成本高的限制,因此这种框架只适合建立小规模地图。研究者们不断提出改进,如分割更新、稀疏信息滤波和子地图方法等,一些研究者将扫描匹配放进了传统的 EKF-SLAM 的框架内。

    ②基于RBPF的地图创建算法

    Rao-Blackwellized 粒子滤波器 (RBPF) 的基本思路是:在 RBPF 中每个粒子代表了一条可能的机器人估计和地图,其关键任务是估计环境地图 m 和机器人运动轨迹的联合后验分布。

    RBPF 在特征地图和栅格地图的 SLAM 中应用都比较成功。相对于 EKF-SLAM,RBPF 对数据关联不敏感,容许错误的数据关联。即当发生数据关联错误时,RBPF SLAM 比EKF-SLAM 效果好。RBPF SLAM 系列算法的主要问题是解决由于重采样造成的粒子多样性丧失,即粒子耗尽问题。Hahnel 等将 RBPF 和扫描匹配相结合,通过设计扫描匹配造成的误差模型,使扫描匹配最小化航迹推测误差,降低需要的粒子数。Grisetti 等对 Hahnel的算法进一步改进,通过同时考虑机器人运动模型和当前观测的建议分布及采用自适应重采样技术两种方法来提高 RBPF性能。Blanco 等使用Kullback-Leibler Distance( KLD) 方法自适应确定粒子数量。朱磊等人将人工鱼群算法引入,使粒子分布在重采样之前就更加接近真实情况,随后利用定向重采样方法使新产生的粒子更加接近真实运动。

    ③基于 Fast SLAM 方法的地图创建算法

    Montemerlo 等[5-6]基于Rao-Blackwellized,提出了Fast SLAM算法。其实质是在RBPF-SLAM算法的框架内,加入了 EKF 对环境的特征地图标识。基本思想是把机器人 SLAM 系统分解为位姿估计和环境地图估计两部分。其中位姿估计采用粒子滤波算法估计机器人路径,环境地图则采用扩展卡尔曼滤波器更新。但上述方法粒子退化现象严重,为了解决这个问题 Montemerlo 等人提出了Fast SLAM 2. 0 算法[7],进一步在重要性权值计算过程中引入高斯分布函数,有效的解决了粒子退化现象,提高了算法的精度和有效性。

    基于图优化方法的地图创建算法

    Graph SLAM 由 Lu 和 Milois[8]在1997年提出。Graph中的节点表示位姿,节点之间的边表示由航迹推测得到的位姿间的约束。Graph SLAM 算法包括前端构图和后端优化两部分。前端构图包括特征提取、数据关联,后端图优化常用方法有最小二乘法、随机梯度下降法、松弛法和基于流行的图优化等。Graph SLAM 将地图创建视为最优化问题,首先定义目标函数和约束条件,然后用数学规划方法求解。Graph SLAM 是在采集完所有传感器数据后,在建立好所有约束条件的前提下进行离线位姿估计和地图创建的。目前较著名的 Graph SLAM 算法有:PTAM-SLAM、LSD-SLAM、ORB-SLAM、SVO-SLAM 和 RGBD-SLAM 等。

    基于其他SLAM技术的地图创建算法

    Thrun 提出一种基于概率方法的期望最大化( Expectation Maximization,EM ) 算法。期 望( Expectation) 是基于当前相似性最大地图来估计机器人的位姿;最大化( Maximization) 是基于期望步骤所得到的机器人位姿来估计相似性最大地图。基于 EM 的 SLAM 方法,将地图创建转化为概率约束条件下的最大相似度估计问题,然后再估计机器人的位姿,这种方法具有很好的地图创建和定位性能。但是它是一种非增量的分批算法,且不能实时运行。后来 Thrun 等结合 EM 算法和增量算法,提出了一种新的实时性算法,该算法主要计算机器人位姿的全后验概率来确定最相似的位姿,但是由于后验概率计算的时间复杂度高,这种算法不能用于大规模环境。

    3.6.3 激光SLAM展望

    随着人工智能技术的发展,将来会考虑将智能化方法引入激光 SLAM 过程,如神经网络模型、集元理论等在优化、分类和可靠性方法都具有优势,这些算法的引入将会让激光 SLAM 拥有更好的前景。另外,无人驾驶技术要求地图高效、准确的反映动态环境信息,同时需要地图与无人车之间拥有更好的交互性,而目前常见地图表示方法不能满足这样的要求,因此研究更高效的适应室外非结构环境下的地图表示方式,也是未来的发展方向。此外,基于多种传感器融合技术和多车协作也是未来激光 SLAM 的发展方向。

    随着无人车技术的发展,目前激光 SLAM 技术是 SLAM 研究领域的热点,也是无人车实现在 GPS信号失灵情况下进行自我定位的重要保证。由于激光的精度高、速度快及安全性高等特点,激光SLAM 在无人车、无人机和机器人自主导航等方面得到越来越广泛的应用。在无人车技术领域,随着激光 SLAM 技术的不断探索和发展,未来的激光SLAM 技术将会扩展到动态、三维的非结构环境应用中去,以实现无人车的不依靠 GPS 的全自主导航。

     

    点云三维重建

    表面重建算法的任务在于从多幅点云中构建物体的统一曲面表示,下文将对几种典型的表面重建算法进行评述。

    3.7.1 网格缝合法

    Boissanat[1]提出了一种用于实现三维点集 Delaunay三角化的算法,Rutishauser等[2]进一步利用该算法实现三维模型网格的生长。该算法通过在点云中寻找与现有模型网格边缘较近且不重叠的点并将该点加入到模型网格中,从而实现模型网格的更新生长。

    Turk 和 Levoy [3]提出了一种网格缝合(mesh zippering)法。该算法将点云网格逐一进行缝合,从而得到反映物体完整三维形状的粗模型,最后将所有点云网格与粗模型对齐并通过求均值以获得更加精确的三维模型。对于配准的两幅点云网格,首先沿着网格边缘将重叠的区域删除,进而对其中一幅点云网格的边缘进行修剪以和另一幅网格良好吻合,并去除得到的小三角形。将所有点云网格缝合从而得到一个粗模型,进而在原始点云上寻找与粗模型上的点满足几何一致性的点,将这些点的坐标均值作为最终模型上相应点的坐标。该算法可在扫描的同时对点云逐个进行配准,因而可以减少存储量。当点云网格的配准不精确或噪声较大时,该算法的性能较差。此外,该算法得到的模型在缝合处有较明显的接缝[4]。文献[5]亦采用类似的方法实现三维表面重建。

    3.7.2 隐函数法

    这类算法通常构建一个隐函数对三维表面进行描述, 进而通过提取隐函数的等值面实现三维表面重建。

    第一类方法是体素法。该方法在三维体数据中构建一个隐函数,并采用移动立方体(Marching Cubes, MC)算法从体数据中重建出隐函数为 0 的表面。这类算法不同变种间的差异主要体现在隐式曲面定义和体数据组织上[6],体素法在三维模型重建中得到了广泛的应用。 Curless 和 Levoy [7]首先对点云进行体素化,并将每幅点云转化为有向距离函数。 进而将每个体素中来自多幅点云的有向距离函数加权求和,从而得到该体素对应的累积有向距离函数。接着,采用 MC 算法在体素栅格中提取累积有向距离函数等于 0 的等值面,从而实现三维模型重建。实验结果表明,该算法可从大量点云中获得无缝且细节丰富的高精度三维模型。文献 [8-10] 采用类似的方法实现三维表面重建。Johnson 和 Sing [6]则采用概率占据网格方法获得体数据进而采用 MC 算法实现表面重建。该占据网格基于点的接近性以及传感器误差模型实现对三维表面的概率描述,因而可通过调整误差模型使得算法适用于不同类型传感器。

    第二类方法是泊松法[11]。该算法为模型构建一个示性函数,该示性函数在模型的内部取值为1,在模型外部取值为 0。然后用示性函数的梯度场去逼近点云的法向量场,从而将示性函数的求解转化为泊松函数的线性求解问题。采用最小二乘问题获得示性函数的解后, 采用类似于 MC 算法的方法提取等值面从而实现三维表面的重建。该算法一次考虑所有采样点,无需采用启发式的空间分割或融合,因而对噪声稳健。其次,该算法的隐函数梯度在所有空间点上都进行了限制,生成的错误面片较少,因而对散乱点云稳健。但该算法对无完整包络的物体(如室外建筑物点云)重建效果较差。

    3.7.3 转球算法

    Bernardini 等 [12] 提出了一种用于三维表面重建的转球(ball-pivoting) 算法。该算法假设点云密集分布在整个曲面上从而使得半径为 ρ 的球可以在该点云表面上滚动而不会掉到点云内部。在每次滚动时,均有三个采样点支撑住该球。该算法首先选择三个合适的点构成模型网格的种子三角形,该三角形的三个点均在半径为 ρ 的球表面上。进而将该球绕三角形各边旋转直到接触到新点为止。该旋转边与找到的新点一起便构成了一个新三角形, 并将该三角形加入到网格中。重复上述过程直到所有可旋转的边均已完成测试,则算法转而寻找下一个种子三角形,直到将所有点遍历完为止。为应对采样密度不均匀的情形,该算法继续采用一个半径更大的球重复上述过程。 该算法运算效率高,内存消耗小,且对噪声稳健。算法具有与点数成线性关系的运算复杂度,其在运算过程中无需将点云的所有点同时导入到内存中,且生成的网格亦可增量式的保存到计算机外存中,因此适用于大数据点云的网格化。

    3.7.4 Power Crust算法

    Amenta 等 [13] 提出了一种 power crust 算法用于三维表面重建。 该算法首先由点云计算物体的中心轴,并以包含在物体内部的最大球来表示物体,从而对中心轴进行逆变换获得物体的表面。对于复杂的三维物体表面,难以准确地计算其中心轴,因此该算法采用点云的 Voronoi 图和 Power 图对物体表面和中轴进行分段线性估计,并用一组离散的极点球(polar ball) 近似模拟中轴。接着,将极点球划分为物体内部空间和物体外部空间两类,最后将这两部分极点球分离便得到输出曲面。该算法有很强的理论性, 在实现中心轴估计的同时, 可获得一个密封(watertight) 的三维网格,其对有锐利边缘的物体、非均匀采样的点云以及噪声干扰亦有较好的效果。此外,该算法对输入点云无特殊要求,且避免了孔洞填充等后处理操作。该算法的缺陷在于其运行速度较慢。

     

    1. 点云应用

    三维激光扫描已在许多重大工程和典型领域里得到了广泛的应用。从深空到地球表面,从全球范围制图到小区域监测,从基础科学研究到大众服务,三维激光扫描都展现出了与众不同的优势。基于点云的模型重建与目标识别在军事和民用领域均有非常广泛的应用前景。

    4.1 深空探测

        深空探测的目的是促进人类对月球以及更远天体的科学认识,而距离测量是其中的关键技术,许多国家采用激光测高仪进行星体地形表面的测量,如1971年美国阿波罗首次进行的月球形状测量等[1]

    4.2 精确制导自动目标识别

    采用激光雷达获得的点云可有效实现高分辨率的目标成像,实现对小树林和伪装网遮挡下的目标检测与识别。麻省理工学院(MIT)开展了“七巧板(JIGSAW)”项目等研究,进行了机载激光雷达对坦克和装甲车等地面目标的检测识别外场试验[2-3]。该研究成果将成为美国陆军未来战场系统(Future Combat SystemsFCS)的一部分。瑞典国防研究局[4]、西班牙国防部[5]以及德国光子与模式识别研究所[6]等都开展了大量相关研究。

    4.3 地球科学应用研究

    数字地面模型是各种地学过程研究的基础,利用三维激光扫描系统观测地表形态及其变化,已被广泛应用于各类地学应用,例如:全球冰川物质平衡[7-8],地质灾害区域时空变化监测[9-10],海岸线提取[11-12],海底测绘及水下目标探测[13]等。

    4.4 森林资源调查

    及时准确了解林区的植被动态变化是林业科学研究的基础。相比光学遥感,激光雷达能够获取植被冠层的三维结构;地面激光雷达用于精细地获取单株数木的垂直结构[14],机载激光雷达用于大范围森林的蓄积量和生物量等生态参数的反演[15-17],星载激光雷达还可以进行全球植被覆盖及其生态参数制图[18-19]

    4.5 城市形态分析

    城市形态分析对城市规划设计于管理具有重要意义,传统手段难以监测城市形态的垂直结构及其演化,激光雷达可以快速获取城市三维形态,为更精细的城市形态分析提供基础,满足基于城市形态的各种应用需求,如基础设施管理、太阳能潜力估计等[20-21]

    4.6 灾难救援与应急响应

    采用激光雷达可获得城市场景的真实三维模型,实现地物分类以及应急响应。麻省理工学院利用ALIRT机载激光雷达成像研究试验平台对太子港进行了三维成像,获得30m分辨率的城市三维图像,用于评估道路和桥梁状况、分析水淹情况、选择直升机降落场以及规划难民安置等[22]

    4.7 无人系统自动导航

    高精度地图是实现自动化驾驶的关键因素。车载激光扫描系统可以高效、快速的获取道路以及周边高精度、高密度的三维几何信息和纹理信息,为高精度地图的自动化生产提供高质量的数据支撑[23]

    点云传感器被广泛应用于各种无人自主系统中。无论是谷歌无人车、普林斯顿大学无人车还是国防科大开发的无人车,均采用激光雷达或立体视觉获取点云以生成车辆周围环境的三维地图,并结合其它传感器实现车辆、建筑物、行人以及路牌等的检测识别,最终完成态势感知[24,25]此外,德国弗莱堡大学、英国牛津大学等联合开展了用于室外和室内场所的机器人自动导航研究,该研究将点云传感器作为其主要传感器之一[26]

    4.8 文物三维数字化

    文化遗产数字化保护是人类共同的历史责任。三维激光扫描可以快速绘制物质文化遗产的结构图和精细的三维模型,大幅提高文化遗产保护的工作效率,并丰富文化遗产成果表现形式[27-28]

    采用点云传感器对文物进行扫描进而构建三维模型有利于重要文物遗产的长期保存和修复。美国斯坦福大学与华盛顿大学合作开展了“数字化米开朗琪罗项目”,完成了对其雕刻作品的数字化三维模型重建[29]。德国NavVis公司完成了德意志博物馆船舶展厅的三维全数字化建模并构建了网上三维展示,国内相关单位亦开展了对秦始皇兵马俑等艺术作品三维数字化的探索。武汉市测绘研究院刘永锋等[38]采用徕卡P40激光扫描仪获取历史建筑物内外部结构的三维点云数据,最终以CAD线划图的形式还原了建筑物原貌。

    4.9 电力走廊安全巡检

    我国电力资源分布和经济建设中心不一致,高压输电线路区域地理环境复杂,传统的人工巡检手段难以适应。机载三维激光扫描可以直接获取电力线及其附属设备的几何形态参数[30],为电力巡检提供了新的手段[31]

    4.10 海岛礁测绘

    精确的海岛礁基础地理空间信息是海洋管理、经济开发、国防安全的重要依据,传统测绘手段作业周期长、成本高,三维激光扫描可以直接观测目标的三维空间信息,直接生产数字测绘产品,是岛礁高精度测图的重要手段。

    4.11 隧道断面提取与变形监测

    荷兰代尔夫特理工大学 Lindenbergh R 等[32]于 2004 年使用徕卡公司生产的 Leica HDS3000 型三维激光扫描仪对一条约 100 米长的隧道进行了点云扫描及特征点及特征断面截取,对数据精度进行了评定,证明了三维激光扫描技术在隧道变形监测中的可行性。

    荷兰代尔夫特理工大学 Gosliga R V 等[33]在前人研究的基础上于 2006 年引入圆的几何模型及最小二乘算法,将三维激光扫描技术应用于圆柱形隧道横断面的提取中。

    近十余年来,三维激光扫描技术在隧道变形监测中的应用逐渐被国内业内学者所关注和认可。同济大学周奇才[34]等于 2010 年将激光测距技术引入到地铁隧道断面变形监测工作之中,激光测距技术是三维激光扫描技术的核心,故该项研究为国内的三维激光扫描技术在隧道断面提取中的研究打下了基础。武汉大学简骁[35]等于2011年提出利用三次埃尔米特差值的方法对隧道点云数据进行变形曲面拟合,进而比对多期隧道曲面数据而达到变形监测的目的。武汉大学托雷[36]等于 2013 年对隧道中轴线及断面提取进行了研究,引入 RANSAC 算法实现隧道连续断面的截取并拟合变形曲线,实现了三维激光扫描点云数据在隧道变形监测中的应用。长安大学李双[37]等于 2015 年提出了利用三维不变矩拟合隧道中轴线并利用二阶矩拟合断面椭圆特征的方法,实现了隧道断面的连续提取。

        此外,三维激光扫描被逐渐应用于桥梁[39]、矿山边坡[40]的变形监测中。

     

    三维点云的进展、挑战与展望

    5.1重要进展

    近年来,国内外学者在点云处理理论以及数据质量改善、自动化融合、点云分类和目标提取、按需多层次表达等方法方面进行了深入研究,取得的主要进展如下。

    5.1.1广义点云模型理论方法

    针对多源多平台点云数据的融合难、目标提取难和三维自适应表达难的严重缺陷,文献[1]提出了广义点云的科学概念与理论研究框架体系。广义点云是指汇集激光扫描、摄影测量、众源采集等源多平台空间数据,通过清洗、配准与集成,实现从多角度、视相关到全方位、视无关,建立以点云为基础,基准统一,且数据、结构、功能为一体的复合模型。

    5.1.2三维点云数据质量改善

    点云数据质量改善包括几何改正和强度校正。一方面,由于测距系统、环境及定位定姿等因素的影响,点云的几何位置存在误差,且其分布存在不确定性。利用标定场、已知控制点进行点云几何位置改正,能够提高扫描点云的位置精度和可用性。另一方面,激光点云的反射强度一定程度上反映了地物的物理特性,对于地物的精细分类起到关键支撑作用,然而点云的反射强度不仅与地物表面的物理特性有关,还受到扫描距离、入射角度等因素的影响。因此,需要建立点云强度校正模型进行校正,以修正激光入射角度、地物距离激光扫描仪的距离等因素对点云反射强度的影响[2,3]

    5.1.3多源、多平台三维点云融合

    由于单一视角、单一平台的观测范围有限且空间基准不一致,为了获取目标区域全方位的空间信息,不仅需要进行站间/条带间的点云融合,还需要进行多平台(如机载、车载、地面站等)的点云融合,以弥补单一视角、单一平台带来的数据缺失,实现大范围场景完整、精细的数字现实描述[4-6]。此外,由于激光点云及其强度信息对目标的刻画能力有限,需要将激光点云和影像数据进行融合,使得点云不仅有高精度的三维坐标信息,也具有了更加丰富的光谱信息[7,8]。不同数据(如不同站点/条带的激光点云、不同平台激光点云、激光点云与影像)之间的融合,需要同名特征进行关联。针对传统人工配准法效率低、成本高的缺陷,国内外学者研究基于几何或纹理特征相关性的统计分析方法[9-10],但是由于不同平台、不同传感器数据之间的成像机理、维数、尺度、精度、视角等各有不同,其普适性和稳健性还存在问题,还需要突破以下瓶颈:鲁棒、区分性强的同名特征提取,全局优化配准模型的建立及抗差求解。

    5.1.4三维点云的精细分类与目标提取

    三维点云的精细分类是从杂乱无序的点云中识别与提取人工与自然地物要素的过程,是数字地面模型生成、复杂场景三维重建等后续应用的基础。然而,不同平台激光点云分类关注的主题有所不同。机载激光点云分类主要关注大范围地面、建筑物顶面、植被、道路等目标[11-16],车载激光点云分类关注道路及两侧道路设施、植被、建筑物立面等目标[17-20],而地面站激光点云分类则侧重特定目标区域的精细化解译[21]。其中,点云场景存在目标多样、形态结构复杂、目标遮挡和重叠以及空间密度差别迥异等现象,是三维点云自动精细分类的共同难题。

    据此,国内外许多学者进行了深入研究并取得了一定的进展,在特征计算基础上,利用逐点分类方法[22-23]或分割聚类分类方法[17-19]对点云标识,并对目标进行提取。但是由于特征描述能力不足,分类和目标提取质量无法满足应用需求,极大地限制了三维点云的使用价值。目前,模拟人脑的深度学习方法突破了传统分类方法中过度依赖人工定义特征的困难,已在二维场景分类解译方面表现出极大潜力[24],但是在三维点云场景的精细分类方面,还面临许多难题:海量三维数据集样本库的建立,适用于三维结构特征学习的神经网络模型的构建及其在大场景三维数据解译中的应用。综上,顾及目标及其结构的语义理解,三维目标多尺度全局与局部特征的学习,先验知识或第三方辅助数据引导下的多目标分类与提取方法,是未来的重要研究方向。

    5.1.5三维场景的按需多层次表达

    在大范围点云场景分类和目标提取后,目标点云依然离散无序且高度冗余,不能显式地表达目标结构以及结构之间的空间拓扑关系,难以有效满足三维场景的应用需求。因此,需要通过场景三维表达,将离散无序的点云转换成具有拓扑关系的几何基元组合模型,常用的有数据驱动和模型驱动两类方法[25-26],其中存在的主要问题和挑战包括:三维模型的自动修复,以克服局部数据缺失对模型不完整的影响[27]形状、结构复杂地物目标的自动化稳健重构;从可视化为主的三维重建发展到可计算分析为核心的三维重建,以提高结果的可用性和好用性。此外,不同的应用主题对场景内不同类型目标的细节层次要求不同[28],场景三维表达需要加强各类三维目标自适应的多尺度三维重建方法[29-30],建立语义与结构正确映射的场景—目标—要素多级表达模型。

    5.2面临挑战

    近年来,星、空、地扫描以及便携式泛在传感器(如:RGB-D 深度相机)广泛运用,不但提高了点云获取的时效性、颗粒度和覆盖面,而且带来了点云的多时相、流形(streaming)和多样属性的新特性,从而产生了多维点云数据。多维点云本质上是对物理世界中地理对象/现象的三维几何、物理乃至生化特性的多维密集采样,其不但记录了地物的三维空间结构特征,同时也记录了地物目标的物理特性(如波形、反射强度等)。深入挖掘多维点云的内在特征对提升多维点云处理的智能化程度,揭示复杂动态三维场景的变化规律至关重要。尽管点云处理方面已经取得了较好的研究成果,但是多维点云的智能化处理方面仍然面临如下的巨大挑战:

    5.2.1多维点云几何与属性协同的尺度转换

    探索不同平台获取点云的误差分布规律,建立比例尺依赖的特征点质量评估模型;研究融合点云物理特性的特征点簇聚合与分层方法;建立基于特征分层的多维点云多尺度整合方法,实现多维点云的时空基准自动统一。

    5.2.2多维点云变化发现与分类

    建立统一时空参考框架下多维点云的变化发现与提取方法,研究基于时间窗口的多维点云与地物三维模型的关联方法,提取地物空间要素的几何和属性变化,研究面向地物空间结构变化的可视化分析方法,为揭示空间要素的变化规律提供科学工具。

    5.2.3复杂三维动态场景的精准理解

    基于机器学习、人工智能等先进理论方法探索多维点云结构化建模与分析的理论与方法,研究建立复杂三维动态场景中多态目标的准确定位、分类以及语义化模型的建立,建立面向多维点云的三维动态场景中各类要素的特征描述、分类与建模方法,架设多维点云与地理计 算模型的桥梁。

    上述关键挑战问题的突破将形成完备的广义点云全三维(覆盖全、要素全、关系全)建模的理论与方法体系,从而实现点云处理由“静态、可视、量算”到“动态、模拟、分析”的跨越。

    5.3 发展趋势与展望

    近年来,传感器、通信和定位定姿技术的发展,人工智能、深度学习、虚拟/增强现实等领域先进技术的重要进展有力推动了数字现实(digital reality)时代的来临。激光扫描与点云智能化处理将顺应数字现实时代的需求朝以下几个方面发展。

    ⑴三维激光扫描装备将由现在的单波形、多波形走向单光子乃至量子雷达,在数据的采集方面由现在已几何数据为主走向几何、物理,乃至生化特性的集成化采集。

    ⑵三维激光扫描的搭载平台也将以单一平台为主转变为以多源化、众包式为主的空地柔性平台,从而对目标进行全方位数据获取,当前国家重点研发计划重点专项项目:国产空地全息三维遥感系统及产业化已支持相关研究。

    ⑶点云的特征描述、语义理解、关系表达、目标语义模型、多维可视化等关键问题将在人工智能、深度学习等先进技术的驱动下朝着自动化、智能化的方向快速发展,点云将成为测绘地理信息中继传统矢量模型、栅格模型之后的一类新型模型,将有力提升地物目标认知与提取自动化程度和知识化服务的能力。

    ⑷虚拟/增强现实、互/物联网+的发展将促使三维激光扫描产品由专业化应用扩展到大众化、消费级应用,满足网络化多维动态地理信息服务的需求。

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • SCENE三维点云拼接 1、插入法如的狗打开桌面软件 2、在文件位置新建项目,项目放到fls文件目录下,点击创建 3、直接拖入fls格式的文件,拖入进去之后点击保存(等待进度读条);点击Scans右键操作正在预处理在...

    SCENE三维点云拼接
    1、插入法如的狗打开桌面软件
    在这里插入图片描述

    2、在文件位置新建项目,项目放到fls文件目录下,点击创建

    在这里插入图片描述

    3、直接拖入fls格式的文件,拖入进去之后点击保存(等待进度读条);点击Scans右键操作正在预处理在点击预处理扫描;按照下图设置并点击配置,按照图片更改;点击确定(等待进度读条)

    在这里插入图片描述
    尺寸可以修改在这里插入图片描述

    4、scans右键,视图然后点击对应视图,可以手动摆放位置

    在这里插入图片描述

    5、如下图,两站重叠之后,右键点击scanManager,更新扫描,确定
    在这里插入图片描述
    在这里插入图片描述

    确定

    在这里插入图片描述

    6、右键SCAN视图,三维视图查看点云。启用裁剪框,箭头是调节方向(不需要可以将裁剪框的文件删除)
    在这里插入图片描述
    7、在点云一家在的状态下选择多边形选择器删除点云;变成图片中黄色区域,右击选择删除内部还是删除外部

    在这里插入图片描述

    展开全文
  • 激光点云处理软件

    2018-03-07 14:58:00
    激光雷达点云后处理软件LiDAR360基于海量点云数据的处理平台,同时支持地形、林业、电力等行业应用模块进行多源数据叠加分析,提取相关行业的场景特征点,进行点云大数据信息挖掘,满足不同行业多层次的应用需求。
  • 基于MS进行点云的二次开发已经有一段时日,已经实现的功能作一个回顾: 1.首先是点云的导入功能,MS CE目前只支持pod格式点云文件,加载速度很快,因为其并没有全部读入点云数据,目前的理解是仅仅读入了点云的...

    基于MS进行点云的二次开发已经有一段时日,对已经实现的功能作一个回顾:

     1.首先是点云的导入功能,MS CE目前只支持pod格式点云文件,加载速度很快,因为其并没有全部读入点云数据,目前的理解是仅仅读入了点云的头文件,有很好的显示效果,但无法获取实际点云坐标;

    解决办法是使用pdal库读入las文件,las再转成pod,当需要处理点云时,根据点云元素ID后台读取las,仅仅测图时则不使用las以保证流畅的点云显示效果:

    2.点云导入后需要对其进行管理,因此搭建了一个点云管理列表,记录每个点云的名称、数量、ID、最大最小值。

    同时实现选中高亮显示、删除功能,在删除选中某行时,对应的点云也删除。

    3.实现基本的测图功能:

    包括上述简单绘图功能,鼠标选点,构建线串,动态显示,是否闭合等;

    更新视图是对视图内所有的点云元素进行遍历,并显示到点云管理列表中。

    4.真正的点云处理功能:

    此处也很艰难,PCL和MS SDK无法兼容,我选择了调用外部exe的方法,将待处理点云以及一些参数传到由PCL写好的exe中进行处理。

    目前实现的功能都很简单,基础的PCL都能轻松解决,主要是移植到MS中有很多问题。

    其中裁剪盒的构建花费了较长时间,最后通过构建线串的方法实现了动态的裁剪盒拉伸,效果如下:

     

    任重道远,C++基础太差了,每一步都很难,坚持不下去就听听野草。

    我顺着剥落的高墙走路
    风吹来四面是灰土 四方有雾
    我感到绝望 我感到枯竭
    我这一路上再也没有遇到青年…

    5.五月十四更新

    昨晚困扰了很久的bug,早上一来就想通了,扫描的SCANBUF应当放在元素类型的判断下,否则会在后续的删除过程中导致ID和实际元素无法完全对应;

    今天上午改进了裁剪框的搭建,不再垂直XY轴,而是任意矩形,然后改进裁剪方法,这里又出现了很多问题,还好一一解决了,裁剪框内部点的判断方法为射线法,看有几个交点,奇数则在内部,偶数在外部。但是构成多边形的点的顺序一定要设定好,很重要!!!

    下午又是出现了一个让人吐血的bug,在构建多个裁剪框后,发现第二次导入的裁剪后点云始终没有变化,但是把第一次导入的裁剪点云删除就可以正常显示;

    原因竟然是第一次导入las转pod,pod在软件中已经运行,导致第二次裁剪导入的时候无法覆盖上一个pod,使得las数据正确,但是导入的pod一直是上一个pod,吐血,看了一下午才反应过来。主要还是代码写的不好,调用exe输出的裁剪后点云都是同名文件,每次处理都会覆盖上一个las文件,但是当MS中打开了pod文件的时候再进行二次裁剪,无法导入新的pod,导致这个问题。真的头疼。后续还要好好修改,如何给每一次裁剪得到的点云不同的文件名。

     

    6.五月二十二更新

    昨日又出现了一个很大的bug,las转pcl格式经过处理再转出时,点云竟然不一样了,数量一致,但是变成了一条条线,翻来覆去不知何故,最终发现double格式的点云数据转成pcl格式float,丢失了小数点精度,导致点云出现了误差;下面是对比图。

    解决思路一是自己定义一个double类型,但是在后续使用PCL算法时报错,思路二时将点云数据同时减去xyz最大值,使得double转float时不会丢失数据精度,此方法成功。

    第二个小问题:当多选点云元素进行处理时,不知道何时清空记录选中点云行数的vector,暂时在取消选择这一子菜单中写了清空,但还是很不方便,需要后续解决。

     

     

     

    展开全文
  • 常用点云处理软件

    千次阅读 2020-12-21 20:56:03
    我的第一篇博客 学习期间了解点云数据处理的...CloudCompare主要是点云处理软件,可以加载txt、las、laz、pcd、ply等格式的点云文件以及快速加载大量点云数据,并能进行点云处理算法(配准,重采样,颜色/法向矢量/标

    我的第一篇博客

    学习期间了解点云数据处理的相关算法,也在博客上查找了很多相关的知识,也获得了很大的帮助,因此想把自己学到的点云相关知识分享给大家,一起学习!

    常用的点云处理软件

    学习点云相关算法时会使用到相关的软件来进行一些初步处理或者进行可视化,我学习的过程中用到了几个软件,现在分享给大家。
    1.CloudCompare
    CloudCompare主要是点云处理软件,可以加载txt、las、laz、pcd、ply等格式的点云文件以及快速加载大量点云数据,并能进行点云处理算法(配准,重采样,颜色/法向矢量/标量字段管理,统计数据计算,传感器管理,交互式或自动分段等)以及显示增强工具(自定义色带,颜色&法线向量处理,校准图片处理,OpenGL着色器,插件等)。
    软件下载地址:http://www.danielgm.net/cc/release/
    安装很简单,按步骤安装即可;
    2、pcl库
    PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用。
    软件下载地址:https://pointclouds.org/
    pcl库对于初学者有很大的帮助,安装过程比较麻烦,好在现在有Windows系统的集成软件,电脑的相关配置有很多博客有介绍,可自行查找。
    3、数字绿土的lidar360
    LiDAR360是北京数字绿土科技有限公司自主研发的激光雷达点云数据处理和分析软件,提供点云数据处理的一站式解决方案。软件支持海量点云的可视化及编辑、航带拼接、自动/半自动分类、数字模型生成及编辑、电力线、林业分析等一系列工作,支持多元数据格式导出。软件所采用的算法多次获得国际摄影测量与遥感协会的大奖,并且被美国国家森林局采用。
    下载地址:https://www.lidar360.com/archives/5135.html
    可以发邮件获取短时间的试用期。
    对于初学者来说,这几个软件可以满足需要,PCL库与CloudCompare都是开源软件,可以深入学习研究。

    展开全文
  • 点云处理软件

    2013-04-22 19:40:26
    可以很容易的处理三维点云数据 很方便以及很简便
  • 激光雷达点云数据处理软件,可提供点云数据查看、按类别显示、点云数据按类别导出、导出DEM/DSM、滤波等功能。
  • 点云处理软件Pointscene

    2019-09-28 01:13:12
    转载于PCL中国:点云处理软件Pointscene 软件官网:https://pointscene.com/ 笔者评: Pointscene是目前的点云处理软件之一,其主要是操作简单直观,并且支持与WebGL兼容的格式导出。 Have you ever wanted to ...
  • PCAT 点云标注软件

    2020-10-20 15:42:32
    看论文时候发现的~ 也有博主已经写了使用的博客:PCAT点云标注工具安装与使用 Mark一下
  • cloudcompare软件是一款开源的点云处理软件,其源代码编写点云处理程序的同学有所帮助。
  • 使用CloudCompare对点云进行拼接

    千次阅读 2020-01-14 11:17:04
    2020.01.07,今天惊喜地发现CloudCompare可以直接读取带rgba信息的pcd格式的点云文件,而且可以很方便地对点云进行裁剪、拼接,简直就是一大神器! 所以以后只有在ILRIS激光雷达扫描数据进行处理时才用到PolyWorks...
  • 官网链接:http://www.cloudcompare.org/ 这个软件是用Qt和opengl基于PCL库做的。 安装软件的话下载这个: 之后安装即可。 使用2.11的,2.12有bug。 后边的压缩包里边是源码。
  • LiDAR点云处理软件

    千次阅读 2019-02-18 22:24:00
    1、主要介绍当前主流的激光雷达数据处理库、开源软件、商业软件等。 英文主页: http://opentopo.sdsc.edu/tools/listTools2、日期 工具名称 工具类型 关键词 评分2017年1月12日 planlauf /地形说明: planlauf / ...
  • 分享一个用于点云处理的开源软件~~~在我网盘里面~~~ 百度网盘链接:CloudCompare
  • 点云催化剂,催化你的点云——软件介绍(上) 导读: “点云催化剂”是2019年8月推出的一款点云数据智能后处理和分析软件套装,核心研发团队来自中国测绘科学研究院。包括两个软件: Point Cloud Catalyst Toolbox...
  • 用于浏览标准LAS点云文件,软件支持RGB、反射强度等方式渲染,支持量测功能,浏览过程不卡顿...............
  • 年前事情总是一件接一件,...所以说花了一下午时间先把软件的显示部分做好,今天早上还没起床就又听到外面有人拖着行李箱走了,心里贼不爽,上午还是写篇博客放松放松吧,顺便把点云显示部分记录分享一下,闲话不多...
  • 点云处理软件安装指南LP360InstallationGuide.pdf
  • 点云处理软件/库

    2021-01-21 16:05:04
    PDAL库 C/C++ 好像多用于处理激光雷达点云数据,但是不限于激光雷达数据 https://mp.weixin.qq.com/s/Lysn4VcU-WXy6m0XyfrYDQ
  • 在配置点云标注软件PCAT时,最后一步出现问题。 问题描述: 并没有出现对应的点云场景。 原因分析: 暂时还不知道原因,重新安装了几次之后还是这个样子。 解决方案: 请大佬们指点!!! ...
  • 在上一篇文章中,本人在笔记本Y470+Win10+QT5.5+VS2013下成功编译了QGLViewer,那么时隔多日,今天本人应某小白的需求,将代码重新整理了一个简单的版本,也就是打开点云并显示。这一个简单的功能。 代码名字叫做...
  • 在表面建模的过程中,点云空间结构增强是一项重要的前提工作,包括数据进行降噪、重采样、表面法向量估计等。 由于数据采集设备的不断更新发展,三维点云的获取变得越来越便捷,设备包括激光测距仪、结构光扫描仪...
  • 点云处理工具软件xyz格式的点云数据进行下采样,滤波和三角化处理,xyz格式的点云数据文件及其格式另行说明
  • 点云显示模块 根据PCL中国官方论坛上田博士的四篇文章http://www.pclcn.org/bbs/forum.php?mod=viewthread&tid=223&page=1&extra=#pid750,在MFC环境中搭建了基本的点云显示模块。这是后续所有操作...
  • 点云处理工具 无需编译。目前github最新版本为2.11,但需要自行编译,看着就挺头大的。...也是一款集三维点云数据查看、编辑、处理为一体的三维点云数据配套软件,该软件支持多种三维点云数据格式。
  • 1.打开meshlab,将多片点云同时拖拽到meshlab中 同时加载点云的目的是...2.打开haFSCapture截图软件 3.在设置中设置截图快捷键 4.按ctrl+shift+alt+prtsc进行截图,然后按ctrl+L重复最后捕捉 5.保存所有截图 ...
  • 点云处理相关实用软件

    千次阅读 2019-03-09 16:17:40
    @[TOC](点云处理相关实用软件) ##cloudcompare 软件及源码下载http://www.cloudcompare.org/ 简易版使用教程https://blog.csdn.net/huihut/article/details/69399050 ##Geometry++ 教程:...
  • 采用VS+OpenGL平台自主开发的完整的点云模型逆向重构软件框架,已包含点云去噪、精简、三角化、法矢曲率计算、特征点线和面等功能。供同行交流学习,提升软件功能。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,026
精华内容 2,810
关键字:

对点云的软件