方东君,蒋 林,2
(1.武汉科技大学冶金装备及其控制教育部重点实验室,湖北 武汉,430081;2.武汉科技大学机器人与智能系统研究院,湖北 武汉,430081)
障碍物检测算法是移动机器人感知环境的重要手段,对机器人的安全及稳定作业至关重要,其主要分为识别和测量两个部分。目前障碍物识别方面的研究成果非常丰富,如常见的YOLO[1]、Fast RCNN[2]、SSD[3]等,这些算法各有优势,其中,SSD融合了YOLO和Faster RCNN的Anchor理念,并结合不同卷积层的特征作出预测,在识别精度和识别速度上得到很好的平衡。障碍物测量方法可以根据传感器对障碍物深度值的获取方式不同加以区分,常用的仪器设备有激光雷达、单目相机、双目相机和深度相机等,它们均可以通过直接或间接的方法获得目标深度信息。基于单目视觉的障碍物测量方法[4-5]是根据对极几何原理进行计算,但由于存在尺度等问题,其测量效果有待于进一步提高。基于双目视觉的障碍物测量方法简便且深度不受限,因此得到大量关注。Eppenberger等[6]在双目视差图上进行DBSCAN聚类和三维跟踪,结合了三维点云与二维占用栅格地图,能很好地识别和跟踪动态对象,该算法侧重于跟踪,而在目标分割和测量方面的精度较低。仇旭阳等[7]利用DenseNet网络改进YOLOv3模型以提升障碍物识别率,并采用立体匹配模型PSMNet得到双目图像的视差图,然后进行被测目标深度估计,其方法主要针对交通场景中的障碍物检测。刘中等[8]以区域为单位分别计算颜色对比度和深度对比度,根据得到的区域显著性值来分割目标,但这种方法在显著性区域边缘的精度会降低,导致测量误差增大。曹腾等[9]引入场景的坡度信息作为障碍物的判断指标以实现目标分割,但是当环境的纹理信息较弱时,视差图缺失严重,从而影响分割效果。另外,随着对检测精度要求的提高,基于双目视觉的障碍物测量方法所需配置和计算量也逐渐增大。深度相机虽然有测量距离限制,但基本能满足室内移动机器人的应用需求,而且可以主动获取物体的深度信息,其应用成本也更低。李彦玥等[10]提出了一种基于RGBD 深度相机的障碍物检测方法,在帧差法中加入阈值处理并采用最小矩形匹配法提取目标轮廓,检测成功率达到91%,但部分轮廓不清晰导致距离较远的物体检测效果变差。
根据上述分析,本文提出一种基于深度相机的障碍物检测算法,在识别障碍物的同时完成对障碍物的测量。该算法首先通过SSD网络模型得到包含障碍物的检测框,然后采用融合深度信息的目标分割策略,在保证实时性的同时从复杂的环境中分割出目标障碍物的形状并获得深度信息,然后提取出适合测量的障碍物表面最优区域进行尺寸计算。本文最后通过对比实验来检验所提算法的测量精度以及抗噪性和稳定性。
基于深度相机的常规测量方法一般是通过传统图像分割处理得到目标轮廓,再提取轮廓像素点对应的深度值进行计算。常用的图像处理方法有背景差分法[11]、GrabCut算法[12]和语义分割法[13]等,其中,背景差分法不适用于单个检测框的情形,GrabCut运算资源损耗大且不满足实时性要求,语义分割法重在区分对象而在轮廓边缘处的分割精度较低。另外,传统图像处理方法易受光照等影响,从而造成误提取,而且由于深度相机自身的缺陷,所得到的物体轮廓边缘处的深度值不一定精准。因此,本文将HSI颜色模型与深度信息融合到算法中,以期在满足实时性要求的同时实现更精确的目标分割。
1.1.1 图像预分割
摄像头获取的图像RGB信息经过SSD模型检测,在每一帧图像上皆可得到一个包含实际障碍物在成像平面上的投影信息的检测框。为了实现精确测量,需要对物体具有明显几何特征的边缘如棱边等进行检测,故在得到检测框后还要将框内的障碍物独立分割出来。
HSI颜色模型[14]建立在人类对颜色的感知系统基础之上,更符合人类的视觉规律。在HSI颜色空间进行图像分割可有效缓解光照等噪声带来的不利影响,提高分割的准确性与鲁棒性。
通过对多个检测框进行分析可以得知,无论背景有多复杂,检测框内的主要信息始终是目标主体。针对该特点,本文采用K-Means聚类方法[15]对目标进行预分割,主要分为两个步骤:
(1)将检测框内的RGB图像转换到HSI颜色空间中,为兼顾实时性与转换均匀性,采用下式计算:
(1)
S=Max-Min
(2)
(3)
式中:R、G、B分别为红、绿、蓝三种颜色通道值;Max和Min分别为图像单个像素点的R、G、B值中的最大值和最小值;H代表色调;S代表饱和度;I代表亮度。
障碍物图像经过颜色空间转换后的效果如图1所示。从图1(通道-S和通道-I)可以明显看出,柜子与背景中的凳子和门框的表示完全不同,与地面和墙壁也存在差别。
图1 转换到HSI颜色空间的障碍物图像
(2)将饱和度和亮度作为主要特征信息,采用K-Means算法进行聚类,最大类群即为检测框中的目标障碍物。
通过上述步骤处理后的效果如图2所示,可以看出,虽然对目标边缘部分的提取不够精细,但整体上还是概括出了目标障碍物的特征。
(a) 检测框 (b) 预分割图
1.1.2 融合深度信息进行精分割
下面借助深度图中含有的几何信息对目标障碍物进行更细致的分割。从经过K-Means算法处理后的预分割图中可以得到目标障碍物大概的像素范围,以该范围内的最近点为中心,用八邻域搜索法[16]进行区域生长搜索,将相邻深度差值符合一定梯度的连通区域分割出来,从而得到更精细的分割图像。
对于一个连贯的物体,无论是在RGB图还是在深度图中,属于该物体表面的相邻像素一定存在着联系,因此这里假设同一物体表面投影在成像平面上的相邻像素点对应的深度值一定是在梯度内连续变化而不是跳跃式变化的,若出现较大突变则表明图像中该处对应着实际障碍物的边缘或是该障碍物与其他物体的分界处。
如图3所示,用长方体表示通过深度相机获取的障碍物深度信息,任取一个截面进行数据分析。图3(a)和图3 (b)分别展示了同一障碍物在不同姿态下的深度值与对应像素点的关系,图中粗线代表深度值被投影到像素平面u轴的部分,将该部分各点深度值d与对应像素平面的u坐标逐一投影得到d-u(深度-像素)图,其中,dmax表示墙体的最大深度值,dn和d0分别表示相机视场内障碍物最远和最近点的深度值。
(a) 姿态一 (b) 姿态二
对比图3(a)和图3(b)中的两种d-u函数关系可以看出,虽然由于视角不同,两个姿态下的深度值与像素的映射关系发生了变化,但相同点在于,两个姿态下dmax与dn对应点之间有明显的跳跃,而d0到dn之间深度变化连贯,即便在长方体不同侧面的变化梯度不同,但深度值始终是连续的。从数学层面可理解为,该线段内部处处可导,且各段直线函数满足式(4)。
y=ax+b
(4)
式中:y为深度值;x为像素平面u值;a、b分别为直线对应的斜率和截距。
经过K-Means处理可得到与实际情况相近的目标障碍物像素范围,但其边缘精度并不高,此时通过筛选可以得到目标区域深度最小值,也即障碍物距离相机最近点。结合上述思路,对于该区域,以最近点为中心进行八邻域搜索,若相邻像素的深度差值超过阈值t则视为离开目标区域。该环节主要分为3个步骤:
(1)将最近点作为当前点,以该点为中心,搜索八个方向相邻的未标记且在有效区域内的子像素点。
(2)检测子像素点与当前点的深度值之差是否大于阈值t,是则将子像素点标记为0,否则标记为1,表示该点与当前点连贯。
(3)将连贯的子像素点加入新的中心点搜索队列,重复步骤(1)和步骤(2),直到有效区域内全部像素点标记为0或1。
经过以上步骤可以得到更为细致的目标区域,将其作为掩码与检测框图像进行融合,可以更清晰地观察其效果,如图4所示。经过对比可以看出:图4(b)虽然对障碍物的细节保留较好,如缝隙、纹理等,但对象的最外围边缘由于与部分背景高度相似导致分割不够精细,若仅据此进行测量会导致极大的误差;通过对深度值进行区域生长搜索得到的图4(c)不仅保留了图4(b)具有的细节优势,还对物体的轮廓保留得较好,而且与背景相似的外围部分也能被精细分割。
(a) 检测框 (b) 预分割图 (c) 精分割图
由上述分析可知,将基于饱和度和亮度的K-Means分割与基于深度值进行区域生长搜索相结合,可以在复杂背景下较好地分割出障碍物投影在像素平面上的有效像素点集合,该方法不仅对图像噪声的抵抗性强,而且能得到较为完整的目标边缘轮廓与内部特征。
在室内移动机器人作业环境中,机器人所处的二维平面地图中障碍物的尺寸对机器人的作业有重大影响,而垂直于该平面的轴向尺寸(即物体的高度)对于室内作业影响不大,故本文着重测量障碍物在二维投影平面上的各表面宽度。
通过前面的目标分割算法可以得到检测框内障碍物投影的有效像素集合,为测量出该障碍物的最大尺寸,对目标分割图逐行进行像素统计,选择像素最多的一行进行测量,若最后测量无效则根据像素排列第二的行次进行测量,以此类推。
为更直观地表达上述方法,统计了一张椅子经目标分割后(图5(a))的像素分布,如图5(b)所示。从图5(b)可以看出,第273行的有效长度最长,后续将主要针对该行进行特征点的提取和转换,若转换出的中间点超出该图的有效范围,则根据有效长度下降原则选择另一行进行测量。
(a)目标分割图 (b)像素统计
图3中的d-u函数图不仅体现了相邻像素点的深度值关系,还可以从函数曲线中得出该行中的拐点,即在所对应的深度值曲线中除起点和终点之外的极值点,该点可对应到实际障碍物表面的棱边特征。
根据上述极值点将该线段划分为多个子线段,每个子线段皆代表一个平面。至此得到适合测量的参考线,可以根据该线段集合测量出障碍物出现在相机视场内的各个面的宽度。
在实际应用中,即便是与机器人平行的平面,经深度相机采集到的有可能是参差不齐的点集。在得到的各个子线段中,起点和终点的深度值对最终的测量精度有很大的影响,故本文对各子线段对应的深度数据利用最小二乘法进行线性拟合,根据深度数据的规律找到合适的函数表达式来预测各像素点对应的真实深度值,并根据得到的函数关系计算出该线段起点和终点的深度值。
以障碍物深度投影图中的某一子线段对应的d-u数据分布为例展示线性拟合的效果,如图6所示,其中,虚线为数据点分布,直线为线性拟合后得到的函数关系。从图6可以看出,起点到终点之间的深度值分布并不均匀,且无固定规律,但整体变化趋势依然与该线段对应的障碍物表面特征相符合,拟合后的函数直线到每个数据点的距离和最小。在已知投影点像素坐标的情况下,根据该函数可得到对应的深度值。
图6 d-u函数关系拟合结果
由上述步骤得到符合障碍物表面特征的测量线段,计算出线段起点和终点的像素坐标及深度值。通过坐标转换,借助起点求出三维坐标下与终点等高的中间点,若该中间点在像素平面的坐标依旧在目标分割得到的有效区域内,则该中间点与终点的欧氏距离即为障碍物对应表面的实际宽度,否则选择其它区域为测量线段。
综上所述,本文所提出的障碍物检测算法的整体流程如图7所示。
图7 本文算法流程图
本文实验在长10 m、宽5 m的室内环境中进行,如图8(a)所示,内部设置有靠墙、正、斜等多姿态放置的Cabinet、Chair、Container以及Door等多个目标,且在不同视角下会得到不同的图像,符合室内移动机器人作业环境。使用的轮式差分机器人由实验室自主搭建,如图8(b)所示,其宽为0.33 m、高为0.45 m,主要由Kinect v2深度相机、激光雷达等组件构成,相机最大帧率为30 fps,可以满足移动机器人的常规导航要求。为验证所提算法的真实效果,本文实验中并未启动激光雷达功能。
实验步骤为:①将本文算法程序烧录至机器人,使其能在实验环境中移动,在不同位置实现检测;②根据SSD算法得到目标检测框,然后进行
(a)实验环境 (b)实验设备
图像分割,并将本文目标分割算法与GrabCut算法在耗时和分割效果上进行对比;③制造遮挡和强光照射的环境,验证本文目标分割算法的抗噪性;④对障碍物进行实际测量,展示效果并计算误差。
2.1.1 本文算法的分割效果
本文提出的融合深度信息的目标分割算法会对深度相机捕捉到的每一帧图像进行处理,用SSD网络模型处理后在全图中会得到多个障碍物的检测框。此环节为验证融合深度信息的分割算法效果,故选择Cabinet和Chair两个障碍物作为对象,从多个角度进行分割,结果如表1和表2所示。每个对象均选择了3个不同的角度,每个角度的背景不同,如光照条件、阴影等,从而提供了较为丰富的验证环境。
从表1和表2可以看出,多角度下的目标分割均较为完整,对阴影部分的区分效果良好,这是因为阴影部分与目标本体在HSI颜色空间下的饱和度和亮度存在较大区别,所以在边缘处理上的整体效果较好。但是,在部分受光照影响较大的区域分割效果略差,如表1中角度3的Cabinet顶部,这是由于强光过度干扰了HSI模型中的亮度信息,并且强光还会影响本文使用的Kinect v2相机的深度估计,而图像上的一般噪声对分割效果影响不大,如该图右侧。总的来说,本文融合深度信息的目标分割算法在不同背景下对不同对象都能进行较为完整的分割,且能克服一定程度的噪声影响。
表1 Cabinet多角度分割结果
表2 Chair多角度分割结果
2.1.2 本文算法与GrabCut算法的分割效果对比
本文目标分割算法主要是在单帧图像中分割出对象,而目前单帧分割算法中最常见的是GrabCut算法[17],它使用高斯混合模型对前景和背景建模,利用了图像中的纹理(颜色)信息和边界(反差)信息,只需要少量的用户交互操作即可得到比较好的分割结果,故将其作为检验本文算法计算速度和分割效果的对比算法。
在良好的实验环境下不能充分体现分割算法的性能差异,因此为了更直观地展现分割效果,直接挑选出有噪声干扰的多个目标图像进行实验。经过SSD网络模型对图像处理后,机器人可以得到各障碍物的检测框,然后分别用GrabCut算法和本文算法进行处理,单独提取出4种对象的分割效果,如表3所示,其中Door有close和open两个状态,虽是同一物体,但不同状态内部的颜色和深度值均有变化,对分割效果的衡量有重要意义,同时,表3中Container与其他棱形对象不同,扩展了算法验证中目标分割的对象范围。
由表3可以看出:Cabinet对象原图的顶部和底部分别与墙壁及地面颜色接近,在GrabCut算法分割得到的图像中,这两处均未与背景分割开来,且右上方与背景产生了误分割,由于本文算法是基于饱和度和亮度的聚类分割,而Cabinet顶部背景和对象的深度值有明显差别,因此尽管边缘处分割略粗糙,但整体分割效果较好;Chair目标存在镂空部分,GrabCut处理时将背景中与Chair颜色相近的踢脚线部分也认为是同一对象,且对地面也出现了误分割,而本文算法中的聚类分割可以较好地将Chair与地面分割开来,同时踢脚线部分的深度值与对象表面的深度值之间的差值能进一步提高本文的分割效果;Door_close整体深度值较为连续,没有出现跳跃性变动,检测框也未包含整个对象,GrabCut算法处理时在对象左侧和地面处产生了误分割,本文算法中的K-Means聚类则较好地将对象分割出来;Door_open中部属于走廊部分,深度值变化明显,此时GrabCut算法将对象外侧部分分割得较好,但对象内部的非相关环境未能区分,而本文算法则将外部和内部都进行了较好的分割,能得到完整的对象信息;Container虽无棱边信息,但物体表面深度值更连续,无明显突变,而目标与背景之间的深度差值在圆的象限点处十分明显,故本文引入的深度信息可以将其与相似背景处分割开来。
表3 本文算法与GrabCut的分割效果对比
本文算法与GrabCut算法处理上述对象耗费的时间统计如表4所示,当对象环境复杂度增加时,两个算法运行耗费的时间都会增加,但整体上本文算法的运行时间更短,均在0.5 s以内,而GrabCut算法耗时变化较大,且均在1.7 s以上。
表4 本文算法与GrabCut的运行时间对比
综上所述,与常见的GrabCut算法相比,本文融合深度信息的目标分割算法的分割效果更好、耗时更短,其在目标图像镂空等复杂情况下也能较清晰地分割出对象轮廓,并且随着环境复杂程度的改变,其运算时间变化较小,即算法的稳定性较好。
为进一步检验本文目标分割算法的抗噪性能,针对前文中Cabinet对象,制造遮挡和强光照射的环境,以此对目标分割进行干扰。不同条件下采用本文算法的分割效果列于表5,其中,普通条件是正常环境下无遮挡且光照影响较低的环境;遮挡条件是将另一障碍物置于检测对象和相机之间,以掩盖对象在像平面的部分投影;强光照射条件则是从相机一侧往对象一侧施加照度为6000 lx的强光源,以干扰对象在像平面上对应投影点的值。
从表5可以看出:在遮挡条件下,由于K-Means聚类处理可以将遮挡物中与对象饱和度明显不同的部分进行分割,并且对象与背景和遮挡物之间存在深度差值,故本文分割算法在此条件下分割效果较好;在强光照射条件下,对象无论是在RGB颜色空间还是在HSI颜色空间都受到了干扰,故而影响了本文算法中的聚类分割效果,虽然结合深度信息后能大致分割出对象轮廓,但边缘部分线条十分粗糙。
通过上述分析以及前面与GrabCut算法的对比可知,本文提出的结合深度信息的目标分割算法在一般情况下分割效果很好,对阴影、相似色彩的背景等噪声有较强的抵抗能力,但是当噪声过强时其分割效果仍会受到影响,即不能完全抵消噪声干扰。
表5 本文算法的抗噪性能测试结果
经过目标分割可以得到仅含对象信息的图像,据此进行测量。本实验提取了3个对象的测量效果图和测量值,如表6所示,其中,将根据测量线段起点求解得到的三维坐标下与终点等高的中间点用小圆表示,代表实际测量起始点,将测量线段末尾点用大圆表示,代表实际测量终点,两点之间用细线连接,表示所测量部分在实际障碍物表面上的真实距离,线段上的数字代表该段距离的测量值,真值是用仪器对障碍物尺寸进行实际测量后得到的数值。
下面将机器人围绕障碍物转动,从多个角度对同一障碍物进行测量,随机取10次测量结果,如图9所示,图中还给出了对应的真实值。经计算得到图9(a)~图9 (c)中3个对象的综合测量精度分别为98.65%、98.84%和98.47%。结合表6和图9可以看出,本文方法可以适应多种条件下的障碍物检测,算法获取的测量点在有效区域以内,测量线段符合障碍物表面的实际特征分布,测量精度较高且较稳定。
表6 障碍物测量结果一
(a)Cabinet
(b)Chair
(c)Door
本文提出了融合深度信息的目标分割算法和基于该算法的室内障碍物测量方法,其中,目标分割算法利用了HSI颜色空间更符合人类视觉规律的特性,并采用K-Means聚类算法基于饱和度和亮度两个信息进行预分割,再将深度信息与像素坐标进行整合,模拟出物体几何信息进行区域生长搜索,在通过SSD模型处理得到的检测框中实现了对目标的精确分割,分割效果好,且算法具有较强的抗噪能力;在障碍物测量过程中,首先对目标分割结果进行最优区域划分,并用线性拟合提高精度,然后根据适合于测量的最优线段的起点、终点以及等高点在三维坐标下的欧氏距离得到目标尺寸,综合测量精度达到98.4%以上且性能比较稳定。