APP下载

智能跟踪系统中目标阴影消除算法的研究与应用

2012-06-05梁成武孔素娟

河南城建学院学报 2012年4期
关键词:掩膜像素点阴影

梁成武,孔素娟,乔 治

(1.河南城建学院,河南平顶山467036;2.中盐皓龙盐化有限责任公司,河南 平顶山467000)

近年来,智能视觉监控系统已经在很多领域广泛应用。然而,大多数系统只能识别一些简单的非正常行为,在很大程度上不能满足用户需求。造成这种现象的原因主要是算法的复杂度太高以及硬件芯片性能的不足。对于任何的视觉交通监控系统,移动目标检测都是最为重要的过程。事实上,目标检测的难点在于阴影的存在,阴影的存在常常使得机器误将阴影识别为有效目标。一方面,阴影与活动目标有相同的运动状态;另一方面,阴影总是与背景色相差明显。当被检测的目标含有阴影时,对于目标定位、识别以及追踪都会造成很大误差。

文献[1-3]中列出了一些关于阴影消除算法的近期研究成果,一些成果在仿真结果上看性能优异。但是,在实时系统中由于很难实现较快的运算速度,这些较为先进的算法很少被采用。因此,如何将这些算法应用于实际逐渐成为一大难点。

基于在智能实时跟踪系统中的目标检测需求,本文的重点在于阴影消除算法的应用与优化。本文在阴影消除算法中添加了快速填充与噪声消除算法,使阴影消除算法的整体性能得到提高,同时保证了算法复杂度和性能之间的相互协调。然后将此技术(阴影消除算法外加优化)用于目标跟踪系统。优化方面可分为三大等级:算法级的优化(ALO)、程序级的优化(PLO)以及指令级的优化(ILO)。ALO的目的在于简化算法;PLO和ILO的目的在于芯片硬件资源的充分利用。本文系统选用了德州仪器公司生产的一款高性能的数字媒体处理芯片TMS320DM642。

1 智能跟踪系统

智能跟踪系统主要是用来进行动态目标识别与跟踪任务的。因此,整个系统被分为三部分:动态目标检测、动态目标识别以及自动跟踪。

首先对输入图像进行预处理,然后利用自适应性背景提取算法得到背景。通过计算背景帧与当前帧的差可以得到前景图像,最后通过阴影消除算法得到目标掩膜。在目标识别阶段,支持向量机能够在特征抽取以后将目标归类。随后即实现目标跟踪。在此系统中选用了在目标识别与跟踪设备中常用的Kalman滤波器。整个系统的工作流程如图1所示。

2 阴影消除

2.1 基于HSV色彩信息的阴影消除

图1 系统工作流程

近年来科学家提出了许多关于阴影识别与消除的算法。例如Cucchiara提出了利用色泽、饱和度以及有效信息识别移动目标与阴影的算法[1];Mei Xiao提出了一种基于边缘信息的动态阴影检测方法[2];Kai-Tai Song提出了一种用于在交通场景中进行阴影像素识别的颜色空间比模型[3]等。

通过对比发现更好的算法总是具有更加复杂的计算过程,这在应用中对DSP芯片等器件的硬件资源要求很高,综合考虑各种算法的性能与实现的复杂度后,本文选用Cucchiara提出的方法。

这种算法是在HSV颜色空间中实现的。整体过程通过下式实现:

式中FM(x,y)定义为在坐标点(x,y)处的前影掩膜,当某一点经分类属于前影点时,该点为1,否则为0。OM(x,y)作为目标掩膜同样如此。对于一个背景像素点,该点的OM(x,y)为0,因为它不是目标的一部分。阴影检测识别是相对于前影像素点而言的。如果某一像素点被检测为阴影,则该像素点OM(x,y)为0,只有为目标像素点时OM(x,y)才为1。因此,通过OM(x,y)的判断,可以排除阴影像素点,即获得了目标。

在式(1)中,IV(x,y)以及BV(x,y)分别是前景图像和背景图像在坐标(x,y)处像素值中的V分量。此式表明为了实现阴影检测,首先应满足三个条件。根据Lambertian假设,第一个条件是对于亮度(即V分量)而言的,α用来考虑光源的效果,β是用来估计噪声的影响。研究还表明某一点的饱和度(即S分量)以及色度(H分量)如果被阴影笼罩,则变化不太明显。所以在第二以及第三个条件中这两个分量的阈值很小,τs以及τh的典型值均为0.15。

2.2 快速填充和噪声消除

