杨传琪, 杨树蔚, 刘咏梅, 闫克丁
(1.国网陕西省电力公司西咸新区供电公司, 陕西 西安 712000; 2.上海电力大学, 上海 200090; 3.西安工业大学, 陕西 西安 710021; 4.西北工业集团, 陕西 西安 710043)
目标识别跟踪是指通过摄像头等视觉设备采集图像,并且通过目标检测算法实现对图像中所有目标的提取,通过识别算法实现对特定目标的提取,然后再利用跟踪控制算法实现对识别的特定目标的追踪。
自20世纪50年代,越来越多的的研究人员开始钻研目标识别跟踪系统。动态目标识别跟踪系统,尤其是二维动态目标识别跟踪的研究已成为研究焦点。此课题涉及的学科包括图像处理技术、自动控制、计算机视觉、机械设计制造等,作为多学科交叉的产物,目标识别跟踪具有极大的研究价值。随着计算机视觉、计算机硬件的极速发展和完善,在科学和工程领域中,目标识别跟踪技术的运用越来越普遍。
在生活中,目标识别跟踪系统主要应用于视频监控、交通管制、公安侦查等领域。视频监控系统能够对视野内的所有目标实时监控,完成提取目标的检测、识别与跟踪,比较先进的系统还可以根据人的行为判断是否违法,进而给出警告,通知工作人员处理。但是目前的视频监控都在系统后台完成,需要有人负责相关工作,不仅浪费了人力资源,而且还可能由于个人原因导致判断失误。因此,无人工参加的视频监控系统越来越受到人们的欢迎。二维目标识别跟踪系统监控范围大、角度广,应用在视频监控系统中可以有效地解决固定摄像头带来的弊端,更好地实现多摄像头接力跟踪。
随着生活中突发事件发生概率的增大,对社会信息的需求也趋向更加密集复杂。为提前预防各种事件,需要加强对重点区域运动目标的检测跟踪能力,对被跟踪目标的当前状态进行行为分析和态势评估,可以减少意外的发生[1]。由此,自动目标识别作为目标跟踪系统的重要技术,已成为研究热点[2]。
目前,对于圆形目标的识别算法主要有基于Hough变换算法和基于圆度检测算法。文献[3]提出了基于广义Hough变换的残缺圆检测方法,利用多圆快速随机检测特性,以提高对残缺圆检测的适应性,但是对均值收敛的快慢、方差大小这些统计信息需求增多,导致检测速度降低。近年来,由于目标的视觉检测技术逐渐成熟,研究者开始围绕基于视觉的运动目标检测与跟踪技术。文献[4]针对道路识别和避障提出了轻度机器视觉方法。同时,清华大学、西安交大等机构都在视觉跟踪方面取得了成果,其研究目标包括体育视频中的运动目标、野外环境下的目标等[5-6]。
本文设计并实现了一种图形识别跟踪系统。该系统包括图像处理、基于Arduino云台控制器和舵机云台3个模块,计算机处理相机采集的图像,通过Arduino控制舵机转动角度,精确调整相机方位、俯仰姿态,以实现图形的追踪。
本文设计的识别跟踪系统框图如图1所示。
图1 基于Arduino的目标跟踪系统框图
基于Arduino的目标跟踪系统主要包括图像处理前端和运动控制端两个部分。图像处理前端实现图像预处理、目标检测识别和目标跟踪功能,通过对运动目标图像位置的提取,得到具体的位置数据,并发送偏差数据。运动控制端接收图像处理端发送的位置偏差量,通过控制算法控制舵机转动。
基于Arduino的目标跟踪系统主要有相机、跟踪云台、控制器和上位机组成框架,如图2所示。计算机将相机采集的目标图像进行处理得到偏离图像中心的像素差,然后通过串口给控制器发送指令,控制器接收图像中心的像素差,以此完成对舵机的控制,从而保证目标图像位于视场中心区域,达到跟踪目的。
图2 基于Arduino的目标跟踪系统组成框架
跟踪系统工作过程为:当运动目标在跟踪路径上开始运动,此时上位机发送串口指令,相机获得该指令信号后开始对跟踪路径上的运动目标进行捕获采集[7],控制二维转台在舵机收到相应的控制指令后进行相应的转动调整。
跟踪系统中,当相机光心与目标载体的主要运动平行或重合时,忽略次要因素,将目标看作是一维直线运动。成像视场的扩大借助舵机完成,能够完成跟踪路径上每一位置的变化状态的实时跟踪,通过确定合理的方位轴旋转角度和俯仰轴旋转角度,扩大跟踪视场的范围,使跟踪更加准确。当跟踪算法得到的目标图像的位置与图像中心位置之间有偏差时,表示运动目标偏离图像中心一定范围[8]。基于这一像素偏差,上位机软件首先计算PID算法的输出角度,再通过串口发送相应的转动角度,二维跟踪转台得到转动角度后向目标图像阈值框方向转动,以减小运动目标的跟踪偏差,使运动目标始终在相机的一定成像视场范围内。上位机对目标图像位置偏差信息进行处理,通过上位机发送给单片机相应的控制指令,使单片机控制二维跟踪转台做出相应的转动调整,完成在跟踪路径上对运动目标的实时跟踪[9]。
二维转台是用于控制相机运动的执行机构,通过舵机控制相机运动完成对图形目标的识别追踪。下位机控制方位舵机和俯仰舵机转动,进而控制安装在转台上的相机移动,以跟踪目标。对二维转台各部件的功能进行分析,使用NX12.0完成了三维模型的建立,并搭建了云台实物,如图3所示。
图3 二维转台三维模型及实物示意
2.2.1 云台硬件设计
云台控制器选择Arduino开发板来实现对舵机的控制,图形跟踪系统选择Arduino开发板作为硬件开发平台,舵机选用MG996r型。Arduino和舵机连接图如图4所示。
图4 Arduino和舵机连接示意
单片机10#管脚输出脉冲宽度调制(Pulse Width Modulation,PWM)波控制水平舵机转动,单片机9#管脚输出PWM波控制俯仰舵机转动,通过发送周期为20 ms的PWM信号控制舵机转动。其中,脉冲宽度在0.5~2.5 ms,相对应舵盘的位置为0~180°,呈线性变化。
2.2.2 云台控制算法设计
基于Arduino的目标跟踪系统云台控制采用PID算法,将像素偏差的比例P、积分I和微分D的线性组合作为控制量对被控对象进行控制。PID控制框图如图5所示。
图5 PID控制框图
PID控制器的比例控制、积分控制和微分控制实施不同的控制规律,对控制系统产生不同的作用[10]。作为一种线性的闭环控制器,根据不同的控制策略可以进行组合控制或者单独控制。PID控制期望给定值yd(t)与系统真实值yt(t)构成偏差,利用此种策略完成控制。
error(t)=yd(t)-yt(t)
(1)
PID的控制规律和传递函数形式分别为
(2)
(3)
式中:K——比例系数;
TI——积分时间常数;
TD——微分时间常数;
U(s),E(s)——系统输出量和输入量。
在计算机控制中,需要利用离散化的PID算法将矩形法数值积分近似代替积分,以一阶后向差分近似代替微分可以得到离散PID表达式[11]。采用数字PID控制器,采样时间为T,进行k次采样,即
(4)
式中:k——采样序列号;
KP——比例调节系数;
e(k)——k时的偏差值;
KI——积分调节系数;
ei——积分误差;
T——采样周期;
KD——微分调节系数;
e(k-1)——k-1时的偏差值。
云台跟踪采用图5所示的PID控制框图,则图形伺服控制框图如图6所示。
图6 图形伺服控制框图
为了云台控制的稳定性,本文采用了带死区的位置PID控制。由图6可知,输入为已知期望,输出为位置偏差,本文设计的基于Arduino的目标跟踪系统采用基于位置偏差的PID算法,设置了5个像素的边界阈值,在解决死区边界问题时,通过对比例、积分、微分系数的整定,确定各个环节的系数值分别为KP=0.6,KI=0.003,KD=0.002时跟踪效果最理想。
2.3.1 图形跟踪软件流程
计算机通过连接相机实现目标图像釆集、图像预处理、目标检测提取、目标识别、云台控制数据发送等功能。由于PyQt5具有文档丰富、学习时间短、便于打包发布软件等优点,故本文选用PyQt5开发图形界面。OpenCV是一个开源的跨平台计算机视觉库,因此本文选择使用PyQt5+OpenCV库来完成圆形识别的软件开发。计算机软件流程如图7所示。
图7 计算机软件流程示意
2.3.2 基于Hough变换圆形识别算法
采用基于Hough变换圆形识别算法实现圆形的识别,其检测原理是先进行坐标转换后根据圆的3个维度累加度量结果进行判断。由于转换到三维空间的计算量增大,为了增大可靠性,所以本文采用Hough梯度圆形检测算法。该方法将三维累加平面转化为二维累加平面,利用各个点的模向量和所有候选中心的边缘非零像素来确定圆心和半径,具体流程如图8所示。
图8 基于Hough变换圆形识别算法流程
首先对输入图像进行边缘检测,获取边界点;然后进行坐标变换,由x-y坐标系转换到a-b坐标系,写成如下形式(a-x)2+(b-y)2=r2。原图像中存在多个圆形,同样存在多个圆心,为了获得对应圆形的圆心坐标(a,b),根据Hough变换圆形识别算法,需要对局部交点处圆进行统计与比较,得到每一个局部最大值。若某一个r下面检测到圆形,则该圆的r值也随之确定。
完成上述软硬件开发后,在实验室开展实验,在黑暗背景照射以一个圆亮点作为跟踪对象,实验采集图像如图9所示。
图9 圆点目标跟踪实验结果
以图9(a)中的点为起始时刻,目标点靠左,不在中心位置,经过图像处理和云台控制后,相机向左转动,如图9(e)中目标点基本在相机视场中心位置,如图9(g)向左移动目标点后,图9(i)又跟踪至中心位置。经过多次实验验证本系统能够完成目标点的跟踪功能。
本文设计了图形识别跟踪系统,实现了圆形识别和二维转台的精确控制。给出了图形跟踪的云台控制器设计和软件设计。在计算机软件中,借助Python的图像处理库识别图像中的目标,并根据预存特征判断是否为特定目标,然后提取出目标的位置信息,通过串口发送给下位机控制舵机转动,最后实现了图形的识别跟踪。