APP下载

高速动态图像目标识别算法的设计与实现

2022-03-30张太然朱建国宋玉贵

计算机测量与控制 2022年2期
关键词:动态传输背景

张太然,朱建国,宋玉贵,王 永

(1.西安工业大学 光电工程学院,西安 710021;2.中国人民解放军63850部队,吉林 白城 137000)

0 引言

在弹箭研制、生产与训练过程中,通常需要对弹箭的飞行参数如位置、姿态等进行跟踪测试。随着现代高超音速弹箭技术的飞速发展,使得相关的测试手段也愈发面临挑战。高速摄影技术[1]是目前用于跟踪测量高速弹箭的常用手段,为了捕获更高速的目标,高速摄影的速度也不断提高,相应的图像数据采集速度也需要急剧提升,而且需要配备额外的精确触发设备以减少无效图像数据带来的存储、传输等成本开销。这样就会使测试系统变得庞大,可移动性变差,如果图像采集系统能够配备实时完善的动态图像识别功能将会大大简化此类高速图像测试测量系统的架构,提高系统的易部署性能。

运动目标检测技术是利用计算机视觉技术去除视频中时间和空间中的冗余信息以提取空间位置变化的过程,是计算机视觉领域的重要分支[2],也是目标跟踪、运动图像编码、安全监控等视频分析及处理应用的关键步骤[3]。

目前主流的移动目标检测算法主要分为3类[4]:背景差分法[5-7]、光流法[8-9]和帧间差分法[10-12]。文献[13]对常见的视频序列中的运动目标检测方法进行研究和分析, 并对这些方法的优越性和不足进行了比较,背景差分法检测效果较好,可以满足实时处理的要求,但是最终检测的好坏取决于背景图像的构造,如果构造不好再则不能及时地适应环境的变化[14];光流法可以有效地识别出运动目标但是需要专业的硬件支持,而且对FPGA内部资源要求很高; 帧间差分算法是最常用的目标图像检测算法,但是由于是利用相邻两帧的图像进行处理容易发生“空洞”以及针对速度快的目标容易出现 “双影”现象[15]。

本文在传统背景差分算法的基础上进行优化,利用FPGA特殊的结构,通过乒乓操作实现背景的实时更新,再通过流水线操作完成背景差处理,检测到动态目标,相对传统算法,新算法对FPGA操作平台更加容易实现同时对环境的适应性更强,并且在对图像进行二值化处理后再进行低通滤波处理,可以有效地降低噪声污染,对动态图像的捕获率可以达到99%。

1 背景差分算法原理

背景差分算法主要需要通过以下操作完成:背景建模、前景检测以及模型更新。该算法的基本思想将此刻获取的每一帧图像与事先存储的背景图像进行做差处理,对差值图像数据进行二值化处理,超出阈值的动态区域则是目标图像。该算法设计简单,通过做差可以直接得出运动目标的位置、形状以及大小等信息,能够获取完整的价目标区域。背景差分图像算法中背景图像反映的是当前的图像背景,包括当前背景中静止的以及运动的背景图像信息,当前帧包含了感兴趣的运动目标信息和环境背景信息[16]。通过对当前图像与背景图像做差,即做差所得到的信息就是当前感兴趣的运动目标。该算法的原理如图1所示。

图1 传统背景差分法原理图

传统的背景差分算法,在最初的时候,捕获一张图片进行数据分析,然后将这张图片作为背景图像存储到存储器,将采集到的实时图像作为当前图像,然后将二者进行做差处理,直到获取到目标图像前,背景都是不变的,但实际上,不同时刻环境变化很大,所以外部干扰很大,因此传统的背景差分算法不能应对复杂环境下的背景变化,只适合单一背景。