上述的算法在一些简单的情况下能够运行良好。但是对于饱和度比较低的像素点,它们的色度不能够总与式(1)保持一致。一些像素被误分类,因此识别出的目标往往有一些裂缝与毛边,甚至分裂成几部分。为了提取完整的对象,形态学处理必不可少。然而膨胀算子与腐蚀算子常常使目标扩大和缩小,因此本文选用快速填充与噪声消除算法来代替膨胀算子与腐蚀算子。此过程包含两个步骤:

(1)快速填充:此算法首先从左往右扫描每一个目标掩膜。如果某一个目标点与下一个目标点的间隔小于阈值,在两点之间的像素点均被认为是目标像素。然后从低往高扫描每一栏且进行相同的处理。

(2)噪声消除:位于每一行的目标掩膜的边界点被再一次从左往右扫描,如果某一背景点与下一背景点的间隔小于阈值,在两点之间的像素点就是背景像素点。然后从低往高扫描每一栏且进行相同的处理。

2.3 结果评价

图2展示了一副原始图像被处理的过程。首先通过背景消除得到前景图像,然后通过阴影消除去除了阴影,但是从图2c上仍然可以看出一些洞与毛刺未被完全消除。

图3a展示了经过形态处理后的图像。对于目标掩膜进行膨胀运算消除了洞,但是增多了毛刺。因此在下一步的腐蚀中应用一个更大的结构元素来消除毛刺,然而此时目标又被压缩。为此最后再进行一次膨胀运算来恢复目标的原始尺寸,整个过程DSP硬件实现需要0.0428 s。

图3b展示了快速填充与噪声消除算法的实验结果。在快速填充阶段,通过上述方法使得目标掩膜中的一些孔洞被消除。同样,在噪声消除阶段去除毛刺。这两个过程的阈值均为3。最后,通过该算法可以得到完整的目标负片。相对于形态处理来讲,该过程耗时更少,仅仅0.0131 s,对于实时系统该方案更具有可行性。

图2 原始图像被处理过程

图3 实验结果比较

3 阴影消除优化

阴影消除可以消除由于阴影与目标的错误识别分类造成的偏差,然而这种技术增大了CPU的占用率。因此对于实时系统来讲,该算法必须通过优化才能提高其性能。

3.1 算法级的优化

式(1)是该优化的关键。除了对V分量的比较环节以外,利用该式进行操作的其他环节相对简单。在用DSP实现算法时,由于相除的结果大小是从0到255之间的浮点数,因此V分量的比较是一个浮点数之间的操作。然而,DM642是一种整型数操作的DSP,虽然能够进行部分的浮点数操作但是这些操作会更耗时,因此,在软件编程中尽量避免浮点数的操作。

将亮度计算式的两端同乘以分母,能够得到下式:

式中:α和β是固定的十进制小数;V分量是一个整数,因此亮度值的比较成为整型数之间的运算,避免了浮点运算与除法运算。

在式(1)中的另一个难点是获取像素点的H、S、V分量。首先,将YUV图像转换为RGB图像。然后,将(R,G,B)彩色图像转化为(H,S,V)的,由于此转化为非线性转换因此该步骤较为复杂。另外,在转换方程中有相当多的除法运算。为了避免这一问题,又定义了两个变量H'和S'。令

式中max和min是三个分量(R,G,B)中的最大值与最小值。通过对比式(3)、式(4)和RGB值到HSV值的转换公式,发现变量之间的关系可以简化为:

因此式(2)也可写为如下形式:

因此系统只需计算出H'、S'和V'分量即可,不必像先前一样在阴影消除操作中花费大量时间计算每个像素点的真实HSV值。由于式(3)与式(4)中只包含一些简单的整型数据操作,因此该操作能够使算法简化。

在应用中,当阴影不存在时没必要进行阴影消除操作,此时再进行阴影消除操作不仅无法提高目标获取的准确性反而会降低系统的效率。基于这种现象本文在处理之前添加了一项阴影检测操作,这项操作每次能够处理若干帧的数据,如果检测出阴影的存在,则通过阴影消除算法对连续的若干帧进行操作,反之亦然。

3.2 程序级的优化

同一些视频分析系统一样,本文系统也包含了一些基本的处理函数。通过利用TMS320C64x DSP芯片以及优化过的图像/视频处理函数库TI C64xIMGLIB编写程序,相对于标准的C语言编写出的程序,可以提高处理速度。通过IMGLIB加入的两个函数分别是C语言可调用的函数和经过汇编优化过的函数。在得到背景图像与当前图像的差值图像后,利用IMG_thr_gt2thr和IMG_thr_le2thr可以得到前景的二元掩膜。此外,IMGLIB还提供了IMG_histogram工具可以得到要用的阈值。

