【学术论文】高帧频视觉实时目标检测系统
摘要
为了实现高速场景下的智能实时目标检测,设计了一种基于ZYNQ7000系列FPGA的高速相机平台,并利用该平台进行目标检测算法实现,形成了一套高帧频实时目标检测系统样机。
该系统将高速CMOS图像信号直接接入FPGA,在本地FPGA中进行数据处理,实现目标检测算法,最终实时输出目标位置序列。
FPGA设计采用流水线结构,对高速视频流图像逐级进行背景差分、二值化、质心解算的流水操作,实现了图像获取与目标检测同步进行。测试结果表明,该系统在560×480分辨率下可以实现大于1 100 f/s的实时目标检测,并输出目标位置,检测精度可达3个像素。
中文引用格式: 杨鲁新,董文博. 高帧频视觉实时目标检测系统[J].电子技术应用,2019,45(4):109-112,117.
英文引用格式: Yang Luxin,Dong Wenbo. High-frame-rate visual real-time target detection system[J]. Application of Electronic Technique,2019,45(4):109-112,117.
0 引言
基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求。在这种应用中,视觉系统相对雷达、声纳具有信息量大、抗干扰能力强、软件处理灵活、体积重量小、成本低等特点,但缺点是传输和处理需要的时间更多,因此很难满足图像信息传输和处理的实时性要求。
高速相机一般通过GigE、Camera Link、USB3.0等接口将图像采集后传输到图像处理器上,这种方式把大量时间消耗到信息传输通道。为了解决这个问题,最好的方式是直接在近端对传感器芯片采集的图像进行处理。FPGA凭借其硬件并行运算的优势,越来越多地应用于高速相机以及高速运动检测系统中,极大地提高了图像处理速度,保证了系统的高速、实时性与准确性[1-6]。通过FPGA对图像传感器进行近端处理,可以做到采集图像与智能处理同步进行。其最需要解决的问题是优化智能算法,使得运算更加简单高效,并占用更少的资源。
目前很多学者正致力于高速视觉目标检测系统的研究。GU Q Y等人设计了2 000 f/s的高速智能相机,可以对目标进行智能实时监测[7]。后又设计了高帧频视频拼接系统,该系统运用了改进的基于特征的视频拼接算法,能够实时合成全景图像,帧率可达500 f/s[8]。麻省理工大学的CHEN J G等人通过高速摄像机(5 000 f/s)对悬臂梁上的目标物体进行位移测量实验,通过PC对数据进行离线分析,得到了与激光测振仪和加速度计测量相一致的振动曲线。并且通过FFT算法对三组数据进行频域分析,得出了各个共振频率分量[9]。
本文以高帧频与实时性作为研究的切入点,设计了一种基于ZYNQ7000的高速相机平台,充分利用芯片上的FPGA资源及其硬件并行的优势,进行目标提取及质心检测算法的实现[10-14]。本文优化了目标检测的FPGA算法,去掉中间缓存环节,以流水线结构对图像数据进行实时流水处理,提高了目标检测算法的处理效率,可以在每帧图像采集后的有限个时钟周期内完成位置检测运算,做到同步检测。实验结果表明,该系统可以实现560×480分辨率、1 100 f/s、3像素精度的实时目标检测。
1 硬件系统设计
1.1 系统组成
为了达到高速实时的要求,本系统采用FPGA直接驱动高速CMOS传感器的方式,实现近端处理。该检测系统主要由FPGA主控单元、CMOS图像采集单元、多电源轨供电单元、对外接口单元和光学成像单元几部分构成,如图1所示。
FPGA主控单元选用ZYNQ7020芯片,片上集成ARM硬核和FPGA资源,ARM负责对CMOS传感器进行配置,FPGA对获取图像进行数据处理、目标检测算法实现、输出图像及位置信息。
CMOS图像采集单元选用Python300型灰度CMOS传感器,该传感器分辨率为640×480,可以达到815 f/s的全分辨率输出,并可通过开窗(ROI)操作进一步提高帧频。
对外接口单元包括HDMI显示接口、串口、JTAG接口等电路,实现图像显示、位置坐标传输和调试下载等功能。
1.2 硬件设计
该系统硬件电路设计为两部分:FPGA主控板和高速底板,二者通过规范化的高速连接器进行互联和信号传输。主控板选用成品高速FPGA核心板,底板则采用4层PCB板设计,整合了CMOS电路、HDMI显示电路、电源电路、串口电路等。
底板设计主要是对上述各部分电路进行合理布局布线。其中,由于CMOS传感器输出的是低压差分信号(Low Voltage Differential Signal,LVDS),每路数据速率可以达到720 Mb/s,设计时必须考虑信号完整性。
布线时对该信号进行了特殊的处理,严格遵循高速差分线的规则:每对差分线平行布线,尽可能保持相同的最小距离,且小于线宽;减少过孔次数;布线拐角大于90°;差分阻抗控制在100 Ω,与差分信号接收端的100 Ω端接电阻相匹配,减少信号的反射;每组差分线布线长度尽可能保持一致;各组差分线之间保持较大距离。
通过以上措施,保证高速差分信号的信号完整性,以及各组信号较小的延迟差。
2 软件系统设计
软件设计主要实现使能控制和寄存器配置两种功能。使能控制通过ARM处理器的IO操作控制CMOS的时钟、供电;寄存器配置是ARM通过SPI总线IP核与CMOS传感器进行通信,对一些必要的寄存器进行配置,主要包括窗口大小、图像深度、运行模式、图像数据输出等。
通过配置CMOS内部寄存器,使CMOS传感器输出8 bit深度、560×480分辨率、大于1 000 f/s的高速视频流图像,经LVDS接口传输至FPGA进行数据处理及算法实现。
3 信号处理及检测算法FPGA实现
3.1 目标检测原理
3.1.1 目标提取
进行目标检测,首先需要将图像中的目标与背景区分并提取出来。结合应用场景,本系统选用背景差分法加阈值分割的方法对目标进行提取。
首先获取清晰稳定的背景图像,然后将当前帧图像与背景图像对应像素值做差,完成差分运算。接着将差值与设定阈值进行比较,若大于阈值,则判定为1,即运动前景;反之为0,即背景,生成二值化图像。
3.1.2 质心检测
本系统所要检测的目标为一球体,进行阈值分割之后的二值化图像中,目标表现为一个圆形亮斑。考虑到目标的特殊性,同时配合FPGA流水线结构的特点,本文通过圆直径检测的方法,找出X方向和Y方向上直径所在直线的交叉点,从而确定圆心所在位置。
具体方法如图2所示:将二值化图像每行的像素灰度值相加,相加之和两两比较,在直径所在的行上将会产生一个最大值,该最大值所对应的行数即视为圆心的Y坐标。列方向上进行相同操作也可得到X坐标。
圆直径检测计算圆心的方法配合FPGA流水线结构,在读取图像的同时进行处理和解算,可以最大程度减少检测延迟,提高实时性。
3.2 FPGA逻辑设计
CMOS传感器图像数据的传输按照自左向右、自下而上逐行进行,每8个像素为一组,称为一个kernel。由于目标帧频>1 000 f/s,每帧图像更新的周期<1 ms,而其中大部分时间用来获取图像,无法在当前帧周期内完成图像缓存和处理过程。
本系统充分利用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纸作为背景,检测目标为一黑色碳球;镜头为焦距6 mm的工业镜头,镜头与目标距离20 cm,测试时通过平板LED灯进行补光。测试主要分为精度测试、速度测试。
4.2 精度测试
相机开启后,首先采集500帧图像作为背景帧。后将目标固定于背景纸上,连续采样10 000次,测试单点采集精度,并通过串口输出目标位置,绘制图像。实验重复10次,测试结果如图4所示,测试的单点精度典型值为3×3(像素)。
4.3 速度测试
4.3.1 帧率测试
当相机运行在8 bit深度、560×480分辨率下,其帧率理论值为1 164 f/s。帧率大小通过以下方式进行测试:将系统置于运行模式,打开串口工具接收坐标数据,同时进行计时,通过一定时间内接收的坐标个数计算帧率。
实验结果如下:系统运行10 s,共接收11 871个坐标数据,得到帧率测量值为1 187 f/s。考虑到计时误差的因素,可以得出,测量帧率与理论帧率基本一致,满足系统设计要求。
4.3.2 运动测试
通过对目标物体自由落体过程进行检测,来进行系统运动测试。目标由静止状态自由落下,系统捕捉整个过程并将实时位置发送到串口。通过对接收的位置坐标进行分析,得到图5所示的运动轨迹图以及图6所示的Y轴方向位移-时间关系图。
由图6可以看出,位移曲线与理论曲线趋势基本一致,且略小于理论值。测试过程中,目标实际下落距离为60 mm,理论下落时间应为0.11 s。而实际测量中,系统采集了140帧图像,实际下落时间为0.12 s,比理论时间长0.01 s。
分析测试结果:首先应当考虑空气阻力的因素对自由落体运动产生影响,导致加速度的值小于重力加速度,进而使位移量小于理论值。另外,由图5可以看出,下落方向与Y坐标方向并非完全重合,存在X方向的位移,所以Y方向的位移小于预计值。考虑到以上两个因素的影响,可以认为相机准确检测到了物体的高速运动过程。
5 结论
本文研制了一套高帧频视觉实时目标检测系统,从硬件设计、软件配置、FPGA算法实现分别进行了介绍。采用了FPGA近端直接进行智能处理的策略,设计了流水线处理的结构,极大地解决了高速智能视觉检测系统的实时性问题。最后对系统进行了测试,结果表明,系统实现了560×480分辨率、1 100 f/s高速视频流的实时目标检测,精度达到3个像素。该系统可以应用到各种高速检测的场景中,例如位移速度测量、振动分析、高速目标监测与控制等,后续工作将完善优化算法,提高检测的精度,并从圆形目标推广到不规则目标,提高背景变化时检测的鲁棒性。
参考文献
[1] 杜建宝,张祖锋.基于FPGA的运动目标检测系统的设计[J].仪器仪表用户,2018(3):40-42.
[2] 王晓娟,翟成瑞.基于FPGA联合Sobel算法的实时图像边沿检测系统的设计与实现[J].计算机测量与控制,2017,25(1):34-37.
[3] 钱锋,杨名宇,李刚,等.基于DSP+FPGA架构的猫眼目标快速检测系统[J].光电子·激光,2016(8):863-869.
[4] 温杰,李锦明.基于FPGA的实时图像边沿检测系统的实现[J].电子技术应用,2015,41(10):65-67.
[5] 邵鹏,杨晨,张晋敏.基于FPGA的自适应阈值运动目标检测[J].应用光学,2017,38(6):903-909.
[6] 张浩.低空目标探测雷达高速目标检测与跟踪技术研究与实现[D].成都:电子科技大学,2016.
[7] ISHII I,TATEBE T,GU Q Y,et al.2000 fps real-time vision system with high-frame-rate video recording[C].Proceedings of IEEE International Conference on Robotics & Automation,2010:1536-1541.
[8] OKUMURA K I,RAUT S,GU Q Y,et al.Real-time feature-based video mosaicing at 500 fps[C].IEEE/RSJ International Conference on Intelligent Robots and Systems.IEEE,2014:2665-2670.
[9] CHEN J G,WADHWA N,CHA Y J,et al.Modal identification of simple structures with high-speed video using motion magnification[J].Journal of Sound & Vibration,2015,345:58-71.
[10] 刘珂.基于ZYNQ的高速图像采集处理平台设计与验证[D].济南:山东大学,2016.
[11] 王莹,高美凤.基于FPGA的视频图像目标检测系统[J].计算机系统应用,2017,26(6):98-102.
[12] 刘明.基于FPGA的红外图像识别与跟踪系统[D].成都:电子科技大学,2016.
[13] 苏峰,凌清,高梅国.红外小目标实时检测系统实现[J].激光与红外,2008,38(8):826-829.
[14] 于帅.基于CMOS图像传感器的高速相机成像电路设计与研究[D].北京:中国科学院大学,2014.
作者信息:
杨鲁新1,2,董文博1
(1.中国科学院空间应用工程与技术中心 中国科学院太空应用重点实验室,北京100094;
2.中国科学院大学 计算机与控制学院,北京101408)