改进的背景差分算法相针对背景建模进行了优化,该算法是通过将每次采集到的图像都先进行缓存,然后将下一帧采集到的图像与上一刻采集到的图像进行做差,做差得到的就是目标图像。由于本系统两帧图像之间时间间隔只有7.4 μs,所以可以相当于上一帧的图像就是当前帧的图像背景,这样就可以保证背景是实时变化的。做差处理后,再进行二值化处理,并且对二值化化后的数据进行了低通滤波处理,即判断是否有相邻的几个像素点均为1,这样可以有效排除一些微小信号,降低外部蚊虫以及一些微小信号的干扰,从而达到高效的捕获率。改进的算法原理如图2所示。

图2 改进的背景差分原理图

1)选取第一行图像F0作为初始背景图像B0;

2)求当前图像Pt与背景图像Bt的差分图像;

Dt=Pt-Bt

(1)

3)对差分后的图像用阈值T进行二值化处理:

(2)

4)对二值化后的数据进行低通滤波处理:

(3)

5)当对两行图像数据做过差分处理后,就将第k行数据作为背景图像,第k+1行数据写入新的图像数据,作为当前图像,对其做差即可得到目标图像;下一次将第k+1行图像作为背景,写入第k行的图像作为当前图像,做差即可,依次反复做差即可得到完整的动态目标。

2 FPGA设计实现

2.1 总体设计方案

该系统采用自顶向下模块化的设计思想将系统分为图像数据接收模块、目标提取模块、DDR3读写控制模块和USB传输模块4个模块,系统框图如图3所示。

图3 系统框图

2.2 图像数据接收模块

Camera Link是一种基于视频应用发展而来的接口技术,是美国国家半导体实验室于2000年推出的一种通信协议,主要是针对视频输出与采集卡之间数据传输速度不匹配的问题[17]。CameraLink通信协议是基于Channel Link技术发展的,Channel Link标准规定了图像数据在传输过程中采用LVDS信号进行数据传输,4对LVDS信号在驱动器端并行传输,每路LVDS信号按照7∶1的比例串行序列化,每路LVDS信号在一个时钟周期内传输7 bit数据,4路LVDS总共28 bit数据,24位有效数据,4位信号位。然后还有1路LVDS信号传输时钟信号。

Camera Link标准定义了从A到H共8个端口,它们都是逻辑8位的字,低位用bit0,高位用bit7表示。Camera Link接口共有3种配置,分别为初级(Base)、中级(Medium)和高级( Full),在Full模式下的传输速率最高可以达到5.44 Gbps。在 Base配置模式下,只需一块 Channel Link接口芯片;而在 Medium配置模式下,则需要两块Channel Link接口芯片;在 Full配置模式下就需要3块Channel Link接口芯片[18]。3者需要的连接器、解码芯片以及端口分配情况如表1所示。

表1 端口分配以及连接器数量

本系统采用的是外部芯片实现对Camera Link协议传输的数据进行编码、解码。数据输入端通过芯片DS90CR287实现将28 bit并行数据转为4对LVDS信号进行传输,数据接收端通过外部芯片DS90CR288芯片将4对LVDS信号按照Camera Link协议转为28 bit并行数据传输给FPGA的IO部分。

图4为相机Base模式下输出的时序图,Clk是像素的同步时钟,Fval为帧有效信号,Lval为行有效信号,Data为数据信号,只有当行有效信号为高电平时,此时在像素时钟上升沿采集到的数据才为有效数据[19]。Medium模式可以理解为等同两个Base模式在同时进行传输数据,一个通过A~C端口传输,另一个则通过D~F端口进行传输数据;Full模式则可以理解为同时3个Base模式在进行数据传输,但是第3个Base模式不是传输24位数据而是传输16位数据,前两个与Medium相同,第3个则传输G~H两个端口数据。

图4 输出时序图

由于本设计采用的线阵相机,行频为140 kHz,一帧图像有4 096个像素点,每个像素点8位,因此由公式(4)算出每秒采集的数据量为546.875 MB,由于本设计采用的时钟是80 MHz时钟,因此base或者medium模式均不能满足数据的实时传输,因此本设计采用Camera Link Full模式进行数据采集。

140000×4096×8÷8÷1024÷1024=546.875 MB

(4)

