摘要:给出了采用Mean-Shift与Camshift相结合的方法来设计一种基于视频图像的火焰跟踪处理算法。该算法首先利用Mean-Shift方法分割图像并确定火焰区域,然后在此区域内提取特征,再用Camshift算法进行火焰跟踪。此方法利用火焰图像的高亮特征,克服了传统Camshift算法需要人为定位和容易发散等缺点。
0 引言
火的使用是人类的伟大创举之一。但火一旦失去控制,就会成为自然和社会的一种非常大的危害。在我们的日常生活中,火灾并不是一个陌生的话题。近年来,我国就发生了几起全国震惊的火灾,给人们的生命财产安全造成了严重的危害。火灾发生后,如果能及早的报警并进行自动控制灭火,对于减小火灾所带来的危害,无疑具有非常重要的意义。
传统的火灾报警系统一般基于红外传感器和烟雾传感器,也就是探测火灾发生时生成的烟、温度和光参量等,然后经信号处理、比较、判断后,发出火灾报警信号。而由于火焰图像具有亮度高、面积不规则、燃烧时相对稳定等特征,同时又有监控范围大,实时性好等优点,因此,基于视频图像的机器视觉火灾探测系统得到了较快发展,并已成功应用于大空间自动检测灭火系统中。
一般情况下,考虑到早期火灾刚刚发生时,一旦漏报或者火势发展较快,火焰就会变成动态目标,因此,要求系统可以有效的识别火焰并对动态火焰进行实时跟踪,进而控制云台进行准确的灭火工作。本文主要对基于Mean-Shift算法的火焰图像分割以及基于Camshift算法的动态火焰跟踪方法进行研究。
1 火焰图像分割
1.1 Mean-Shift分割原理
Mean-Shift是一种非参数化的多模型分割方法,它的基本计算模块采用的是传统的模式识别程序,即通过分析图像的特征空间和聚类的方法来达到分割的目的。它是通过直接估计特征空间概率密度函数的局部极大值来获得未知类别的密度模式,并确定这个模式的位置,然后使之聚类到和这个模式有关的类别当中。下面对Mean-Shift算法进行简介。
设S是n维空间X中的一个有限集合,K表示X空间中λ球体的一个特征函数,则其表达式为:
其中,x∈X,那么在向量x点处的样本均值为:
Fukunaga和Hostetle等人在其自己的论文中把m(x)-x的差叫做Mean-Shift。Mean-Shift算法实际上就是数据点到样本均值的重复移动,而且在算法的每一次迭代过程中,对于所有的s∈S,s←m(s)都是同时的。同时,模糊聚类算法还包括最大墒聚类算法以及常用的k均值聚类算法,它们都是Mean-Shift算法的一个有限的特例。Mean-Shift算法作为一种聚类分析方法,由于其密度估计器的梯度是递增的,而其收敛点即为密度梯度的局部极大值点,这个局部极大值即对应特征空间中的一个模式。
Mean-Shift算法对于概率密度函数的估计通常采用Parzen窗函数法,即核密度估计器。在d维空间Rd中,给定n个数据点xi,i=1,2…n,点x的多变量核密度估计器的计算式如式(3)所示。这个估计量可以由核K(x)和一个对称正定的d×d宽度的矩阵H来表示。
一般情况下,具有d个变量的核K(x)是一个满足以下条件的边界函数:
其中,ck是一个常量。从图像分割的目的出发,多变量核K(x)采用的是放射状对称核Ks(x)=ak,dK1(‖x‖),其中K1(z)是一个对称的单变量核,且K(x)满足下式:
其中,ck,d是可使K (x)等于1的归一化常量。
带宽矩阵H一般选择对角阵,H=diag[h12,…,h2d]或与单位矩阵H=h2I成比例。H=h2I情况下的一个明显优点是只需带宽参数h>0。然而,从式(4)可以看出,首先应确定用于特征空间的欧几里德矩阵的有效性。若使用一个宽度参数h,则式(3)就会变成如下典型的表示式:
将(6)式代入上式,就可以得到一个通用的、用核符号表示的核密度估计式:
对有基本密度函数f(x)的一个特征空间,Mean-Shift算法分析的第一步是找到这个密度模式,然后对这个模式进行相关聚类。此模式应该在梯度▽f(x)=0的零点当中,而Mean-Shift程序是不用估计密度,而直接对密度的梯度进行估计,就能定位这些零点。
对于Mean-Shift算法的应用与分割,首先,可设xi和zi(i=1,2,…,n)分别为n维空间内的输人和联合的空值域内的滤波图像的像素,Li为分割后的图像中的第i个像素。那么,其操作可分为以下步骤:
(1)运行均值平移滤波程序对图像进行滤波,并存储所有d维空间内在zi处的收敛点zi=yi,c。
(2)在联合域中对所有的zi进行分组以描述类,这些类{Cp}p=1…m在空域内较hs较近,在值域内较hr较近。
(3)对于每一个i=1,…,n,并记为:Li={p|zi∈Cp|}
(4)消除在空间区域内少于M个像素的区域。
1.2 Mean-Shift方法的分割结果
Mean-Shift算法分割的结果如图1~图3所示。
其中图1为背景较为简单的火焰图像的分割结果,图2为有手电筒光干扰下的火焰图像,图3为有路灯灯光干扰下的火灾图像。三幅图中的(a)均为原图,(b)为分割后的结果。可以看出,在三种情况下,该算法都能够有效的分割出火焰图像,从而确定火焰区域,以达到目标识别的目的。
2 Camshift算法
CamShift算法(Continuouslv Adaotive MeanShift)是计算局部最优解的一个实用算法。这种算法具有快速高效之特点,均值平移通过迭代从候选目标中找到最接近己给定的目标模型。它是一种基于颜色信息的方法,可以对具有特定颜色的信息目标进行跟踪。
当建立被跟踪目标的颜色概率模型后,便可将视频图像转化为颜色概率分布图,然后在第一帧图像初化一个矩形搜索窗,这样,对以后的每一帧图像,CamShift能够自动调节搜索窗的大小和位置,定位被踪目标的中心和大小,同时用当前帧定位的结果预测下一帧图像中目标的中心和大小。总体而言,CamShift算法是一种动态变化分布的密度函数梯度估计的非参数方法。
本文使用的是CCD摄像头来采集彩色火焰图像,彩色图像使用的是RGB模型。由于CamShift算法是基于颜色信息的跟踪算法,该算法对HSV颜色模型的H分量比较敏感。因此,为使用CamShift算法进行跟踪,必须首先进行从RGB空间到HSV空间的转换。
2.1 RGB到HSV色彩空间的转变
RGB空间为线性空间,而HSV空间为非线性空间。从RGB空间到HSV空间的转换公式如下:
使用上面的公式,可以将一幅彩色图像从RGB空间转换到HSV空间。从而为使用CamShift算法进行跟踪打下了基础。
2.2 Camshift跟踪算法
Camshift跟踪算法在操作时,首先在颜色概率分布图中选取大小为S的搜索窗W。然后在用下式计算零阶矩:
式中,I(x,y)是坐标为(x,y)的点的像素值,x和y的变化范围即为搜索窗的范围。
第二步再用下式计算搜索窗的质心(xc,yc):
接下来第三步再重新设置搜索窗的大小S为上面搜索窗区域内颜色概率分布的函数。
之后.再重复第二步、第三步,直至收敛(质心变化小于给定的阈值)。
零阶矩反映了目标在图像中的面积,而颜色概率分布图实际上是最大值为255的离散灰度图像,由此便可设置搜索窗的大小S和Z00的关系,即:
考虑到对称性,S应取接近计算结果的奇数。这样,通过计算二阶矩,便可以得到被跟踪目标的长轴、短轴和方向角。其二阶矩为:
那么,图像中目标长轴和短轴的长度便可以按以下公式进行计算:
当使用Camshift算法对特定颜色的目标进行跟踪时,一般不必计算每帧图像所有像素点的颜色概率分布,而只需要计算比当前搜索窗大一些的区域内的像素点的颜色概率分布即可,这样便可节省很大的计算量。因此,当对连续的视频图像进行处理时,实际上就已形成了连续的跟踪。
3 火焰跟踪实验及其结果
本文通过跟踪背景较为简单的火焰视频图像和有手电筒光干扰下的火焰视频图像来验证此法的有效性,同时得出了如图4和图5所示的验证结果图。
其中,图4的背景较为简单,该图中仅有人的胳膊和火焰。其原视频的一帧图像可参见前文的图1(a)。
而在图5中,开始只有火焰和人脸的一部分。后来我们加入了手电筒光,最后再关闭手电筒光。其原视频的一帧图像可参考图2(a)原图。
通过以上实验可以证明,此法能够快速准确的跟踪火焰的运动,并且没有产生目标丢失和跟踪区域发散的情况。
4 结束语
本文提出了一种Mean-Shift与Camshift相结合的动态火焰跟踪算法。其中通过Mean-Shift对火焰图像进行分割与定位的方法,克服了传统Camshift算法需要进行人工定位以及容易发散的缺点。但是,文中方法在干扰源过多时,也容易产生跟踪错误的情况,这一缺点正是后面应当继续研究的课题。