一种改进型surendra背景更新算法的FPGA实现
运动目标检测是通过找到图像序列中的运动像素点和静止像素点,从而找到前景中的变化区域,进而将运动的目标物体从背景图像中提取出来。现有的运动目标检测方法主要有光流法、帧差法、背景图像差分法和边缘检测算法。光流法运算公式复杂、计算量大,不适用于适时性要求很高的场合。帧差法和背景图像差分法相比光流法更简单、易于实时操作 ,且应用广泛。由于背景图像差分法对由于光照引起的动态场景变化非常敏感,随着时间的推移,如实际光线、环境的变化或背景中固定对象的移动都会使得背景图像发生变化。向海霞、王卫星提出一种利用卡尔曼滤波对背景进行预测与更新算法;张彦等人提出一种将基于特征点的方法和基于像素点的背景建模方法相结合的背景更新算法。但这些算法复杂,难以在硬件上实现,只适合利用软件方式实现,很难提高速度,达到实时性要求。而2009年徐方明、卢官明提出基于改进surendra型背景更新算法的运动目标检测算法,通过改变静态阈值为动态阈值,利用动态阈值更新背景模型,再将当前图像和当前更新背景做差运算之后产生差分图像。该算法在有运动目标存在的情况下提取出可靠的背景模型,并且能够自适应地对背景模型进行较为精确的更新,更新速度较快。但所采用的是软件方式实现,执行速度不高。本文采用改进的surendra背景更新算法,针对该算法的特点进行硬件结构分析,利用FPGA流水线任务处理技术以及并行处理的优点,采用硬件方式对动态背景下运动目标的提取进行实时检测。1 改进型surendra背景更新算法原理
改进surendra型背景更新算法的基本思想是事先将背景图像储存下来,利用当前帧图像减去背景图像,从而比较得出运动目标。由于周围环境的变化造成图像背景的变化,采用传统静态阈值更新背景将不能很好地适应环境的变化,需要动态阈值实时更新背景,以便更好地分割前景和背景。这里采用基于灰度直方图中图像最大灰度值与最小值灰度值的均值作为图像的分割阈值。总体实现分为四个步骤:初始帧图像的建立、动态阈值的求取、背景帧图像的更新和差值图像的求取。改进型surendra背景更新算法结构如图1所示。
(1)背景图像的建立
将采集到的最初M帧图像数据进行平均,以这M帧图像的均值图像作为最起始的背景图像。这样初始背景图像为最真实的背景图像,减小了以单帧作为起始背景图像时,因外界环境的突变而带来的背景图像不准确的可能性。其描述如下:
2 改进型surendra背景更新算法硬件实现特点分析
(1)初始背景帧图像的建立。为了能客观地反映原始背景图像的特点,需要将最开始的M帧图像进行存储再求平均,所以需要采用双端口RAM对M帧图像进行存储。这里综合考虑图像速度和所占用资源情况,COUNTER计数用于将前M帧图像进行存储再求平均作为初始帧的背景图像。在求平均时,需要用到除法,可以通过移位方式求平均,减小资源的占用。初始背景帧图像原理如图2所示。
(2)背景帧和当前帧图像的存储。因需要对图像背景帧更新后再进行差分运算,所以需要用RAM对背景帧和当前帧图像进行存储。由于要对背景帧和当前帧进行暂存,将暂存的当前帧图像和背景帧图像输出到更新模块进行背景更新运算,同时将更新后的背景数据再次输入到背景更新模块之中,最后再将更新后的背景帧和当前帧图像同步输出做差分运算。因为一帧有效的背景帧和当前帧要完成一次差分运算需要一次写入和两次读出RAM的操作,而采用2个传统的双端口RAM不能达到所要实现的功能,需要4个双端口RAM才能实现,占用的资源将多一倍,因此这里采用三端口RAM实现对背景帧和当前帧图像的存储,可以节省一半的RAM资源占用率。
(3)对图像存储的三端口RAM采用分时复用的方式,节约了资源占用率。同时将这两个三端口RAM的数据并行处理,同步实现对背景图像数据和当前帧图像数据的存取操作,并且将阈值模块、更新算法模块和差值模块采用流水线技术,可以大量节省对图像数据的处理时间。
3 改进型surendra背景更新算法的FPGA实现
(1)背景帧图像的建立与存储
总体硬件结构如图4所示。选择模块A是一个选择开关,用于控制前M帧的图像数据和第M+1帧及以后图像数据的输入流向。在前M帧时,选择模块A将其每一帧的数据输入到均值模块中,均值模块将其每一帧图像数据的对应像素坐标的像素值相加,存入到双端口RAM A中,同时在下一帧图像数据输入到均值模块时将双端口RAM A中的图像数据输出,使其和下一帧对应的图像数据相加,并将结果重新存入RAM A中。当第M帧图像数据在均值模块中相加时,求对应图像像素坐标的均值,并将其均值输入到双端口RAM A进行锁存,同时选择模块A将第M+1帧及其以后的图像数据输入到三端口RAM B中。
程序初始时,将前面的4帧图像数据(M=4)求均值。这里所采用的图片尺寸是128×128,所以双端口RAM A为存储深度128×128,8 bit数据宽度。在第M帧有效数据输入到RAM A中时,即背景图像B0存入到了RAM A中。如图5所示。
(2)阈值T1选择
在第M+1帧数据输入到三端口RAM B中时,RAM端口控制模块在RAM B写使能端WRB有效时启动RAM B 读端口Qa的读使能端RDBa有效,将第M+1帧数据读出。分别定义两个寄存器,将每个时钟来的有效数据进行比较,分别存储最大像素值和最小像素值,求出最大值和最小值之后,将两数相加并右移一位求取均值。此时选择模块B选通RAM A,RAM端口控制模块使其RAM A的读端口RDA有效。在第M+2帧以后,选择模块B选通RAM B端口,关闭RAM A的读端口RDA。
(3)背景图像的更新
当RAM A的读端口RDA有效时, RAM B读端口Qa的读使能RDBa无效。在RDA有效后的第1个CLK的上升沿时,将双端口RAM A中的初始背景数据b0(i,j)和RAM C中读端口Qa的数据I1(i,j)读出到更新背景算法模块,此时RAM C中读出的数据I1(i,j)=0。
更新背景算法模块RDA有效后的第2个CLK的上升沿时启动有效的判断,若输入的I1(i,j)与b0(i,j)满足Ik(i,j)<T1,则将此时的背景像素值变换为b1(i,j)=ηI1(i,j)+(1-η)b0(i,j),否则b1(i,j)=b0(i,j)。当求出第一个新的背景值b0(0,0)时,更新背景算法模块同时使RAM C写端口WRC有效,将b1(i,j)输入到RAM C暂存。在第三个CLK的上升沿,启动RAM B读端口Qb的使能信号RDBb和RAM C读端口Qb的使能信号RDCb有效,同步读出当前帧的图像数据I1(i,j)和更新后的背景图像数据b0(i,j)。此时第M+1帧的有效图像数据和当前帧的背景图像数据同步输出到差分模块中。利用流水线方式,依次将第M+2帧及其以后的图像数据存入到RAM B中,并利用RAM B和RAM C进行背景更新,将更新后的背景数据与当前帧数据同步输出。这里以η=0.875,即η=1/4+1/8来进行硬件设计,SEL用于判断是背景值不变还是背景像素需要更新,DELAY用于保证数据的同步性。算法结构如图6所示。
采用Quartus II软件对系统进行综合、仿真,系统在FPGA芯片中(EP2C70F672C6)实现。当采用50 MHz时钟处理图像大小为128×128×8的灰度图像时,背景更新和目标物体的提取所需时间大约为0.755 4 ms。由于采用流水线及并行处理操作方式,使其背景更新、目标提取和差分处理同步进行,加快了处理速度,从而完全能够保证图像系统的实时性。
4 实验验证
图7(a)为模型飞机在不同运动时刻不同姿态的帧图像;图7(b)为固定阈值背景更新、更新速率为0.875时所提取到的目标飞机;图7(c)为动态阈值背景更新、更新速率也为0.875时所提取到的目标飞机。可见动态阈值能更有效适应动态环境运动目标物体的提取。
本文针对改进型surendra背景更新算法原理的特点,结合硬件描述语言以及RAM存储器,提出了改进型surendra背景更新算法的硬件实现方案,并在FPGA芯片中实现了对运动目标物体的实时提取,提高了对运动目标物体的提取速度,同时也减少了系统资源的占用率,保证了系统的实时性要求。本方法在图像处理中有着广泛的应用前景。
页:
[1]