为了接收高速线阵相机传输过来的数据,考虑到FPGA特殊的结构,该模块采用并行设计,利用3个fifo同时接收相机传输来的8组数据,将A-C写入一个fifo,D-F写入第二个fifo,G-H写入第三个fifo,只有当三个fifo均写满数据后,表示此时成功接收到图像数据。图像接收模块的仿真如图5所示,图中fval_r3表示帧有效,fifo_wr_en为高电平表示此时数据有效,准备写入fifo1;同理fifo_wr_en_1为高电平表示此时可以把数据写入fifo2,fifo_wr_en_2为高表示此时可以把数据写入fifo3。当检测到3个fifo里均有数据时,且写满时,再开始进入下一个模块处理。

图5 图像接收模块的仿真图

2.3 动态目标图像识别系统设计

为了满足动态目标图像的识别以及将检测到的有效的目标图像信息传输到上位机,在FPGA设计中采用并行流水线模块设计,并行设计如图6所示。将该系统分为两个子模块进行设计:动态目标识别模块以及DDR3数据缓存模块,由于FPGA并行操作的特点,两个模块同时进行操作。在动态目标识别算法中,通过流水线设计完成对图像的动态识别,由于通过调用fifo以及ram等FPGA内部资源,由于fifo以及ram的特性会造成几个时钟延时,因此相对原始数据采集输入的时刻有5个时钟周期的延时,一个时钟周期只有10 ns,所以延时50 ns,可以忽略不计,从而保证动态目标图像识别的实时性。在DDR3缓存模块中,考虑到存在连续运动的高速目标会被检测到,因此将DDR3分为32个区域,用来放置不同的动态目标,然后通过对DDR3的读写将连续运动的目标图像上传到上位机。

用动态目标识别模块输出的Flag信号来控制每一页的读写,可以保证每一个目标在每一页被采集。

上述两个模块同时进行处理,当动态识别模块未检测出目标图像时,DDR3的数据只会在当前页进行重复写,当检测到目标图像后,此时对DDR3下一页进行读写,当再次检测到目标图像的时i,继续写入下一页。由于并行处理,大大提高了算法执行的速度,同时通过DDR3的分页控制可以有高效的识别出连续检测。

图6 并行设计框图

2.3.1 动态目标识别

动态目标识别算法主要是在背景差分算法的基础上优化的,动态目标算法如图7所示。首先将第k行、第k+1行图像数据分别写入到FPGA内部的两个简单双口RAM中,然后在写下一行图像开始传输到第k行数据存储的RAM时,此时将两个RAM中数据同时读出来,对读出的数据进行绝对值做差处理,接着对做差之后的图像数据进行二值化处理,通过二值处理就可以识别出动态目标图像,但是考虑到在室外会存在蚊虫等外部环境干扰,因此在二值化处理以后,还增加了一个低通滤波处理,即当检测到有连续的几个大于阈值的像素点时,才表明此时采集到的图像数据为目标图像数据。由于采集的动态目标图像只有几厘米,最大的也就几十厘米,因此一幅图像所占有的像素行数非常少,通过对目标图像进行500行图像数据的延时,保证采集到的图像显示在外接屏幕中间,当延时结束输出一个标志位输出到DDR3模块,当DDR3接收到该信号时,开始对原始图像数据进行传输。

图7 动态目标算法框图

图8展示的是动态目标算法仿真图,该图通过modelsim10.7软件仿真得出的图,阈值(thresholdvalue)给的是14,阈值可以通过上位机经过USB发送到FPGA端进行阈值更改。当进行阈值处理后,通过判断连续为1的值是否满足设定的要求,设定的连续个数为6,通过判断flag_trigNum信号,此时为FFFF,满足低通滤波要求,此时表示检测到目标信号,输出flag_trig_r信号给DDR3模块,表示此时可以将数据写入到DDR3模块,图中的减数(jianshu)表示当前图像数据,被减数(beijianshu)表示的是背景图像。

图8 动态目标算法仿真图

2.3.2 DDR3控制模块

