其中图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算法需要进行人工定位以及容易发散的缺点。但是,文中方法在干扰源过多时,也容易产生跟踪错误的情况,这一缺点正是后面应当继续研究的课题。