刘紫燕,唐 虎,冯 亮
(1.贵州大学 大数据与信息工程学院,贵州 贵阳 550025;2.中国移动通信集团福建有限公司 福州分公司,福建 福州 350000)
近年来,电子技术及机器视觉技术在运动分析、智能视频监控、人机交互、军事等领域广泛应用,使得视频跟踪技术在工程应用中有着重要的应用研究价值[1]。目前,较为成熟的视频跟踪算法主要是基于Matlab仿真平台实现,而通过硬件仿真方式实现的视频跟踪算法很少[2]。
现场可编程门阵列(Field Programmable Gate Array,FPGA)以其集成度高、多级流水线技术、并行处理等优点,使得芯片运行速度得到较大提高[3]。为了在满足用户性能需求的同时提高图像帧的处理效率,可利用FPGA硬件逻辑电路实现视频图像分析[4]。因此,研究基于FPGA机器视觉技术的视频跟踪系统,可解决传统视频跟踪系统中存在的精确度低、刷新率低、实时性差、性价比低等问题。
本文设计了FPGA平台的实时视频采集显示系统,对视频目标的实时检测、定位及跟踪算法进行了研究,确定视频目标特征参数,计算出目标的运动轨迹,然后通过控制云台步进电机信号,并通过FPGA输出该控制信号,驱动加载有摄像头的云台系统转动。
系统主要功能模块可分为:图像采集模块、SDRAM控制模块、视频处理模块、VGA显示模块、云台驱动模块、云台电机6个部分[5-6],系统设计框图如图1所示。
图1 视频跟踪系统构图
图1中,摄像头负责实时视频图像进行采集,输出视频图像数据传送至FPGA核心器件,FPGA核心器件通过内部设计的各功能模块对视频图像数据进行存储和处理,输出VGA显示图像数据、云台控制信号,云台电机上加载的摄像头根据控制信号进行相应转动,达到实时跟踪的目的。FPGA器件内部功能模块主要包括图像采集、多端口SDRAM控制器、图像VGA显示、视频图像处理等。
图1中的视频图像处理模块工作流程如图2所示[7-8]。首先对摄像头采集到的视频图像进行预处理;然后采用优化后的帧间差分法提取出运动目标;使用形心法计算目标形心的坐标,从而完成目标的定位;最后,根据目标形心坐标计算其相对于监控画面中心的偏移量,通过调节该偏移量得到相应的电机控制信号,驱动云台步进电机上摄像头跟随目标转动,实现对被跟踪目标实时跟踪。
图2 视频图像处理模块处理流程
基于FPGA平台的视频跟踪系统工作框图如图3所示。首先FPGA通过I2C协议对图像传感器初始化,发送摄像头图像数据采集命令。其次,格式变换模块将采集到的Bayer格式视频图像数据输出为30位RGB图像数据,并通过多端口SDRAM进行视频图像帧缓存,多端口SDRAM控制器会通过设计的FIFO接口输出VGA显示和图像预处理所需要的图像数据,实现图像的VGA现实及图像预处理。通过预处理后提取到的图像信息计算运动目标的形心坐标及运动矢量,从而驱动云台电机转动。
图3 视频跟踪系统工作流程
视频跟踪系统流程如图4所示,主要包含3大核心模块:目标检测模块、目标跟踪模块及电机控制器模块[2]。其中,目标检测模块主要提取实时视频图像序列中运动目标的特征边缘信息,不同算法的检测精度不同,将直接影响目标跟踪的准确度;目标跟踪则根据提取到的特征信息,通过分析图像序列特征信息的变化情况,实现对运动目标进行跟踪;电机控制器通过计算目标的形心坐标相对于监控画面中心偏移情况,从而驱动云台步进电机上的摄像头跟随目标转动,实现对被跟踪目标的实时跟踪。
图4 视频跟踪系统流程
目标检测[9-10]算法框图如图5所示,采用帧间差分法[11-12]对SDRAM缓存的图像序列进行检测,通过Sobel算子对图像序列中的目标边缘进行提取,采用形态学中的膨胀算法(Dilation)进行优化[13-14],从而得到更加清晰的目标边缘检测结果。
图5 目标检测算法框图
差分算法以相邻的两帧或者等间隔的两帧图像序列作为研究对象,假设t时刻图像为fk,则t-1时刻的图像为fk-1,差分后得到结果Dk(i,j)如下
Dk(i,j)=|fk(i,j)-fk-1(i,j)|
(1)
Sobel算子是由两个卷积核g1(x,y)与g″2(x,y)对原图像f(x,y)进行卷积运算而得到的。其数学表达式为
S(x,y)=max[X,Y]
(2)
(3)
(4)
数学形态学[15]是一种数学方法,主要用集合论方法定量描述、分析几何形状和结构。几种常用的数学形态学运算有:膨胀、腐蚀、开运算和闭运算。
设A为一幅二值图像,B为结构元素,则膨胀运算定义为
(5)
开运算定义为
AB=(AΘB)⊕B
(6)
闭运算定义为
A·B=(A⊕B)ΘB
(7)
采用形心定位的方法对前级检测到的运动目标进行定位,跟踪目标形心坐标计算流程如图6所示,形心定位法的重点之处在于统计边缘图像中二值图像素点为1的个数,通过该方式可实时计算并输出目标的形心坐标。
图6 目标形心提取流程
在FPGA平台上计算目标形心坐标时,用一个计算器Num_counter来统计f(x,y)中值为“1”的像素点的个数,视频图像中像素值为1的像素点的坐标累加值可用两个寄存器(Sum_X,Sum_Y)来存储,因此当前像素的坐标值也可用X_counter和Y_counter两个计数器来表示。若读取的值为1,进行式(8)~式(10)的计算。
Num_counter=Num_counter+1
(8)
Sum_X=Sum_X+X_counter
(9)
Sum_Y=Sum_Y+Y_counter
(10)
此时,只需完成一帧图像数据的扫描,即可得到运动目标的形心坐标,如式(11)和式(12)所示。
(11)
(12)
如图7所示为形心定位法的FPGA实现模块图,对实时图像中跟踪定位的目标进行边缘检测后,得到的二值化结果由DATA_IN引脚进行输入, CLK_IN、RST_IN和DATA_EN引脚则分别输入时钟信号、输入复位信号、使能信号,而被跟踪目标的形心坐标(Out_X,Out_Y)分别由O_X和O_Y引脚输出。
图7 形心定位法FPGA实现模块
在VGA显示屏幕上进行显示时,使用十字形标记出所跟踪目标的形心点位置。
根据FPGA实现目标形心计算方法描述,被跟踪目标形心(O_X,O_Y)相对于VGA显示画面中心的实时运动矢量记为(Δx,Δy),当Δx、Δy超过设定范围h、v时,首先由PWM生成电路在X、Y方向产生PWM云台步进电机控制脉冲信号,然后由GPIO接口输出至驱动器,驱动器接收后通过驱动放大电路送出,云台步进电机接收到该信号的驱动后带动摄像头做出相应移动,具体为:当Δx<-h时,云台步进电机受控制信号驱动带动摄像头水平方向向左转;当Δx>-h时,云台步进电机受控制信号驱动带动摄像头水平方向向右转;当Δy<-h时,云台步进电机受控制信号驱动带动摄像头垂直方向向上转;当Δy>-h时,云台步进电机受控制信号驱动带动摄像头垂直方向向上转。其云台电机系统运行原理如图8所示。
图8 电机系统运行原理示意图
如图9所示,在电机控制器的FPGA实现中,本文使用VerilogHDL语言设计了3个主要的功能模块:(1)Motorcontrol模块,输入形心坐标,输出云台电机控制信号;(2)controlmotor模块,根据前一模块输入的控制信号判断摄像头转动的方向;(3)PWM模块,产生PWM信号控制电机转动。
图9 电机控制器实现功能模块图
在各功能模块完成仿真验证后,结合相应的IO接口,按照本文设计的视频跟踪系统集成示意图如图10所示。
图10 系统集成示意图
连接CMOS图像传感器、VGA显示器、云台驱动器、云台电机,下载工程代码至Altera公司DE2-70主板验证。
图11 行人实时视频跟踪系统实现
实验在室内环境进行,分别以人跟小车作为测试对象。图11为行人视频跟踪结果,其中十字标志为系统计算的目标形心位置,测试结果表明,所设计的系统能够准确跟踪到行人目标。
由于FPGA在进行视频跟踪处理时,很难直接对处理后的视频图像序列逐帧调试,故通过FPGA的开关键来控制捕获不同的关键图像帧进行测试。
图12 小车实时视频跟踪系统实现
图12为小车视频跟踪结果,在经过Sobel算子边缘提取之后,以准确跟踪到小车时图像帧(第55帧)、小车向右行驶图像帧(第96帧)、小车形态发生变化图像帧(第135帧)作为跟踪结果进行分析。图中的标记中,方框为设定的边界,十字形为被跟踪定位的目标形心。云台电机的控制信号由目标形心是否移动至方框外决定,以此来实现视频目标的实时跟踪。如表1所示,从开始到准确定位到小车位置,用时1.83 s,平均刷新一帧图像只需要0.033 1 s;当小车向右行驶时,系统检测到小车位置,并根据小车形心的移动情况判断出小车的运行方向,用时1.36 s,平均刷新一帧图像需要0.033 2 s;当小车继续运动1.3 s时,小车在摄像头中形态发生变化,虽然系统仍然可以检测到小车的形心位置,但是小车可能靠近摄像头行驶,也可能远离摄像头行驶,无法准确判断。测试结果表明,所设计的系统能够准确、实时跟踪到小车,但当目标小车形态发生改变时,无法跟踪。
综上所述,设计的FPGA平台视频跟踪系统在实时性与准确性等方面都有较好的表现,形心定位法的快速计算获得目标边缘形心坐标,实现云台电机根据目标实时转动效果。
表1 视频图像跟踪测试
在视频跟踪系统中对跟踪目标进行定位和跟踪时,当目标物体的形态产生变化,将无法准确跟踪到目标。当跟踪目标被遮挡,形心法将无法准确计算目标形心坐标,因此,本文所实现的目标定位、跟踪方法适用于目标物形态不变情况下的视频跟踪。
本文研究了机器视觉技术下的FPGA视频跟踪问题,设计了FPGA的实时视频采集显示系统,研究实现了实时视频目标检测、定位及跟踪算法,根据跟踪目标参数及运动轨迹,计算云台步进电机控制脉冲信号,并通过FPGA输出该控制信号,云台电机受到控制信号驱动后带动摄像头转动。将视频跟踪系统中的各个子系统在FPGA平台上进行了集成与测试。测试结果表明,所设计的FPGA平台视频跟踪系统在实时性与准确性等方面都有较好的表现,与传统视频跟踪系统相比,该系统具有实时刷新率高、精确跟踪目标等优势。但本文所提出的算法仅适用于目标形态不变情况下的视频跟踪,可从运动补偿角度考虑。