DDR3(double date rate SDRAM)的中文名称为双倍速率同步动态随机存储器,双倍速率是指在工作时钟的上下沿都会对数据进行采样[20]。通过上下沿采用的访问方式可以让该存储器相对普通存储器来说,采样频率会提高一倍,这种采样方式造成存储速率也得到提升。DDR3由8个bank组成,每个bank都是按照行、列形式排列,并且每个bank都对应一个片选信号(CS)。DDR3通过对bank地址以及行列地址的访问来进行数据读写。并且为了保证所偶数据不丢失,DDR3需要进行定时刷新。

DDR3控制模块是通过外挂两片DDR3实现的,主要实现对图像数据的实时缓存。利用XILINX提供的MIG IP核完成对DDR3的控制,首先DDR3进入空闲状态,当检测到写状态请求时,此时进入到写状态,当写地址计数等于写突发地址计数的时候,此时进入到状态结束状态,如果不等于写突发地址计数的时候则继续进入写状态;同样,对于读数据,当检测到都状态请求时,此时开始对DDR3的数据进行读取,当读地址满足读突发地址计数时,此时进入状态结束状态,反之继续对数据进行读取,DDR3的读写控制如图9所示。

图9 DDR3读写控制图

通过对DDR3地址进行控制,实现将一片128 M的DDR3划分为32个区域,同时第二片DDR3也进行同样的处理,就得到32个图像缓存区域,这样是为了实现可以对高速动态图像进行连续采集,采集原理就是:首先将采集到的图像数据存储在第一个存储空间,当动态目标识别模块检测到动态目标之后,就会给DDR3一个信号,此时DDR3会将图像采集模块输入的数据写入到第二个存储空间,同时将前一个存储空间的数据读出,并且往复循环读写,最终可以实现对高速连续的动态目标进行实时识别。

写数据仲裁模块,写数据两片DDR3是独立实现的,但是是同步的,当数据流进入仲裁模块后,此时检测是否有写命令以及写地址,如果二者都有,此时将数据写入到DDR3存储空间,当没有检测到目标检测模块给出的有效信号时,DDR3一直在同一个区域进行写数据,当写到空间最后一个地址时,覆盖最初的地址数据,继续写入数据。当检测到目标模块的有效信号时,此时开始将当前区域数据读出,执行读仲裁模块,同时,对接下来传输的数据写入到下一个区域。

2.4 USB传输模块

千兆网、PCIE、光纤、SATA等传输方式是目前主流的传输方式,但是这些传输方式要么逻辑代码复杂,占用资源多,要么布线复杂,会导致开发难度增大[21]。但是USB传输不同,随着USB芯片内部架构的发展,在芯片内部集成缓存以及DMA等传输接口,USB3.0的传输速率最高可以达到5 Gbit/s,可以满足该系统实时传输的要求,并且USB支持热插拔,使用方便,而且与计算机兼容性更好。

USB3.0采用FT601芯片作为该模块的接口芯片,该芯片的测试速率可以达到350 MB/s,并且改芯片采用QFN封装,后期方便调试。该芯片内部自带100 MHz的外部晶振,该时钟在位自己提供工作时钟的同时也可以为外部提供100 MHz时钟[20]。该芯片主要是通过控制内部fifo的空满标志位来实现对数据写入以及读出,实现对数据的实时传输。

对于USB传输模块,主要是通过状态机实现的,状态机转换如图10所示,Ref_n为可读标志位,低电平有效,Txe_n为可写标志位,也是低电平有效,当检测到Rxe_f为低电平以及fifo为空时,此时开始从DDR3读出数据;当检测到Txe_n为低电平且fifo为非空状态,此时把fifo的数据读出,传给上位机。

图10 USB传输模块状态机转换示意图

3 测试实验及其结果分析

3.1 系统的逻辑代码设计

