APP下载

基于FPGA的混合高斯背景建模实现

2011-08-13袁小龙王丽红

电子技术应用 2011年9期
关键词:高斯分布高斯背景

孙 猛,袁小龙,王丽红

(北京交通大学 电子信息工程学院,北京 100044)

运动目标检测是计算机视觉领域的一个重要研究方向,是各种后续高级处理,如目标分类、行为理解等的基础,在安全监控、智能交通等领域都有着广泛的应用。一个鲁棒性的运动目标检测方法有利于后期的特征提取、目标跟踪等步骤。

常见的三种目标检测方法是背景差分法、帧间差分法和光流法[1]。其中背景差分法最常用,它通过当前帧图像与参考背景图像相减检测运动目标,该方法的关键在于创建和维护一个可靠的背景。有很多不同的背景模型被研究人员提出,Haritaoglu等人利用最小、最大强度值和最大时间差为场景中的每个像素进行统计建模,并且进行周期性的背景更新[2];Stauffer和 Grimson采取为每个像素点进行混合高斯建模的方法构建自适应的混合高斯背景模型,该模型能够在线更新模型参数和权重,鲁棒性地克服了光照变化、树枝晃动等因素造成的影响[3];Stauffer和 Grimson算法采用固定的更新率来更新各高斯分布函数的参数,这样会降低对运动目标检测的灵敏度;Kaew-TraKulPong等人提出了改进的混合高斯背景建模算法[4],有效地改善了这一问题;OpenCV依据这个改进的算法提供了实现混合高斯背景模型的函数库[5]。

基于自适应混合高斯背景模型的背景差分法对静态背景场合下的运动目标检测有良好的鲁棒性,但由于算法的计算量巨大,在PC上只能达到较低的帧率,远不能满足实时性要求。FPGA近年来发展迅速,它有着接近ASIC的高速度和接近软件设计的灵活性,为计算机视觉和数字图像处理的提速提供了一个很好的平台。

本文的算法基于OpenCV函数库,对原算法进行适当的修改,做出折中的定点化方案并针对FPGA的特性设计了适合FPGA实现的结构,在Stratix IV开发平台上成功实现了1 280×1 024高清视频的背景建模和运动目标检测,具有较好的监测效果和很好的实时性。

1 背景建模算法

最常见的背景建模算法是自适应的单峰背景模型,使用一个背景值表示一个像素点,并维护这个背景值,因为低计算量和存储量的要求,使这种模型被广泛应用。但当画面出现像雨雪之类的扰动时,此模型会得到很差的结果。解决上述环境扰动的更好方案就是多峰背景模型,即每个像素点用多个单峰背景模型表示。最著名的就是Stauffer和Grimson提出的自适应混合高斯模型,对复杂背景有着较强的抗干扰能力,尤其是KaewTr-aKulPong和Bowden对此算法做出了改进后,使其算法更具鲁棒性。

1.1 混合高斯模型

每个像素点用K个高斯分布混合表示。则某一像素点的值为Xt的概率为:

其 中 ,μi,t、σi,t和 ωi,t是t时刻组成像素X的第i个高斯分布的均值、标准差和权重参数,η是高斯概率密度函数。对于每一个新的像素值,检测它是否与K个高斯分布匹配,匹配条件为:

如果Xt与任一高斯分布都不匹配,则添加一个均值为Xt、方差和权值自设定的高斯分布,用它替换历史中优先级最低的高斯分布。权重的更新等式如下:

其中,α 是学习率,当有匹配时 mi,t为 1,否则为 0。

只有匹配成功的高斯分布才更新它的均值和方差,其他的分布不变,均值和方差的更新公式如下:

其中学习率:ρ=αη(Xt|μt,σt)

每次更新后根据(ωk/σk)对K个分布进行排序,由前B个分布决定当前像素的背景值。

1.2 改进的算法

以上经典算法都是采用固定的更新率来更新各高斯分布函数的参数,这样会降低运动目标检测的灵敏度,尤其在初始阶段。针对这一问题,Kaew-TraKulPong提出了改进的算法,在更新的不同阶段采用不同的更新策略,有效改善了这一问题。OpenCV依据这个改进的算法提供了实现混合高斯背景模型的函数库,本设计的算法即基于OpenCV函数库。

OpenCV加入了两个重要变量:win_size为两种更新策略的分界帧数,对于前后两种策略,学习率α和ρ的选取原则不同;match_sum记录每个高斯分布的历史匹配次数。改进后算法流程见图1。

图1 改进后算法流程图

各步骤操作如下:

