基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求。在这种应用中,视觉系统相对雷达、声纳具有信息量大、抗干扰能力强、软件处理灵活、体积重量小、成本低等特点,但缺点是传输和处理需要的时间更多,因此很难满足图像信息传输和处理的实时性要求。

一般通过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)

ibm db2获取目标时间与当前时间的差值_高帧频视觉实时目标检测系统相关推荐

  1. ibm db2获取目标时间与当前时间的差值_【学术论文】高帧频视觉实时目标检测系统...

    摘要 为了实现高速场景下的智能实时目标检测,设计了一种基于ZYNQ7000系列FPGA的高速相机平台,并利用该平台进行目标检测算法实现,形成了一套高帧频实时目标检测系统样机. 该系统将高速CMOS图像 ...

  2. 基于神经网络的目标检测论文之目标检测系统:实时路况检测系统的设计与实现

    第五章 实时路况检测系统的设计与实现 物体识别技术被广泛应用于人们的生产生活中.随着深度学习与云计算的飞速发展,带动了物体识别技术产生质的飞跃.高分辨率图像和检测的实时性要求越来越高. 从本章开始,我 ...

  3. grafana计算不同时间的差值_大数据时代!如何基于Spark Streaming构建实时计算平台...

    随着互联网技术的迅速发展,用户对于数据处理的时效性.准确性与稳定性要求越来越高,如何构建一个稳定易用并提供齐备的监控与预警功能的实时计算平台也成了很多公司一个很大的挑战. 自2015年携程实时计算平台 ...

  4. wpf datagrid 计算两个列的差值_天体到达指定方位角的时间计算

    接上一篇天体的升起.中天.落下时间 - 且听风吟的文章 - 知乎,天体的升起落下和中天是满足一些特殊条件,对于一般情况,如指定一个方位角,要求其到达的时间,我们也可以计算出来. 可以先判断一个天体的方 ...

  5. sim插拔识别时间_特斯拉+树莓派实现车牌识别检测系统

    转自机器之心 | 作者:Robert Lucian Chiriac | 参与:王子嘉.思.一鸣 怎样在不换车的前提下打造一个智能车系统呢?一段时间以来,本文作者 Robert Lucian Chiri ...

  6. sql获取某列出现频次最多的值_业务硬核SQL集锦

    戳上方蓝字关注我  这两年学会了跑sql,当时有很多同学帮助我精进了这个技能,现在也写成一个小教程,反馈给大家. 适用对象:工作中能接触到sql查询平台的业务同学(例如有数据查询权限的产品与运营同学) ...

  7. sql获取某列出现频次最多的值_那些SQL里面踩过的坑

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 1. 关于空值 有如下一张表 当我们输入如下查询语句时: SELECT * FROM ...

  8. 怎么获取上一个html网页传过来的值_爬虫:一个简单实例说明爬虫机制

    爬虫,我的简单理解就是通过写定的程序,利用计算机的高速的优势,批量高效的获取数据的一种机制.通常我们访问网站是通过浏览器,而爬虫就是通过程序访问网站,也就是让程序伪装成浏览器进行访问. ​Reques ...

  9. 使用Pytorch从零搭建高精准度实时目标检测框架

    个人简介:CSDN百万访问量博主,普普通通男大学生,深度学习算法.医学图像处理专攻,偶尔也搞全栈开发,没事就写文章,you feel me? 博客地址:lixiang.blog.csdn.net 文章 ...

最新文章

  1. 私有5g网络_欧洲通过FUDGE5G的启动来支持工业4.0的云原生私有5G
  2. bzoj 3329: Xorequ
  3. 视图系统CBV 和 response
  4. Processing 字体变形
  5. python精确运算_Python:执行精确的浮点数运算
  6. 数据结构之栈与递归的实现及应用(斐波拉契数列递归解法和strlen递归解法)
  7. 【恋上数据结构】图基础知识介绍
  8. Vue自定义指令—— 完美解决H5页面不同尺寸屏幕的适配问题
  9. 第四十六讲 ASP.NET实例编程(五)
  10. 隐马尔可夫模型拼音汉字输入法
  11. Unity人物残影实现
  12. 2019年第二阶段我要变强个人训练赛第十五场
  13. 强化学习Q learning算法最简单的入门(含java实现的小例子)
  14. C语言计算BMI值,一看就会
  15. 绍兴一中信心赛 T1排列
  16. 2018最新精选的Go框架,库和软件的精选列表 三
  17. sql查询每科成绩的最高分_SQL查询语句: 查询 每科目分数最高的5项(学生姓名,科目,分数)...
  18. 关闭交互式服务检测(UI0Detect)
  19. PHP 使用parse_ini_file读取文本文档遇到中文乱码问题
  20. [ZJOI2016]大森林(LCT)

热门文章

  1. 2022-2028年中国演出市场深度调研与发展前景报告
  2. 字符串全排列的问题 python和c语言实现
  3. 全文翻译(一):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
  4. NVIDIA GPUs上深度学习推荐模型的优化
  5. linux ftp随机端口,linuxFTP生产环境配置
  6. Android CheckBox 点击的时候没有效果
  7. Kotlin 使用list.add 时候报错的处理方法
  8. Java 静态变量,静态方法,静态常量(java static 关键字)
  9. select 和 order by
  10. avpicture_fill的实现