王德鑫,常发亮
山东大学 控制科学与工程学院,济南250061
自从计算机视觉技术发展以来,动态目标检测就一直是研究热点之一。动态目标检测的核心问题是如何在一段连续的图像中检测出运动的物体,而不受运动背景的影响。一旦运动物体被检测到,诸如目标分类[1]、行人重识别[2]、车辆重识别[3]等技术就可进行后续应用。目前,动态目标检测在智能交通、安全监控、医学和机器人视觉导航等领域都已经有了非常广泛的应用。然而,目前的运动目标检测技术依然存在两个关键问题:首先,用于安全监控领域的运动目标检测几乎都通过固定在支架上的摄像机拍摄视频[4-5],即使摄像机可以绕固定点运动,单个摄像机可监控的场景也局限于其所在的小区域,使得安全监控的成本相当大。其次,应用于运动机器人领域的运动目标检测技术多搭载在轮式机器人上[6-7],如车站的电子巡警等,这就使得类似的机器人必须按照设计好的路线进行移动,一旦遇到崎岖不平的路面或楼梯,就几乎无法运行。为了解决第一个问题,需要让摄像头动起来,机器人载体是首选。为了解决第二个问题,机器人必须能够在崎岖的路面平稳运行,足式机器人是首选。足式移动机器人凭借连杆构型的腿使得足地接触点非连续,在非结构化的地表行走,具有良好的地形适应性,并且连杆结构的末端活动空间大,因此足式机器人的越障能力强,通过性好[8-9]。综上,基于六足机器人设计了动态目标检测与跟踪系统,并针对实验过程中出现的六足机器人机体抖动、图像场景变化大的问题,提出区域合并算法,实现在六足机器人运动过程中对运动目标的精确检测。
在六足机器人运动过程中,可能会产生机体抖动、图像场景运动较大的问题,需要更加精确的动态目标检测方法。传统的动态目标检测主要基于运动补偿法[10]和光流法[11]。以往的运动补偿方法都存在将非刚体运动目标检测为多分散区域的问题。光流法不需要对图像进行预处理,且能处理运动目标重叠、遮挡等问题,但是计算量大。Wang等[12]通过结合频域和时域的思想来优化时域运动目标检测算法的速度和准确性,但是对复杂场景中的运动目标检测精度较差。Wang等[13]采用首尾相接的金字塔形LK光流法对快速、大型运动目标进行检测,但是存在计算量较大的问题。Zuo等[14]采用改进的高斯混合背景减法,在改善运动目标检测的同时,降低噪声和动态背景干扰。
算法首先通过对称匹配和自适应外点滤除来提高运动补偿的精度,并通过区域合并方法实现了对非刚体运动目标检测的精确检测。其次,对比了目前经典的目标跟踪算法,设计了基于KCF(Kernel Correlation Filter)的六足机器人自适应跟踪算法,结合无线通信、人机交互等技术,开发了一套具有感知能力、执行能力的运动目标检测与跟踪系统。
六足机器人在运动过程中无法精确保持机体平稳,导致所拍摄的图像场景变化剧烈,而运动目标的整体位置变化较小,目标容易被检测为多个离散小区域,影响动态目标检测精度。针对此问题,首先提出区域合并算法将多个离散小区域合并为一个整体,并结合对称匹配、自适应外点滤除算法,保证机器人在机体不稳定的情况下仍能达到对运动目标的精确检测。
通过SURF(Speeded Up Robust Features)特征[15]检测相邻两帧图像中的特征点,使用KNN(K-Nearest Neighbor)[16]对连续两帧中的特征点进行对称匹配,筛除大部分错误的匹配点对。筛选后的特征点对包含静止背景点和运动前景点,运动的前景点会使运动补偿产生较大误差,使用自适应外点滤除[17]筛除前景点对,只保留背景点进行单应矩阵变换。高斯滤波后,通过帧差法粗略去除背景,并使用形态学操作去除部分离群点和较小的噪点。
当场景中存在运动的非刚体目标时,目标不同部分的运动存在差异性,使得一个目标被检测为多个分散区域,且当多个运动目标距离较近时无法区分。使用区域合并算法解决上述问题。
(1)帧内合并。若同一帧内的两个区域质心小于阈值th1且HSV颜色空间的欧氏距离小于阈值th2,则将这两个区域设置为连通域。
(2)帧间合并。若相邻帧内两个目标的质心距离小于阈值th3且HSV空间欧式距离小于阈值th4,设这两个区域为等价区域对。迭代后可在连续两帧内获得多组等价区域对为等价区域对数。迭代计算任意两对等价区域对的运动一致性(Motion Consistency,MC),若两区域对中在当前帧的区域质心距离小于阈值th5且运动一致性小于阈值th6,则将这两个等价区域对中在当前帧的区域连接为连通域。
运动一致性的计算公式如下:
其中,i,j=0,1,…,I,dx和dy分别为等价区域对的质心从第n-1帧到第n帧在x方向和y方向的移动像素距离。
区域合并的伪代码如图1。
图1 区域合并算法伪代码
区域合并算法结果如图2,运动目标在区域合并前被检测为多个离散区域,经区域合并后的结果为一个完整的目标。算法内的阈值参数全部由VTB-100数据集[18]中的视频测试得到(th1=30,th2=3 000,th3=30,th4=8 000,th5=50,th6=30),动态目标检测流程如图3。
图2 区域合并结果对比
图3 动态目标检测流程
与轮式机器人的运动步态规划不同,六足机器人的移动存在步态周期,即腿足的抬起、转动和落下,耗时较长且控制复杂。在三角步态的基础上,设计了自适应跟踪方法,根据偏移距离自适应调整跟踪速度,始终保持目标在视野中央附近。
表1对比了目标跟踪的经典算法,测试对象为VTB-100数据集。视频1(V1)背景简单,目标较大且特征明显;视频2(V2)背景简单,目标较小且与背景颜色接近;视频3(V3)背景与目标颜色相近,有多个目标,目标较小且存在遮挡;视频4(V4)背景简单,目标特征明显,但形状和尺度变化较大;视频5(V5)背景复杂,目标较多且存在目标遮挡。1表示在跟踪过程中无跟丢现象,0表示有跟丢现象。结果显示,KCF算法[19]对形状和尺度变化具有较强的鲁棒性,且帧率较高,符合六足机器人跟踪运动目标的需求。
表1 经典跟踪算法比较
为保证六足机器人在爬行过程中稳定,六足机器人的机体框架采用菱形结构,具有以下优点:(1)有效减少了各腿足在行走时的碰撞;(2)提高了机器人整体结构的稳定性;(3)增大了机器人腿部的转动空间。同时为降低机器人总体重量,采用高强度铝合金材料。6个腿部结构在机体两侧对称安装,机器人腿部为三自由度关节,各关节由舵机驱动。数字舵机可实现关节在正负90°范围内运动,使腿部有较大的灵活性。通过控制相应关节上舵机的动作,可使机器人完成前行、转弯等动作。腿部结构和机体一样采用高强度铝合金。除主要硬件结构以外,摄像头、云台、控制器、电源等模块全部安装在机体中心轴上,使机器人重心位于机体中心轴上,最大程度保证机器人在爬行过程中的稳定。六足机器人结构如图4所示。
图4 六足机器人
综合考虑六足机器人的运动速度和稳定性,采用占地系数为0.5的三角步态[20],即每条腿的接触地面时间占步态周期的1/2。将机器人的6个腿部结构分为R和L两组,步态周期分为R抬升、L前移、R落下、L抬升、R前移、L落下6个步骤。首先将上述6组动作在实验环境中分别编程实现并保存为函数,按顺序组合后运行可实现六足机器人的直行。转弯步态包括沿中心转弯和沿外点转弯。采用沿中心转弯,即机器人直行停止后再转弯,实现过程与直行步态类似。
设置偏移阈值区域,区域中心为图像中心,区域长宽均为图像长宽的1/4,跟踪目标出现在阈值区域以外时,六足机器人和摄像头云台开始运动。建立机器人与摄像头云台单次运动的转角与轴向偏移量,当跟踪目标位于阈值区域边缘时,转角弧度为0,当跟踪目标在图像边缘时,转角弧度为。图5为跟踪偏移示意图,图中的取值范围(单位:像素)分别是(-320~320,-240~240)。
图5 跟踪偏移示意图
六足机器人一次转弯的弧度dθ与x轴偏移量dx的关系如式(2)所示:
摄像头云台一次转动的弧度dα与y轴偏移量dy的关系如式(3)所示:
系统结构如图6所示。基于六足机器人的动态目标检测与完整跟踪系统结构由操作人员、处理器和六足机器人组成。
图6 系统结构
系统架构如图7,主要包括操作系统层、驱动层和硬件层三部分。
图7 系统总体架构
硬件层由六足机器人主体、相机、电机和电源组成。主体采用菱形结构,驱动关节采用20个MG995舵机,包括18个腿部关节和2个摄像头云台关节。
驱动层作为连通操作系统层与硬件层的中间环节,主要完成传感器信息的传输以及控制指令的转达。考虑到不涉及复杂运动控制的研究,机器人处理器采用STM32F103RCT6单片机,采用24路舵机控制板作为舵机驱动控制器。
操作系统层是控制核心,集成了机器人的功能模块,负责图像采集、图像处理、人机交互等。
软件结构采用模块化设计方式,如图8所示。
图8 系统软件结构
处理器内的软件系统由顶层的人机交互和底层的智能算法组成。人机交互模块负责显示各项数据、手动发出控制指令(由键盘操控)等任务。智能算法模块进行各项图像处理、保存数据以及将控制指令转码为自定义的RCP(Robot Communication Protocol)通信协议。RCP通信协议如图9所示。
图9 RCP通信协议
RCP通信协议由21位二进制数组成。转动标志位1和2分别表示是否转弯和是否转动摄像头云台,标志位为1时有效。dx和dy用10位二进制数表示,其中最高位为符号位,置1表示右转,置0表示左转,可表示的偏移范围为(-512~512)。
六足机器人内的软件系统由数据解码模块、运动控制模块和图像采集模块组成。数据解码模块将处理器发送的RCP数据解码得到运动控制数据,运动控制模块则直接控制电机转动。无线通信模块由基于ESP8266的WIFI通信和5.8 GHz图像传输模块组成。
人机交互界面由视频监视模块、运动控制模块、状态显示模块、无线通信模块和参数设置模块组成。操作人员可实时查看机器人的运行状态、无线通信状态、切换图像模式以及手动控制机器人的运动。人机交互界面如图10。若算法默认参数在当前场景下不适用,操作人员可重新设置参数优化算法。
图10 人机交互界面
实验环境如下所示:
硬件:Intel Skull,Core i7-6770HQ,2.6~3.5 GHz。
操作系统:Windows 10。
编程环境:Visual Studio 2017,Keil v5,C++,opencv3.4.0,opencv-contrib3.4.0。
测试六足机器人在移动过程中对运动目标的检测性能。测试环境背景复杂度适中,六足机器人运动速度和目标运动速度均在每帧10像素以内。控制六足机器人在场景内随机移动,多个运动目标由视野外进入机器人视野并相对行走。检测结果如图11,检测帧率如表2。结果显示,运动目标均被完整地检测并标注,存在少量背景误检测,在当前场景下检测帧率为17.5 frame/s。
图11 动态目标检测结果
图12 目标跟踪
六足机器人跟踪运动目标结果如图12。图13绘制了连续330帧跟踪过程中的x轴和y轴方向的像素偏移,目标在第0帧出现在视野边缘,在第120帧向视野边缘运动,在第250帧开始反向运动。从图13中可以看出,当目标与视野中央的偏差大于80像素时,机器人快速转动,使目标保持在视野中央附近。
图13 目标跟踪偏移
系统响应的实时性由数据传输时间和检测时间同时决定。由于将机器人与算法处理器独立设计,目标跟踪过程主要包括六部分:机器人向处理器发送图像,目标跟踪,处理器向WIFI模块发送控制命令,WIFI模块向单片机转发控制命令,单片机向舵机控制器发送命令,舵机控制器驱动舵机关节。其中机器人使用5.8 GHz图传模块向处理器发送图像数据,延时约为200 ms;舵机控制器驱动舵机关节部分延时约为300 ms;其余部分的延时共50 ms。因此从目标运动到机器人跟踪其开始运动,延时约为550 ms。检测过程由于只包括机器人向处理器发送图像和运动目标检测两部分,延时约为250 ms。可以看出,主要的延时部分为无线图像传输与驱动舵机关节部分。更换传输速度更快的无线传输设备和舵机对降低延时有帮助,在后续研究过程中将对其进行改进。
表2展示了运动目标检测与跟踪算法在不同场景下的帧率。跟踪帧率在不同复杂程度的场景下并没有较大差距,而检测帧率相差6.8,原因是算法在复杂场景下检测了更多特征点进行运动补偿。
表2 检测与跟踪帧率frame/s
为探索动态目标检测与跟踪算法与机器人的交叉应用,基于六足机器人平台,结合人机交互、智能算法、无线通信等开发了一套完整的检测与跟踪系统。其中,针对以往动态目标检测算法易将非刚体运动目标检测为多个分散区域的问题,通过区域合并与运动补偿法相结合,使六足机器人在运动过程中可以精确检测非刚体运动目标,帧率达到17.5 frame/s。采用基于KCF的目标跟踪算法,通过自适应调整跟踪速度,使目标保持在距视野中心100像素以内。后续研究将改进图像抖动下的动态目标检测效果以及提高六足机器人运行过程中的稳定性。