徐海璐,黄志伟,戎新萍
(1.南京工业大学浦江学院机电学院,南京 211200;2.开沃新能源汽车集团股份有限公司中央研究院,南京 211200)
学者对3D模型数据位姿求解进行过很多的研究,早期的求解方法比较典型的是BESL等[1]提出的最近迭代点算法(ICP),该方法在数据量较少、数据位姿相差较大情况下匹配精度不高[2],在匹配点云和源点云某些特征平行情况下,导致位姿在平行自由度上滑动的情况。根据测点及其邻域点估算每个点的曲面法矢来进行两组点配准,但是点云邻域搜索复杂度较高,在大型点云数据场景中计算速度受到限制[3]。YANG等[4]提出一种基于语义分割点的多维度配准技术,该方法适用于竖直线较多的的场景,如路边的树木及桥梁等。若场景内该特征较较少,则配准精确度难度增大[5]。本文提出一种基于局部特征的点云模型位姿求解方法,在求解速度和精度上得到了一定的提升。
基于局部特征的多源数据匹配位姿求解方法的程序开发流程如图1所示,首先,搭建深度相机动态扫描系统获取目标物体三维点云数据;其次,对点云数据使用基于L+梯度边缘线提取算法输出点云模型边缘轮廓特征;然后,对输出的轮廓特征数据建立目标特征数据库;最后,对动态获取的点云数据特征进行数据处理,将获取的特征和数据库进行匹配,找到相同特征后通过点云匹配算法实现位姿计算,从而准确获取模型位姿。
图1 程序开发流程图
三维点云数据由(x,y,z)坐标组成,二维图片数据由(x,y)坐标及灰度值构成。点云数据的轮廓线方向和垂直于轮廓线方向建立X轴和Y轴坐标系,Z轴大小可以对应像素灰度值,从而可以将点云数据转换为二维像素灰度值数据,结果如图2所示,图2a是传感器采集的三维点云数据,图2b图是通过算法提取获得的三维点云轮廓数据,图2c图是将三维轮廓数据转换为二维图像数据。
(a) 点云数据 (b) 点云轮廓数据 (c) 像素灰度数据图2 点云轮廓信息提取
点云轮廓提取算法原理如表1所示,整个矩阵表示轮廓仪扫描得到的三维点云数据,每个数据表示一个点,其中ann值是点云数据高度值。
表1 点云轮廓提取算法原理
首先,将表中ann点分别和右侧点和上侧点进行对比(如a11分别与a12和a21进行比较),如果差值大于一个阈值说明模型存在高度差,也就是模型特征边界。通过八邻域点高度值坐标和然后求平均值,并通过数据模型排序计算区域内梯度差最小值(grademin)和最大值(grademax)来设定阈值。通过这种原理可以获取点云数据轮廓。
然后,算法对点云数据中的点进行比较,如果两个点之间的差异在grademin和grademax之间,则将相应的标记设置为255,表示这些点位于轮廓上。
最后,算法将这些点的坐标值保存在Vector中,并返回作为输出,得到三维点云轮廓数据的坐标值和二维像素轮廓坐标值。
点云轮廓模型还需转换为二维灰度图,可以通过将点云数据映射到二维平面并为每个像素分配灰度值来实现。首先,对输入的点云数据进行预处理(如去噪及光顺处理);然后,将点云数据投影到二维平面,并将投影后的二维平面上的点分配到一个深度图中;为了生成灰度图,需要对深度图进行归一化,最后,使用归一化后的深度图创建灰度图。
轮廓提取算法测试结果如表2所示。
表2 轮廓提取算法测试结果
轮廓特征数据库是一种用于存储和管理物体轮廓特征信息的数据库,在图像识别、模式匹配和计算机视觉等领域具有重要作用。
通过提取和分析物体的几何特征,例如直线、圆形和封闭区域等,可以更准确地识别和定位物体。
轮廓特征数据库不仅存储物体轮廓信息,还包括各个样本在不同姿态下的Hu不变矩特征,这些特征用于后续特征识别。
提取轮廓的目的是为了提取物体的几何特征,因为空间几何物体在空间变换过程中几何特征具有空间不变性[6]。为了准确获取物体的位姿信息,首先建立特征与特征之间的对应关系,再建立点与点之间的对应关系[7]。
物体表面的凸台、孔洞、斜面等信息是识别物体的重要特征,我们需要将这些特征信息组织起来建立数据库。数据库存储格式如下所示:
DataBase
Index 0
Area 1559
PixelInfo 269
12 49
13 66
45 32
20 88
……
PointNumber 269
81.625 1.233 123.883
23.654 1.419 124.775
21.331 1.654 121.369
90.002 1.771 120.785
……
以上数据库数据结构分为3部分:首先是数据信息包括DataBase(数据库标志),Index(轮廓索引值),Area(轮廓面积)。第2部分轮廓像素信息包括:PixelInfo(像素点数),轮廓像素坐标值。第3部分是像素信息对应的点云数据坐标:PointNumber(点云数据个数),点云坐标值。
如图3所示,当扫描仪扫描部分点云数据之后需要到数据库中搜寻匹配特征数据。图3a是所有轮廓数据构建的特征数据库,图3b是物体经过平移旋转几何变换后激光轮廓仪扫描得到的轮廓数据,图3c是激光轮廓仪扫描得到的部分数据。
(a) 轮廓数据库 (b) 旋转后数据 (c) 扫描部分数据图3 特征数据库
如何从数据库中找到对应的特征是数据匹配的关键因素,已知数据结构中存储的数据分别是特征的索引和面积,二维特征像素的x,y坐标值(按轮廓顺序排列),可以借助相同轮廓特征值相等进行特征匹配。
矩特征主要表征了图像区域的几何特征又称为几何矩,由于其具有旋转、平移、尺度等特性的不变特征,所以又称其为不变矩[8]。
在图像处理和计算机视觉领域中,Hu矩是一种重要的几何特征,用于表示物体的形状并进行分类等操作。Hu矩具有旋转、平移和尺度不变性,因此常被用作目标识别的特征。通常情况下,构建Hu矩特征是七维,以提供更高的识别率和鲁棒性[9]。以下是七维Hu矩特征的计算方法和相关解释。
首先,需要计算归一化中心矩,如下所示:
ηij=(μij)/(μ00)[1+(i+j)/2]
(1)
式中:ηij表示归一化中心矩,μij表示中心矩,μ00表示零阶中心矩,i+j≥2。
接下来,计算七维Hu矩特征:
式中:φ1~φ7分别表示七维Hu矩特征。这7个特征可以充分描述物体的形状信息,并且具有良好的旋转、平移和尺度不变性。通过计算物体的七维Hu矩特征,可以在轮廓数据库中准确地找到与扫描得到的部分数据匹配的特征,从而实现物体识别和位姿估计等应用。
要计算每个模型特征的Hu矩值,首先要将点云轮廓模型进行特征分解,如表3所示。
表3 模型特征分解
Hu矩算法结果验证如表4所示。锯齿模型的特征被细分为3个独立的轮廓特征:外部锯齿轮廓、内部圆孔轮廓和边界轮廓。为了提取这些轮廓的特征,本文采用了Hu矩算法,该算法能够为每个轮廓图像生成相应的七维Hu矩特征向量。当系统再次扫描锯齿模型时,能够实时地获得动态特征轮廓对应的Hu矩特征向量。
表4 Hu矩不变性验证
为了量化轮廓特征之间的相似度,本文计算了两个Hu矩特征向量之间的欧几里得距离。所得到的距离值可作为衡量轮廓特征匹配相似度的关键指标。在距离值趋近于0时,说明轮廓相似度较高;而在距离值远离零时,表示相似度较低。
本研究通过对锯齿模型的轮廓特征进行拆解,并利用Hu矩特征向量之间的欧几里得距离来衡量匹配相似度,实现了一种更为精确的特征匹配方法。这种方法在实际应用中具有较高的准确性和稳定性,为图像处理和模式识别领域的研究提供了新的思路和方法。
计算两个Hu矩特征向量之间的欧几里得距离可以使用以下公式[10]:
D=sqrt(∑(i=1 ton)[(xi-yj)2])
(2)
式中:D表示欧氏距离,xi和yj分别表示第1个和第2个Hu矩特征向量的第i个分量,n表示特征向量的维数,在本例中,n=7。
软件库基于OpenCV2.0,运行平台Windows10 64位,基于C++语言Visual Stdio2013。
传统点云位姿计算大都基于ICP匹配直接进行位姿求解,对于大量点云数据处理不仅耗时过长难以满足工业实时性需求而且算法有时会陷入局部最优解准确性得不到保证。本文提出一种在基于模型特征基础上先进行模型特征匹配,特征匹配上之后可以大大缩小目标点云匹配对象的范围,在局部范围内再进行F-ICP配准,这样不仅速度得到提升,位姿求解准确性也可以得到提升。
F-ICP(fast iterative closest point)算法是ICP算法的一种改进,主要针对计算速度和匹配精度进行了优化。F-ICP算法在每次迭代时,通过KD树等高效的数据结构对点云数据进行最近邻搜索,从而加速配准过程。同时,F-ICP引入了迭代终止条件和权重系数等策略,以降低计算量并提高配准精度。基于模型特征进行匹配可以得到对应模型的中心位置和匹配范围,从而可以求得两模型的平移矩阵,要准确求得模型的姿态信息,还需要通过F-ICP匹配方法求两模型的旋转矩阵。图4为本文提出的F-ICP匹配算法总体执行过程[11]。
图4 F-ICP算法总体执行过程
点云源数据是预先通过激光轮廓仪扫描模型获取三维点云数据,然后对三维点云数据进行预处理,通过离群点过滤,降采样和距离分割的方法得到预处理后点云数据;接着通过随机采样一致性算法提取平面特征,将平面点云分割出来留下扫描物体点云数据;接着通过欧式聚类的方法将模型点云数据聚类出来,然后用L+算法提取聚类点云特征边缘轮廓,通过三维点云到二维像素一一映射可以得到模型二维图像数据;将二维图像数据做特征分解,求取单个特征的Hu矩值,构成模型图像特征数据库[12]。传感器扫描多个不同形状模型,通过相同的流程生成多个图像特征,不断丰富完善图像特征数据库。这个过程可以借助机器学习方法不断提高数据库的数据量。当激光轮廓仪传感器再次扫描待求取位姿物体,可以获得三维点云数据,然后同样要进行点云数据预处理,通过离群点过滤去除漫反射导致的野点,通过降采样方法减少因点云数据过密产生处理延时,通过距离分割的方法将扫描物体视野之外的点云删除掉,从而降低数据处理量提高数据处理速度[13]。一般扫描物体会置于平面上,所以通过随机采样一致性算法提取平面特征从而将平面点云和物体点云数据分割开,接着通过欧式聚类的方法将聚类模型点云数据,然后用L+算法提取聚类点云特征边缘轮廓,通过三维点云到二维像素一一映射可以得到模型二维图像数据。将二维图像数据做特征分解,求取单个特征的Hu矩值,将多个特征的特征值构成此目标物体二维图像数据结构;将单目标特征数据和图像特征数据库进行模型特征匹配;从而锁定特征数据库中相对应的二维模型特征数据,接着找到对应模型的三维点云数据;然后将待检测预处理后的点云数据和模型数据库中匹配出来的三维点云数据进行F-ICP精配准,从而可以求取两模型的旋转平移矩阵,即可得到待求模型的位姿[14]。
通过将三维点云降维成二维图像数据不仅可以充分利用计算机GPU图像加速功能,提高数据的处理速度,而且充分利用图像处理中Hu矩不变性原理,将源数据特征和数据库多个特征进行预匹配,从而锁定目标物体,从而将一对多的匹配问题转换为一对一的位姿求解问题,大大简化了传统ICP点云数据配准的数据量,并且提高了精配准的精度[15]。
图5是基于特征的F-ICP轮廓点云配准,图5a图中白色点云数据是模型数据库中的点云数据,灰色点云数据是扫描仪扫描后经过预处理后的点云数据。在进行精配准前已经通过二维特征粗匹配,从而找到对应的模型数据进行配准。图5b是精配准后的点云状态,可以看出两组点云匹配后几乎重合,达到了较好的匹配精度。
(a) 轮廓模型配准前 (b) 轮廓模型ICP算法迭代后图5 特征轮廓ICP配准
为了测试在点云数据模型位姿相差比较大的情况下配准效果,测试使用较大位姿偏量的点云模型进行F-ICP算法匹配[16]。由图6a可以看出在实际应用过程中,两物体有位置姿态相差很大,通过F-ICP二维特征数据粗匹配将模型数据拉近。从图6b可以看出在模型数据位姿相差比较大的情况下也可以得到很好的匹配下效果。
(a) 原始扫描数据 (b) 匹配结果图6 远距离模型配准测试
配准精度计算方法是通过输入实时获取动态待配置点云数据和静态点云PCD模型,输出配准之后点云模型总距离和平均距离。开发平台基于Windows 10,64位系统,开发语言C++,平台基于Visual Stdio2013 Windows 32,数据库基于PCL点云数据库。
为了验证所提F-ICP算法在速度和精度上的性能优势,本文设计了以下实验:实验设置:我们选取了3组不同形状的模型数据,每组模型数据包括1个参考模型和3个待匹配模型。实验分别采用传统ICP算法和F-ICP算法进行模型配准,并对比两种算法的运行时间和匹配误差。实验结果如表5所示。
表5 ICP算法和F-ICP算法对比
本文研究目标基于局部特征的点云数据匹配和位姿求解方法,最终对原文的内容总结如下:
(1)研究过程中首先建立扫描仪动态扫描系统,实时输出目标物视场范围内三维点云数据,接着对点云进行预处理,输出处理后的点云数据,然后基于欧式据类算法提取目标物点云数据,其次对点云特征数据使用基于L+梯度边缘线提取算法输出点云模型边缘轮廓特征,由文中可以看出4种模型提取后的边界特征梯度明显,投影后二维特征可以被准确识别。
(2)输出的轮廓特征数据建立机器学习目标特征数据库,通过给出特征数据库内模型特征Hu矩不变性验证,然后对动态获取的点云数据特征进行数据处理并将获取的特征和已有特征数据库数据进行匹配,找到对应的点云模型数据。
(3)最后通过F-ICP点云配准算法求解旋转变换矩阵,从而准确获取模型位置和姿态,通过仿真结果证明了本文方法可以准确找到数据库中对应模型,并且根据局部特征的多源数据匹配算法可以有效对输入点云数据进行位姿计算。