验证本设计代码的可行性,系统采用的硬件平台是Xilinx公司的xc7a200tfbv676-2芯片,整个系统通过Vivado2018.2进行代码编写,图像采集模块用的是Basler4096-140 KM的高速线阵相机,获取黑白图像,通过Camera Link接口协议将采集到的图像信息传输给FPGA,通过FPGA完成对采集到的图像数据进行分析,识别出动态目标图像,并且利用流水线操作将采集到的图像数据通过FPGA写入到两片DDR3 SDRAM,最终将目标图像数据通过USB3.0传输到上位机。图11是整个系统的RTL图,图11中的1、2、3、4、5、6分别在下面做出解释。图12为整个系统消耗的资源以及该芯片所拥有的资源,LUT消耗15.15%,FF消耗8.8%,BRAM消耗53.84%,由此可知该芯片完全满足设计。

图11 系统整体RTL图

图12 系统资源消耗图

序列号1代表的是时钟分频模块,将外部晶振产生的80 MHz系统时钟,通过FPGA内部的PLL IP核对其进行分频、倍频,输出分别为100 MHz、160 MHz以及200 MHz的时钟。100 MHz作为外部DDR3的输入时钟,160 MHz作为目标识别算法模块所需要的时钟,200 MHz作为USB控制模块的时钟,通过PLL分频得时钟依旧是同源时钟,进行时序分析的时候容易进行处理。

序列号2代表的图像采集模块,将高速线阵相机传输过来的数据进行采集然后利用外部芯片对采集到的数据按照Camera Link协议对数据进行解析,然后输出对应Camera Link Full模式下的数据格式,Camera Link Full 模式下的数据输出有8个端口,data_dout代表的是A、B、C三个端口数据,data_dout_1代表的是D、E、F三个端口的数据,data_dout_2则代表的是G、H端口的数据,然后将该模块输出的数据输出到下一个模块,作为下一个模块的输入。

序列号3代表的模块是动态目标识别算法模块,该模块通过将图像采集模块输出的A、B、C、D、E、F、G、H端口输出的数据进行目标识别算法处理,当检测到目标图像后输出error信号,并且将有效数据拼接成128位输出到DDR模块。

序列号6代表的是DDR3控制模块,该模块通过利用DDR3的地址实现对DDR3存储器的分页处理,对DDR3的区域进行循环读写。当检测到External_trig信号为高电平时此时表示动态目标算法模块检测到目标图像,此时开始将有效数据写入DDR3。

序列4代表的模块是缓存模块,将DDR3的有效数据读出,然后拆分成64位数据通过fifo实现数据缓存,当USB模块给出命令时,将缓存数据写入到USB模块。

序列5表示的是USB控制模块,该模块通过USB芯片端反馈的信号,对DDR3芯片内部的数据进行读出,将有效数据传输给上位机,同时接收上位机发出的指令,对整体系统进行启动与停止。

3.2 实验验证

本次实验设备主要有5部分组成,分别是图像采集系统完成对图像的采集与传输,图像处理系统完成对有效目标图像后期的处理,光纤和数据同步系统是由于有两个同样的采集系统在对数据进行采集是为了保持数据同步,外接一个显示屏主要是对采集到的图像进行显示。

最终采集到的目标图像在显示屏中显示,采集到的有效图像数据如图13(a)、(b)所示,最终实验表明可以有效的识别动态图像,由于使用是背景差分算法,所以只有检测到的目标图像是黑点,其余均是白色背景,即图片中被黑色圆圈圈中的黑点即是检测到的目标图像。

图13 检测到的目标图像

4 结束语

本实验针对高速运动物体的实时目标检测,提出了一种针对基于改进背景差分算法的目标检测算法,并设计了一套基于FPGA的图像采集系统,通过对6 mm的BB弹进行测试,验证了该算法可以实时检测出高速运动的目标图像,并且通过对DDR3的分页控制可以实现对连续射击的枪弹图像进行缓存,利用USB将采集到的数据实时传输到上位机。该设计后续还可以应用到车辆检测、军用监控以及半导体材料定位等方面。

猜你喜欢

动态传输背景
国内动态
国内动态
等腰直角三角形背景下的旋转相似
国内动态
地铁SDH、OTN传输组网分析
《论持久战》的写作背景
动态
广播电视信号传输的技术分析
浅谈垂直极化天线在地面数字电视传输中的应用
4K传输