一种基于ZYNQ加速的运动目标检测系统的制作方法

文档序号:29923378发布日期:2022-05-07 10:08阅读:248来源:国知局
一种基于ZYNQ加速的运动目标检测系统的制作方法
一种基于zynq加速的运动目标检测系统
技术领域
1.本发明属于zynq运动目标检测技术领域,具体涉及一种基于zynq加速的运动目标检测系统。


背景技术:

2.计算机视觉和图像处理算法在许多工业、医疗、商业和研究相关领域有着广泛应用。而运动目标检测是计算机视觉的重要组成部分。现代成像系统以高帧率提供高分辨率图像,并且通常需要执行复杂的计算来处理图像数据。然而,在许多应用中需要对数据进行快速处理,或者需要尽量减少分析结果的延迟。在这些应用中,中央处理单元(cpu)不能很好的完成相应的任务,因为它们无法以足够的速度执行计算。


技术实现要素:

3.针对上述的技术问题,本发明提供了一种体积小、处理速度快、应用范围广的基于zynq加速的运动目标检测系统。
4.为了解决上述技术问题,本发明采用的技术方案为:
5.一种基于zynq加速的运动目标检测系统,包括图像采集模块、图像缓存模块、图像处理模块、图像显示模块,所述图像采集模块分别连接有图像缓存模块和图像处理模块,所述图像处理模块分别与图像缓存模块、图像显示模块连接,所述图像缓存模块连接有图像显示模块。
6.所述图像采集模块包括sccb控制模块、摄像头、第一数据转换模块,所述 sccb控制模块连接有摄像头,所述sccb控制模块控制摄像头,对环境中的运动目标完成实时采集,所述摄像头连接有第一数据转换模块,所述第一数据转换模块分别连接有图像缓存模块和图像处理模块,所述第一数据转换模块将采集后的rgb565图像转换为axi4_stream数据流。
7.所述图像缓存模块包括ddr3缓存模块、axi总线、vdma0和vdma1,所述ddr3缓存模块通过axi总线分别与vdma0和vdma1连接,所述vdma0 连接有图像采集模块的第一数据转换模块、图像处理模块,所述vdma1连接有图像显示模块,所述vdma0和vdma1用于将ax i4_stream格式的数据流转换为memory map格式或将memory map格式的数据转换为axi4_stream数据流。
8.所述图像显示模块包括第二数据转换模块、显示模块、hdmi显示,所述第二数据转换模块通过显示模块连接有hdmi显示,所述第二数据转换模块连接有 vdma1,所述第二数据转换模块将axis数据流转换成hdmi视频协议显示所需要的包含其行场同步信号。
9.所述图像处理模块包括格式转换模块、图像滤波模块、帧差运算模块、二值化模块、目标显示模块,所述格式转换模块通过图像滤波模块连接有帧差运算模块,所述帧差运算模块通过二值化模块连接有目标显示模块。
10.所述摄像头采用ov5640摄像头。
11.一种基于zynq加速的运动目标检测系统的检测方法,所述图像处理模块的处理方
法为:包括下列步骤:
12.s1、图像格式转换:将摄像头输入的彩色视频流分为两个,一个用于转灰度,进行后续的图像处理;另一个则用于在图像处理完后进行显示跟踪;
13.将转换为axi4_stream数据流的rgb565数据再转换为rgb888数据,将高位不变,低位补充,即{r[4:0],r[2:0]},{g[5:0],g[2:0]},{b[4:0],b[2:0]}
[0014]
y=0.299r+0.587g+0.114b
[0015]
cb=0.568(b-y)+128=-0.172r-0.339g+0.511b+128
[0016]
cr=0.713(r-y)+128=0.511r-0.428g+128
[0017]
在转换矩阵*256倍后,只需要将y、cb、cr向右移位8位即可还原,得到如下公式:
[0018]
y=((77*r+150*g+29*b)>>8)
[0019]
cb=((-43*r-85*g+128*b)>>8)+128
[0020]
cr=((128*r-107*g-21*b)>>8+128
[0021]
由于verilog运算中出现负数会引起错误,并占用较高的资源,因此对上述公式进行变换,得到如下公式:
[0022]
y=(77*r+150*g+29*b)>>8
[0023]
cb=(-43*r-85*g+128*b+32768)>>8
[0024]
cr=(128*r-107*g-21*b+32768)>>8
[0025]
所述r、g、b分别表示以红、绿、蓝为三原色的颜色空间模型,所述y、 cb、cr是欧洲电视系统所采用的一种颜色编码方法,所述y表示明亮度,即灰阶值,所述cb和cr表示色度,用于描述影像的饱和度和色调;所述r、g、b 与y、cb、cr的转换为色彩空间的转换,即将r、g、b的三原色色彩空间转换为y、cb、cr所表示的亮度与色度的色彩空间模型;
[0026]
s2、中值滤波:使用verilog实现中值滤波算法时,使用流水线操作的方式对3x3的滤波模块进行快速排序;
[0027]
为了获得3x3的滤波模板,先对前两行的数据进行寄存,因此引入一个 ram,当第三行数据到达时将其读出,这时会得到一个3x1的矩阵,接下来连续寄存三次这个3x1的矩阵,获得所需要的3x3模板,然后通过verilog实现中值滤波;
[0028]
s3、帧差法及二值化:将摄像头输入的一帧图像数据当做当前帧,vdma 会通过乒乓操作来进行帧缓存,即向ddr3缓存模块的地址0写入当前的图像数据时,会同时在地址1读取前一帧缓存的图像数据,做帧差运算时的关键是需要将当前帧与前一帧的每个像素数据一一对齐,因此在等待当前帧有效时, vdma从ddr3缓存模块读取前一帧数据,缓存进fifo,同时因为fifo的读写都需要一个时钟周期,需要对当前帧数据延迟两个时钟周期来对齐图像数据,此时的两帧数据在经过图像处理之后便可进行帧差运算,再对差分结果进行二值化分析,当差分结果绝对值大于所设定的阈值时,结果为1,显示为白色,反之则为黑色,zynq对只有0和1的二值数据处理会非常简单,具有良好的实时性。二值分析完成后,统计所有值为1的像素点,即为检测到的运动目标;
[0029]
s4、目标显示:在得到二值分析的结果后,用方框框住运动目标所在区域,并将方框叠加到摄像头输出的原始rgb彩色图像数据上,完成实时的运动目标的检测。
[0030]
所述s2中verilog实现中值滤波模块的方法为:
[0031]
s2.1、首先,为了求出矩阵中每一行的max,med和min值,需要例化三次排序模块;
[0032]
s2.2、其次,需要分别获得min_of_max,med_of_med和max_of_min值,为此需要再例化三次排序模块,将第一步中获得的每行3个max,med和min 值输入排序模块中;
[0033]
s2.3最后,再次例化一次排序模块,将第二步中输出的三个值作为输入,取其中值。
[0034]
所述s4中将方框叠加到摄像头输出的原始rgb彩色图像数据上的为:通过对二值化后为1的像素点计算比较,获得运动目标区域的上下左右边界,而后在原始的彩色图像数据上,再计算获得每个像素点的坐标值,当坐标值在边界上时,将对应的像素点r信号赋值为255,即可获得红色的显示边框,而后输出到hmdi显示屏上,完成对运动目标的显示跟踪。
[0035]
本发明与现有技术相比,具有的有益效果是:
[0036]
1、本发明不需要依靠传统的计算机平台,在系统体积比上具有显著优势,方便部署。
[0037]
2、本发明和fpga相比,可以直接直接调用ddr3等片外资源。和传统平台相比,在图像数据的读写存储中使用乒乓存储加速,仅需要几个时钟周期,可并行处理;相比之下,传统的图像必须顺序处理完当前帧才可以进行下一帧的处理,处理速度具有巨大优势。
[0038]
3、本发明和基于传统平台的算法相比,本发明将传统算法移植后,可通过流水线操作并行运算,加快了算法的运算速度。
[0039]
4、本发明由于本设计加速了图像存储和处理运算,在传统平台上无法处理的1280
×
720分辨率15fps的图像可以在本发明上处理。
附图说明
[0040]
图1为本发明的系统设计框图;
[0041]
图2为本发明中值滤波的滤波模板图;
[0042]
图3为本发明获得3x3的滤波模板的算法框图。
具体实施方式
[0043]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0045]
一种基于zynq加速的运动目标检测系统,如图1所示,包括图像采集模块、图像缓存模块、图像处理模块、图像显示模块,图像采集模块分别连接有图像缓存模块和图像处理模块,图像处理模块分别与图像缓存模块、图像显示模块连接,图像缓存模块连接有图像显示模块。
[0046]
进一步,图像采集模块包括sccb控制模块、摄像头、第一数据转换模块, sccb控制
模块连接有摄像头,sccb控制模块控制摄像头,对环境中的运动目标完成实时采集,摄像头连接有第一数据转换模块,第一数据转换模块分别连接有图像缓存模块和图像处理模块,第一数据转换模块将采集后的rgb565图像转换为axi4_stream数据流。
[0047]
进一步,图像缓存模块包括ddr3缓存模块、axi总线、vdma0和vdma1, ddr3缓存模块通过axi总线分别与vdma0和vdma1连接,vdma0连接有图像采集模块的第一数据转换模块、图像处理模块,vdma1连接有图像显示模块, vdma0和vdma1用于将ax i4_stream格式的数据流转换为memory map格式或将memory map格式的数据转换为axi4_stream数据流。
[0048]
进一步,图像显示模块包括第二数据转换模块、显示模块、hdmi显示,第二数据转换模块通过显示模块连接有hdmi显示,第二数据转换模块连接有 vdma1,第二数据转换模块将axis数据流转换成hdmi视频协议显示所需要的包含其行场同步信号。
[0049]
进一步,图像处理模块包括格式转换模块、图像滤波模块、帧差运算模块、二值化模块、目标显示模块,格式转换模块通过图像滤波模块连接有帧差运算模块,帧差运算模块通过二值化模块连接有目标显示模块。
[0050]
进一步,优选的,摄像头采用ov5640摄像头。系统选用的ov5640摄像头可以通过sccb控制总线协议来配置修改ov5640对应的寄存器地址,从而实现多种分辨率和帧率的rgb图像采集。ov5640可以通过dvp接口输出最高30帧的 1080p分辨率图像,完全可以满足设计要求。ov5640输出的数据是行场同步信号控制的8位有效数据,本系统中采用的图像格式为rgb565,因此将采集到的数据转换为rgb图像数据时每个像素点采集需要两个时钟,首先采集r的5bit数据和 g的前3bit,第二个时钟里会采集g的后3bit和b的5bit数据,而后拼接成一个完整的16bitrgb565数据。而为了将rgb565格式的数据写入ddr3,必须先转换成vdma使用的axi4_stream(下文称为axis)的格式数据流,而后续的图像处理模块也需要统一为此格式,此工作通过配置video in to axi4_stream的ip 核来完成。
[0051]
进一步,使用xlinx公司的xc7z020开发板作为硬件平台,其ps端为双核 arm cortex-a9,pl端为xlinx artix7系列的fpga架构,开发环境为vivado 18.3。
[0052]
一种基于zynq加速的运动目标检测系统的检测方法,图像处理模块的处理方法为:包括下列步骤:
[0053]
实现运动目标的检测,需要对运动目标的图像进行一系列的处理,如数据格式转换、滤波、二值化、形态学处理、目标指示等。在基于cpu的处理方法中,这些图像处理算法都是十分成熟的,但是cpu无法实时处理帧率较高(30 帧/秒)和高分辨率图像(640
×
480),此时的运动目标检测必须在并行处理硬件加速的帮助下才能完成,zynq就是其中一种新的并行加速硬件。
[0054]
但是zynq平台上并不能实现所有的算法,需要根据其特点挑选合适的算法,用hdl重新对这些算法进行描述,并构建一个个分解开来的算法功能模块,最后再综合成所需要的算法。下文介绍帧差法运动目标检测的具体实现方法。
[0055]
s1、图像格式转换:摄像头采集到的彩色图像处理运算量很大,因此需要先将其转换为灰度数据,在进行后续的数据处理,然而在图像显示时,灰度图像无法很好地完成任务,因此需要将摄像头输入的彩色视频流分为两个,一个用于转灰度,进行后续的图像处理;另一个则用于在图像处理完后进行显示跟踪;
[0056]
将转换为axi4_stream数据流的rgb565数据再转换为rgb888数据,将高位不变,低
位补充,即{r[4:0],r[2:0]},{g[5:0],g[2:0]},{b[4:0],b[2:0]}
[0057]
y=0.299r+0.587g+0.114b
[0058]
cb=0.568(b-y)+128=-0.172r-0.339g+0.511b+128
[0059]
cr=0.713(r-y)+128=0.511r-0.428g+128
[0060]
在转换矩阵*256倍后,只需要将y、cb、cr向右移位8位即可还原,得到如下公式:
[0061]
y=((77*r+150*g+29*b)>>8)
[0062]
cb=((-43*r-85*g+128*b)>>8)+128
[0063]
cr=((128*r-107*g-21*b)>>8+128
[0064]
由于verilog运算中出现负数会引起错误,并占用较高的资源,因此对上述公式进行变换,得到如下公式:
[0065]
y=(77*r+150*g+29*b)>>8
[0066]
cb=(-43*r-85*g+128*b+32768)>>8
[0067]
cr=(128*r-107*g-21*b+32768)>>8
[0068]
其中:r、g、b分别表示以红、绿、蓝为三原色的颜色空间模型,y、cb、 cr是欧洲电视系统所采用的一种颜色编码方法,y表示明亮度,即灰阶值,cb 和cr表示色度,用于描述影像的饱和度和色调;r、g、b与y、cb、cr的转换为色彩空间的转换,即将r、g、b的三原色色彩空间转换为y、cb、cr所表示的亮度与色度的色彩空间模型;
[0069]
s2、中值滤波:为了提升图像质量,需要消除转换得到的灰度图像中椒盐噪声和脉冲噪声等影响,因此对图像进行中值滤波,它产生的模糊很小,对边缘特性也具有良好的保持效果。中值滤波是一种非线性的平滑滤波,如图2所示为中值滤波的滤波模板。使用verilog实现中值滤波算法时,使用流水线操作的方式对3x3的滤波模块进行快速排序。相比之下使用冒泡法等cpu使用的方法就会特别复杂,增加运算时间,如图3所示为算法框图:
[0070]
为了获得3x3的滤波模板,先对前两行的数据进行寄存,因此引入一个 ram,当第三行数据到达时将其读出,这时会得到一个3x1的矩阵,接下来连续寄存三次这个3x1的矩阵,获得所需要的3x3模板,然后通过verilog实现中值滤波;
[0071]
s3、帧差法及二值化:将摄像头输入的一帧图像数据当做当前帧,vdma 会通过乒乓操作来进行帧缓存,即向ddr3缓存模块的地址0写入当前的图像数据时,会同时在地址1读取前一帧缓存的图像数据,做帧差运算时的关键是需要将当前帧与前一帧的每个像素数据一一对齐,因此在等待当前帧有效时, vdma从ddr3缓存模块读取前一帧数据,缓存进fifo,同时因为fifo的读写都需要一个时钟周期,需要对当前帧数据延迟两个时钟周期来对齐图像数据,此时的两帧数据在经过图像处理之后便可进行帧差运算,再对差分结果进行二值化分析,当差分结果绝对值大于所设定的阈值时,结果为1,显示为白色,反之则为黑色,zynq对只有0和1的二值数据处理会非常简单,具有良好的实时性。二值分析完成后,统计所有值为1的像素点,即为检测到的运动目标;在此算法中,获取矩阵,矩阵排序,取值和求中值都为并行运算,可以显著提高处理速度。
[0072]
s4、目标显示:在得到二值分析的结果后,用方框框住运动目标所在区域,并将方框叠加到摄像头输出的原始rgb彩色图像数据上,完成实时的运动目标的检测。
[0073]
s2中verilog实现中值滤波模块的方法为:
[0074]
s2.1、首先,为了求出矩阵中每一行的max,med和min值,需要例化三次排序模块;
[0075]
s2.2、其次,需要分别获得min_of_max,med_of_med和max_of_min值,为此需要再例化三次排序模块,将第一步中获得的每行3个max,med和min 值输入排序模块中;
[0076]
s2.3最后,再次例化一次排序模块,将第二步中输出的三个值作为输入,取其中值。
[0077]
s4中将方框叠加到摄像头输出的原始rgb彩色图像数据上的为:通过对二值化后为1的像素点计算比较,获得运动目标区域的上下左右边界,而后在原始的彩色图像数据上,再计算获得每个像素点的坐标值,当坐标值在边界上时,将对应的像素点r信号赋值为255,即可获得红色的显示边框,而后输出到hmdi 显示屏上,完成对运动目标的显示跟踪。
[0078]
初步实验结果显示在摄像头帧率设置为30fps的情况下时,每一帧图像数据的传输需要消耗33.33ms的时间,而在opencv只能顺序处理图像的情况下,图像处理所用的时间对于每帧图像传输来说是无法忽视的,因此会有卡顿。在 1280
×
720的分辨率下,opencv过于卡顿,无法处理。而对于zynq平台来说,图像处理花费的时间对于33.33ms基本可以忽视,因此视觉效果很流畅,会具有相当好的实时性。在1280
×
720的分辨率下,zynq平台仍可以较好地完成任务。
[0079]
上面仅对本发明的较佳实施例作了详细说明,但是本发明并不限于上述实施例,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化,各种变化均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1