第一帧创建高斯模型:用第一帧图像给所有高斯分布参数赋初值。

匹配检测:检测每个像素点与对应K个高斯分布的匹配情况。

更新方式(1):win_size帧前没有匹配情况的更新。

更新方式(2):win_size帧前有匹配情况的更新。

更新方式(3):win_size帧后没有匹配情况的更新。

更新方式(4):win_size帧后有匹配情况的更新。

排序:对每个像素更新后的K个高斯分布根据(ωk/σk)排序。

图像尺寸和每个像素高斯分布的个数直接影响软件运行速度和FPGA资源占用。在VS2005环境下进行软件验证,选取 win_size为 200,高斯分布个数为3可以达到一个较好的检测效果;应用背景是1 280×1 024高清视频的实时运动目标检测,对原始视频直接进行混合高斯背景建模需要很大的数据率,是FPGA所不能达到的。针对这一问题提出了如下改进策略:

(1)RGB空间转换成灰度。此操作丢失颜色信息保留亮度信息,亮度信息完全可以满足检测目标区域的要求,数据量减少了2/3。其转换公式如下:

(2)缩减图像尺寸(Resize)处理、减小视频尺寸、确定小尺寸图像内运动目标区域后再做出同比例的反Resize,得到原始1 280×1 024视频中的目标区域。为了尽可能少地丢失原图像信息,对每个4×4邻域窗口16个像素取均值得到1个新像素。通过大量实验验证,此方案可以达到很好的检测效果。

上述改进算法在VS2005环境下运行,PC配置为:Intel双核3.17 GHz处理器,3 GB DDR2内存,完成一帧高斯背景更新的时间约为85 ms,完成一帧检测的时间约为92 ms,待处理视频为60帧/s,帧更新时间为 16.7 ms,远不能满足实时性要求。混合高斯背景算法需要为每个像素建立多个分布,这些分布的更新操作在PC中是串行处理的,耗费大量的运行时间。而FPGA的并行处理能力可以同时对多个分布进行更新,再加上流水线结构带来的高数据吞吐量,FPGA可以大大缩减算法的运行时间。

(3)软件中的高斯参数均为64 bit浮点数,对于FPGA实现,需要片外存储器件暂存每帧的高斯参数。必须对各参数做出合理的定点化方案,以减小对片外存储容量和数据率的要求。在Matlab R2008a环境下进行定点化仿真,经过大量的实验,对高斯参数做出如下定点化方案(I表示整数位,F表示小数位):

定点化后每个高斯分布参数需要40 bit,每个像素3个高斯分布共120 bit。此时要求的片外存储容量为9.375 Mbit,数据率为590 Mb/s。选用的FPGA硬件平台为Stratix IV开发套件,开发板上的4 MB QDR II+SRAM数据速率最高可以达到1 600 Mb/s,完全满足此方案的需求。

2 FPGA设计

系统整体模块划分见图2。

图2 系统整体框图

Resize&RGB2gray模块完成1 280×1 024 RGB图像到320×256灰度图像的转换,将每帧的灰度值暂存于片上RAM,每完成一帧的转换发出帧开始信号给高斯模块和差分模块;差分模块完成当前帧与背景的差运算,选取合适的阈值得到二值图像;膨胀/腐蚀模块用数学形态学处理(膨胀和腐蚀)去除噪声和填补孔洞,在FPGA中采用line-buffer结构实现。高斯模块需要大量的存储和运算,是本设计的重点和难点,下面着重介绍高斯模块的实现。

高斯模块主要由数据调度、创建高斯、更新高斯、写回4部分组成,如图3所示。

(1)数据调度模块完成像素灰度值的请求、与QDR II+SRAM控制器[6]的数据交互。QDR II+SRAM控制器可以提供72 bit,250 MHz的用户数据接口,并可以读写操作同时进行,高斯模块的最高工作频率为110 MHz,控制器的数据率完全可以满足120 bit、110 MHz的要求。

(2)创建高斯模块利用第一帧数据初始化高斯模型的各参数。

(3)更新高斯模块完成高斯模型的更新,是最重要的一个模块。3个高斯分布的匹配检测和参数更新操作并行执行。因为模型参数更新中涉及到一些乘除法操作,为了达到更高的处理速度,提高系统的数据吞吐量,此模块采用17级的深度流水线。更新操作中不同分支路径的延时不同,最长路径需要17个时钟周期,为了组成流水线短路径采用寄存处理使所有更新分支均为17个时钟周期。17个时钟周期大体分为三个阶段:

