基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求。在这种应用中,视觉系统相对雷达、声纳具有信息量大、抗干扰能力强、软件处理灵活、体积重量小、成本低等特点,但缺点是传输和处理需要的时间更多,因此很难满足图像信息传输和处理的实时性要求。
高速相机一般通过GigE、CameraLink、USB3.0等接口将图像采集后传输到图像处理器上,这种方式把大量时间消耗到信息传输通道。为了解决这个问题,最好的方式是直接在近端对传感器芯片采集的图像进行处理。FPGA凭借其硬件并行运算的优势,越来越多地应用于高速相机以及高速运动检测系统中,极大地提高了图像处理速度,保证了系统的高速、实时性与准确性。通过FPGA对图像传感器进行近端处理,可以做到采集图像与智能处理同步进行。其最需要解决的问题是优化智能算法,使得运算更加简单高效,并占用更少的资源。
目前很多学者正致力于高速视觉目标检测系统的研究。GUQY等人设计了2000f/s的高速智能相机,可以对目标进行智能实时监测。后又设计了高帧频视频拼接系统,该系统运用了改进的基于特征的视频拼接算法,能够实时合成全景图像,帧率可达500f/s。麻省理工大学的CHENJG等人通过高速摄像机(5000f/s)对悬臂梁上的目标物体进行位移测量实验,通过PC对数据进行离线分析,得到了与激光测振仪和加速度计测量相一致的振动曲线。并且通过FFT算法对三组数据进行频域分析,得出了各个共振频率分量。
本文以高帧频与实时性作为研究的切入点,设计了一种基于ZYNQ7000的高速相机平台,充分利用芯片上的FPGA资源及其硬件并行的优势,进行目标提取及质心检测算法的实现。本文优化了目标检测的FPGA算法,去掉中间缓存环节,以流水线结构对图像数据进行实时流水处理,提高了目标检测算法的处理效率,可以在每帧图像采集后的有限个时钟周期内完成位置检测运算,做到同步检测。实验结果表明,该系统可以实现560×480分辨率、1100f/s、3像素精度的实时目标检测。
1硬件系统设计
1.1系统组成
为了达到高速实时的要求,本系统采用FPGA直接驱动高速CMOS传感器的方式,实现近端处理。该检测系统主要由FPGA主控单元、CMOS图像采集单元、多电源轨供电单元、对外接口单元和光学成像单元几部分构成,如图1所示。
FPGA主控单元选用ZYNQ7020芯片,片上集成ARM硬核和FPGA资源,ARM负责对CMOS传感器进行配置,FPGA对获取图像进行数据处理、目标检测算法实现、输出图像及位置信息。
CMOS图像采集单元选用Python300型灰度CMOS传感器,该传感器分辨率为640×480,可以达到815f/s的全分辨率输出,并可通过开窗(ROI)操作进一步提高帧频。
对外接口单元包括HDMI显示接口、串口、JTAG接口等电路,实现图像显示、位置坐标传输和调试下载等功能。
1.2硬件设计
该系统硬件电路设计为两部分:FPGA主控板和高速底板,二者通过规范化的高速连接器进行互联和信号传输。主控板选用成品高速FPGA核心板,底板则采用4层PCB板设计,整合了CMOS电路、HDMI显示电路、电源电路、串口电路等。
底板设计主要是对上述各部分电路进行合理布局布线。其中,由于CMOS传感器输出的是低压差分信号(LowVoltageDifferenTIalSignal,LVDS),每路数据速率可以达到720Mb/s,设计时必须考虑信号完整性。
布线时对该信号进行了特殊的处理,严格遵循高速差分线的规则:每对差分线平行布线,尽可能保持相同的最小距离,且小于线宽;减少过孔次数;布线拐角大于90°;差分阻抗控制在100Ω,与差分信号接收端的100Ω端接电阻相匹配,减少信号的反射;每组差分线布线长度尽可能保持一致;各组差分线之间保持较大距离。
通过以上措施,保证高速差分信号的信号完整性,以及各组信号较小的延迟差。
2软件系统设计
软件设计主要实现使能控制和寄存器配置两种功能。使能控制通过ARM处理器的IO操作控制CMOS的时钟、供电;寄存器配置是ARM通过SPI总线IP核与CMOS传感器进行通信,对一些必要的寄存器进行配置,主要包括窗口大小、图像深度、运行模式、图像数据输出等。
通过配置CMOS内部寄存器,使CMOS传感器输出8bit深度、560×480分辨率、大于1000f/s的高速视频流图像,经LVDS接口传输至FPGA进行数据处理及算法实现。
3信号处理及检测算法FPGA实现
3.1目标检测原理
3.1.1目标提取
进行目标检测,首先需要将图像中的目标与背景区分并提取出来。结合应用场景,本系统选用背景差分法加阈值分割的方法对目标进行提取。
首先获取清晰稳定的背景图像,然后将当前帧图像与背景图像对应像素值做差,完成差分运算。接着将差值与设定阈值进行比较,若大于阈值,则判定为1,即运动前景;反之为0,即背景,生成二值化图像。
3.1.2质心检测
本系统所要检测的目标为一球体,进行阈值分割之后的二值化图像中,目标表现为一个圆形亮斑。考虑到目标的特殊性,同时配合FPGA流水线结构的特点,本文通过圆直径检测的方法,找出X方向和Y方向上直径所在直线的交叉点,从而确定圆心所在位置。
具体方法如图2所示:将二值化图像每行的像素灰度值相加,相加之和两两比较,在直径所在的行上将会产生一个最大值,该最大值所对应的行数即视为圆心的Y坐标。列方向上进行相同操作也可得到X坐标。
圆直径检测计算圆心的方法配合FPGA流水线结构,在读取图像的同时进行处理和解算,可以最大程度减少检测延迟,提高实时性。
3.2FPGA逻辑设计
CMOS传感器图像数据的传输按照自左向右、自下而上逐行进行,每8个像素为一组,称为一个kernel。由于目标帧频》1000f/s,每帧图像更新的周期《1ms,而其中大部分时间用来获取图像,无法在当前帧周期内完成图像缓存和处理过程。
本系统充分利用FPGA并行运算的特点,逻辑设计上采用三级流水线结构,如图3所示,并去除中间缓存环节,在读取图像的同时将每组数据直接送入流水线逐级进行处理。该流水线能够同时处理三组数据,且每组中8个像素的操作也是同时的。如此,图像读取和处理的过程同步进行,保证了数据处理的高效性与实时性。
三级流水线结构对应了目标检测的3个步骤,逻辑设计如下:
(1)背景差分
在获取当前kernel值的同时,读取背景帧中对应地址的背景kernel值,将8个像素值同时对应做差,求得各像素位置的差值,存入差值寄存器,输入到下一级流水中。随后立即处理下一个kernel的像素,直到读完整幅图像。
(2)阈值分割
差值寄存器更新后,将8个像素差值与设定的阈值进行对比,大于阈值则二值化寄存器对应位置像素赋值为最大值,反之则赋值为0,结果输入到下一级流水。随后进行下一个kernel的分割。
(3)质心检测
质心检测逻辑分为两个分支,分别计算目标质心的X坐标和Y坐标。
计算X坐标的逻辑中,设置560个列相加寄存器,每当二值化寄存器更新,则将8个二值化像素值加入对应列的列相加寄存器中。在读取完整帧图像时,比较各个列相加寄存器的值,得到最大值及对应列数,即为X坐标。
计算Y坐标的逻辑中,设置两个寄存器,一个存储当前行像素值的和值,另一个存储行像素和值的最大值。完成一行的读取后,将和值寄存器值与最大和值寄存器的值作比较,若大于最大和值,则将最大和值更新为该行和值,并记录此时的行数;反之则保持最大和值及对应行数不变。当读取完一帧图像后,最大和值对应的行数即为质心的Y坐标。
4系统测试与结果分析
4.1测试环境
通过光学平板固定相机,保持相机稳定;以白色A4纸作为背景,检测目标为一黑色碳球;镜头为焦距6mm的工业镜头,镜头与目标距离20cm,测试时通过平板LED灯进行补光。测试主要分为精度测试、速度测试。
4.2精度测试
相机开启后,首先采集500帧图像作为背景帧。后将目标固定于背景纸上,连续采样10000次,测试单点采集精度,并通过串口输出目标位置,绘制图像。实验重复10次,测试结果如图4所示,测试的单点精度典型值为3×3(像素)。
4.3速度测试
4.3.1帧率测试
当相机运行在8bit深度、560×480分辨率下,其帧率理论值为1164f/s。帧率大小通过以下方式进行测试:将系统置于运行模式,打开串口工具接收坐标数据,同时进行计时,通过一定时间内接收的坐标个数计算帧率。
实验结果如下:系统运行10s,共接收11871个坐标数据,得到帧率测量值为1187f/s。考虑到计时误差的因素,可以得出,测量帧率与理论帧率基本一致,满足系统设计要求。
4.3.2运动测试
通过对目标物体自由落体过程进行检测,来进行系统运动测试。目标由静止状态自由落下,系统捕捉整个过程并将实时位置发送到串口。通过对接收的位置坐标进行分析,得到图5所示的运动轨迹图以及图6所示的Y轴方向位移-时间关系图。
由图6可以看出,位移曲线与理论曲线趋势基本一致,且略小于理论值。测试过程中,目标实际下落距离为60mm,理论下落时间应为0.11s。而实际测量中,系统采集了140帧图像,实际下落时间为0.12s,比理论时间长0.01s。
分析测试结果:首先应当考虑空气阻力的因素对自由落体运动产生影响,导致加速度的值小于重力加速度,进而使位移量小于理论值。另外,由图5可以看出,下落方向与Y坐标方向并非完全重合,存在X方向的位移,所以Y方向的位移小于预计值。考虑到以上两个因素的影响,可以认为相机准确检测到了物体的高速运动过程。
5结论
本文研制了一套高帧频视觉实时目标检测系统,从硬件设计、软件配置、FPGA算法实现分别进行了介绍。采用了FPGA近端直接进行智能处理的策略,设计了流水线处理的结构,极大地解决了高速智能视觉检测系统的实时性问题。最后对系统进行了测试,结果表明,系统实现了560×480分辨率、1100f/s高速视频流的实时目标检测,精度达到3个像素。该系统可以应用到各种高速检测的场景中,例如位移速度测量、振动分析、高速目标监测与控制等,后续工作将完善优化算法,提高检测的精度,并从圆形目标推广到不规则目标,提高背景变化时检测的鲁棒性。