在此系统中的大部分程序均用C语言编写,因此充分利用DSP软件开发环境(CCS)进行程序级优化,这对于系统的整体优化作用很大。通过合理地设定编译参数能够使编译结果更加有效。为了进一步提高处理速度,一些关键且简单的程序采用了汇编语言编写。

3.3 指令级的优化

提高程序的有效性关键是提高程序中loop语句的有效性,从减少NOP语句、选择包含尽可能少的循环指令以及利用并行指令三个方面来提高loop语句的有效性。以下是该优化的详细方法:

(1)利用合理的方法得到的前景掩膜是一个有2种状态值(255和0)的8位掩膜,通过CMPEQ4指令将该8位掩膜转化为1位掩膜以节省空间。

(2)在阴影检测之前,利用一条条件语句判断该像素点是否是前景点。如果是前景点,就判断下一个像素点,这是因为对于连续的背景点,每次仅仅探测一个像素点将会大大增加耗时。为此,利用LDW或者ULDW指令,一次性可载入4到8个像素点,这样仅仅通过一条条件语句就可实现每次处理4或8个连续背景像素点,可使loop语句大大减少。

(3)在阴影消除算法方程中,进行算法级优化以后,还会有很多乘法运算,这个问题可通过DOTPN2指令优化解决。用此指令代替两个MPY指令和1个SUB指令,这样可有效减少执行周期,节约硬件资源。

4 仿真结果与比较

本文利用视频序列中实际道路的情况来验证,然后随机抽取部分帧显示试验结果。

图4~图6为实验效果,3个图中,左侧第一列显示的是未进行阴影消除时的目标检测情况,第二列为未进行快速填充与噪声消除时的阴影消除结果,第3列为本文系统给出的目标探测结果(采用了阴影消除算法和快速填充与噪声消除之后的效果)。从3个图中可以明显地看出采用具有快速填充和噪声消除的阴影消除算法结果最好,它提高了目标轮廓抽取的准确性。

图4 试验“道路”中第225帧的实验结果

图5 试验“道路”中第800帧的实验结果

图6 试验“道路”中第1890帧的实验结果

表1列出了上述帧通过优化以后的结果。从表1可看出:经过优化,平均每帧进行阴影消除处理的时钟周期减小为4.5×105,阴影消除算法的CPU占用率从30%减少到2%。另外,由于经过阴影消除以后需要处理的前景点数目减少了很多,对于后续的处理需要消耗的指令周期也会相应减少。

表1 经过不同的优化以后阴影消除所需的CPU周期

5 结论

本文介绍了阴影消除算法在智能跟踪系统中的应用,通过快速填充与噪声消除算法,阴影消除的准确性被提高了。此外,在实际操作中还研究出了一些可提高阴影消除有效性的优化方法,这些优化方法和经验在其他一些时序严格的算法中同样适用。

[1]刘富强.数字视频监控系统开发及应用[M].北京:机械工业出版社,2003.

[2]文锦松.基于DM642的视频监控系统软件构架及动目标检测算法的研究[D].成都:电子科技大学,2009.

[3]许志良,周智恒,曹颖烈,等.关于运动目标检测的发展现状研究[J].移动通信,2008,32(12):35-38.

[4]汪小丰.视频运动目标分割与跟踪技术研究[D].杭州:浙江工业大学,2008.

[5]赵文哲,秦世引.视频运动目标检测方法的对比分析[J].科技导报,2009,27(10):64-70.

[6]代科学,李国辉,涂丹,等.监控视频运动目标检测减背景技术的研究现状和展望[J].中国图象图形学报,2006,11(7):919-927.

[7]宋杨.基于高斯混合模型的运动目标检测算法研究[D].大连:大连理工大学,2009.

[8]印勇,王亚飞.基于空间邻域相关性的运动目标检测方法[J].光电工程,2009,36(2):1-5.

[9]徐秋平.基于图割理论的目标提取方法研究[D].西安:陕西师范大学,2009.

猜你喜欢

掩膜像素点阴影
利用掩膜和单应矩阵提高LK光流追踪效果
宽周期掩膜法HVPE侧向外延自支撑GaN的研究
基于局部相似性的特征匹配筛选算法
你来了,草就没有了阴影
基于5×5邻域像素点相关性的划痕修复算法
基于canvas的前端数据加密
光纤激光掩膜微细电解复合加工装置研发
让光“驱走”阴影
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割