第一阶段需要5级流水,完成匹配检测和更新权值。匹配检测是判断当前像素值与历史高斯分布的匹配情况,得到匹配信息给后级模块使用;更新权值即预先计算出有无匹配的两种权值更新结果,参数更新模块根据匹配信息选择出实际情况的权值。

第二阶段需要6级流水,此阶段完成所有高斯参数的更新。对于匹配的分布更新均值、方差、match_sum,选择相应的权值输出;当所有分布均不匹配时创建新的分布替换优先级最低的分布。

第三阶段需要 6级流水,根据(ωk/σk)对更新后的 3个高斯分布排序。

(4)写回模块将更新后的高斯参数写回数据调度模块,然后由QDR II+控制器写回 SRAM;同时将最高优先级高斯的均值存于片上RAM作为当前的背景值。

3 资源耗用及结果分析

所有模块采用Verilog-HDL编写,整个系统在Modelsim进行功能仿真,在Altera Stratix IV开发套件上进行验证,核心芯片为 EP4SGX230KF40C2,资源耗用见表1。系统的最高工作频率为110 MHz,完成一帧320×256图像背景更新的最短时间为745 μs,视频源更新帧数据时间为16.7 ms,此模块具有很好的实时性。

测试方案:由PC播放视频,DVI输入FPGA处理,FPGA处理结果输出至 DVI显示。1 280×1 024 60 Hz的DVI视频时钟频率为108 MHz,FPGA系统最高时钟频率为110 MHz,测试时直接采用DVI时钟作为系统运行时钟。

表1 FPGA资源耗用

使用Signal Tap II和Matlab联合进行板级调试,具体做法是:将Signal Tap II的采样深度设为128 K,可以采到一整帧(320×256×8 bit)数据,利用 create signalTap II list File命令可以将当前观测窗口内的所有信号值导出,然后将导出的数据用Matlab显示分析。图4为一段视频中第602帧FPGA的处理结果,从左到右依次为Resize后的灰度图、高斯背景、差分、膨胀腐蚀后的二值图像。图5为同一帧视频在VS2005中的运行结果。

图4 FPGA处理结果

图5 VS2005运行结果

比较可知,软件找到的目标区域更加准确,说明软件得到的背景要比FPGA得到的背景可靠。因为FPGA中对高斯参数进行了定点化操作,运算精度要低于软件。FPGA实现虽然性能上有所降低,但可以满足检测要求。软件每秒只能处理10帧左右,而FPGA处理一帧图像只需要1.5 ms,FPGA达到了很好的实时性。

在Altera Stratix IV开发套件上成功实现了1 280×1 024高清视频的混合高斯背景建模和运动目标检测,设计采用基于自适应混合高斯背景模型的背景消减法,对环境扰动具有很好的适应性。针对高斯建模中复杂的运算操作,设计采用了17级深度流水线,使系统最高工作频率达到110 MHz;针对原算法的高数据率要求,设计了合理的Resize和定点化方案,使性能和资源耗用达到了一个较好的平衡点。经过Modelsim仿真和板级验证,本设计可以达到较好的检测效果并具有非常好的实时性。此实现方案在嵌入式系统和视觉观测系统都有广泛的应用。

[1]吴晓阳.基于OpenCV的运动目标检测与跟踪[D].杭州:浙江大学,2008:47-55.

[2]HARITAOGLU I,HARWOOD D,DAVIS L.Real-time surveillance of people and their activities[J].IEEE Transaction on Pattern Analysis and Machine Intelligence,2000,22(8):809-830.

[3]STAUFFER C,GRIMSON W.E.L.A daptive background mixture models for real-time tracking[C].IEEE Computer Society Conference on Computer Vision and Pattern Recognition.IEEE Computer.Soc,1999,2.

[4]KaewTraKulPong,Bowden.An improved adaptive background mixture model for real-time tracking with shadow detection[C].In Proceeding.2nd European Workshop on Advanced Video Based Surveillance Systems,AVBS01.2001,9.

[5]刘瑞祯,于仕琪.OpenCV教程[M].北京:航空航天大学出版社,2007.

[6]Altera Corporation.QDR II and QDR II+SRAM controller with UniPHY user guide.2010.

猜你喜欢

高斯分布高斯背景
小高斯的大发现
“新四化”背景下汽车NVH的发展趋势
利用Box-Cox变换对移动通信中小区级业务流量分布的研究
《论持久战》的写作背景
2种非对称广义高斯分布模型的构造
天才数学家——高斯
一种基于改进混合高斯模型的前景检测
晚清外语翻译人才培养的背景
有限域上高斯正规基的一个注记
一种改进的混合高斯模型背景估计方法*