可编程逻辑
视频对象运动检测是从视频序列中提取出有意义的运动对象,它是视频检索、多媒体内容描述以及基于内容的视频编码的基础。连续帧间差分法 、背景差分法和光流法是视频对象分割的常用方法。连续帧间差分法对于动态环境有很好的适应性,但不能完全提取出视频对象的所有相关点;背景差分法能够较完整地提取对象点,却又对光照和外部条件造成的动态场景变化过于敏感;光流法虽然能够直接用于摄像机运动下的视频对象检测,但是大多数光流方法的计算复杂,不适于实时处理。将时域和空域信息进行有效的融合就能够得到更有效的结果,但还存在着目标轮廓检测的不完整性和目标相关点保留较少的问题。本文在应用FPGA采样得到视频图像的基础上,提出了一种对Pan方法改进的背景重建方法,进一步的提高了视频对象分割的效果。
1 硬件系统
系统原理图
整个系统以FPGA和TUSB3210为核心,负责视频数据的接收处理,启动A/D转换,控制FIFO的读写及采样频率的设定,与主机之间的通信及数据传输。
A/D、FIFO和USB控制芯片
视频采集部分选用了Philips公司的视频A/D转换芯片SAA711A(EVIP),通过USB控制芯片提供的一对I2C引脚SDA和SCL进行控制;FIFO采用采用TI公司SN74V293芯片,它的容量为65536×18bit 或131072×9bit,最快读写周期为6ns,可以满足100MHz采样数据的存储。
SN74V293有独立的读写时钟控制电路,允许读写操作同时进行。SN74V293内部有满、空、半满输出信号以及可编程设定的几乎满和几乎空输出信号,通过这些信号控制器可以灵活控制FIFO的读写操作。
USB控制芯片采用TI公司的TUSB3210,它是TI公司推出的内嵌8052内核并带有USB接口的微控制器芯片。TUSB3210有256字节的内部RAM,8K字节的程序RAM,512字节的USB数据缓冲和端点描述块EDB(Endpoint Descriptor Blocks),4个通用的GPIO端口P0、P1、P2、P3,I2C接口电路,看门狗电路等。当主机与芯片进行USB通信时,会产生外部中断0,通过中断矢量寄存器判断。通过定义Setup_packed_Int、Input_endpoint0_Int、Output_endpoint0_Int这三个中断,用于与主机建立连接、进行控制传输或中断传输;Input_endpoint1_Int、Output_endpoint1_Int这两个中断主要在批量传输时使用。而在固件中分别执行不同的中断程序来实现USB的数据传输。
FPGA控制的实现
FPGA采用XINLINX公司的XC3142,PC终端通过USB口向视频采集卡传送start信号,通知视频采集卡开始工作。视频信号通过CCD摄像头进入A/D转换芯片SAA711A,SAA711A产生的数字视频信号、控制信号和状态信号送入控制处理芯片XC3142,以供XC3142获得各种采样信息,并对得到的数据与背景数据做差,然后将数字视频信号写入到FIFO里面,当FIFO里面的数据达到半满(此处半满状态对应视频一帧的数据),FIFO半满标志为0(低电平),XC3142检测到FIFO半满标志为0时,向USB控制芯片发送中断(Interrupt)信号,PC终端获得中断请求后开始从FIFO里面读取数据。
2 USB接口的驱动程序与应用软件开发
USB应用系统软件开发分为两部分:主机操作系统上的客户驱动程序以及主机应用软件。主机应用软件通过客户驱动程序与系统USBI(USB Device Interface)进行通信,由系统产生USB数据的传送动作;固件则响应各种来自系统的USB标准请求,完成各种数据的交换工作和事件处理。
首先开发TUSB3210在主机中的驱动程序。利用WinDDK3.0开发了Win2000下的驱动程序,实现了控制传输、中断传输和批传输的标准接口函数。在应用程序开发中,用VC++编制实现应用程序。在编成实现中把USB设备当成文件来操作,利用CreateFile得到USB句柄,用DeviceIoControl来进行控制传输,用ReadFile、WriteFile进行批量传输。
应用软件的结构如图2所示:
应用软件程序的基本流程如下:
1)打开通信通道,即确定一个应用对象,并对每个应用对象创建一个系统对象。2)初始化硬件资源,即为每个系统对象分配数据缓存、数据采集器和数据显示对象。3)启动采集过程,即将图像读入数据缓存,并将缓存赋值给数组,通过对数组的处理实现对图像的处理,图像数据与数据显示相关联后就可以通过显示控件或窗体显示预处理后的结果。
3 视频对象分割算法在FPGA中的实现
视频监视系统的主要目的是跟踪人们感兴趣的视频对象,一般情况下摄像机固定在室内或者建筑物的高处,为此可认为背景在一定时间内静止不动。Pan 提出了一种基于背景信息的运动对象检测方法[4],使用高阶统计量来重建背景,该方法能够较好的检测到运动对象,但是背景重建速度较慢,使得难以应用于实际视频监视系统,为此本文提出了一种新的背景重建方法,并应用VHDL语言在FPGA中实现了该算法,提高了背景重建速度。
背景图像重建
在背景重建中,引入背景置信度图像为C(x1,x2),它的掩膜图像为MC(x1,x2),重建背景图像为B(x1,x2),背景标示图像为BL(x1,x2)。如果C(x1,x2)大于预定的一个门限,则在视频帧中像素(x1,x2)为背景的概率更大,如果小于该门限则像素(x1,x2)为运动对象的概率相对较大。BL(x1,x2)是一个二值图像,用于标示对应像素的背景是否能重建,即:BL(x1,x2)=1,表示(x1,x2) 像素背景成功重建,否则失败。
考虑连续N帧图像s(x1,x2,k),s(x1,x2,k-1),…,s(x1,x2,k-N),对应的N-1个相邻帧差图像分别为d(x1,x2,k,k-1),d(x1,x2,k-1,k-2),…,d(x1,x2,k+1-N,k-N),则C(x1,x2),MC(x1,x2),B(x1,x2)和BL(x1,x2)的生成过程如下:
1) 初始化: 对每一个(x1,x2),C(x1,x2)=0 ,MC(x1,x2)=0,B(x1,x2)=0,BL(x1,x2)=0,n=0;
2) 考虑(x1,x2),如果MC(x1,x2)=1,至2)考虑下一个像素;否则至3);
3) 对于(x1,x2),如果d(x1,x2,k-n,k-n-1)Th1,则C(x1,x2)=0;
4) 如果C(x1,x2)》Th2,则MC(x1,x2)=1,到5);否则至6);
5) B(x1,x2)=[ s(x1,x2,k-n)+…+ s(x1,x2,k-n+Th2)]/Th2,BL(x1,x2)=1;
6) 如果n 其中Th1和 Th2分别为预先设置的门限,本实验中Th1=20,Th2=10。
视频对象分割
在视频分割中本系统采用类间方差阈值分割[5]法,这种方法是由最小二乘法推导得到的,此方法具有简单易于实现的优点。
在后处理过程中,为了去除孤立点和填充空洞,在对视频图像帧差图像阈值分割完成后,进行数学形态学的开、闭和区域标示运算。视频对象分割试验结果如图3所示。
图3中a是一段视频图像列中的两帧图像;c是使用Pan方法的视频对象实时分割结果;b是使用本文的方法的对象分割结果。比较图3中 b、c可看出,本方法较Pan方法有更好的目标轮廓完整性和目标轮廓内目标相关点的连通性。本算法在普通PC机(Pentium3 800M CPU ,256M DDRAM)上运行,视频图像为标准的CIF(288*384),256级灰度黑白图像,利用本文算法其采集检测速率为24帧/s,利用Pan方法的速率为10帧/s。
4 结论
利用FPGA和USB控制芯片实现了实时视频监视采集系统,结合背景重建的方法可以实现视频图像的实时连续采集(每秒采集24帧视频图像)和视频对象分割的要求;改进后的背景重建和视频对象分割算法,较Pan方法有更好的检测效果和更快的分割速度。
责任编辑:gt
全部0条评论
快来发表一下你的评论吧 !