APP下载

火焰轮廓提取与检测

2011-04-07王文豪严云洋胡荣林

关键词:链表轮廓火焰

王文豪,严云洋,胡荣林

(淮阴工学院计算机工程学院,江苏淮安 223003)

0 前言

火灾的准确探测与报警是消防安全的重要手段。传统的火灾报警系统一般是基于红外传感器和烟雾传感器,也就是探测火灾发生时生成的烟、温度和光等参量,经信号处理、比较、判断后发出火灾报警信号[1]。但在大空间、大面积、环境比较恶劣和室外环境等场所这些方法无法发挥其作用,常常发生误报[2]。于是人们又提出了利用图像处理技术进行火灾的监控和报警。

这种基于数字图像处理的火灾识别技术的难点就是火焰目标的提取和识别。文献[3]提出了一种统计阈值和背景掩码相结合的方法进行火焰区域提取,但由于依赖于固定背景,适应性较差。文献[4]引入模糊逻辑模型进行火焰区域提取,该方法依据像素色彩值进行火焰像素的识别,没有考虑到火焰区域的颜色分布特征,所提取的轮廓与物体实际的轮廓存在差别,影响了火焰识别的准确性。

本文在分析火焰特性的基础上,提出了一种新的基于面积阈值和集合运算提取火焰目标的算法,并结合火焰色彩分布的特性进行火焰检测。实验表明:本方法能够有效地检测出图像中是否含有火焰目标。

1 火焰的图像特性

1.1 边缘的变化

火焰的边缘变化同其他的高温物体和灯光及稳定火焰的边缘变化也有一定的区别,可以利用火焰边缘的变化来进行火焰判别,火焰边缘是抖动的,而其他高温物体和灯光的边缘是比较稳定。可以利用边缘检测和边缘搜索算法将火焰的边缘提取出来,再根据边缘的形状、曲率等特性来判断是否是为火焰,但因其运算量较大,无法满足火灾探测系统快速报警的要求。

1.2 火焰的色彩分布

任何火焰因其温度的不均匀可以分为外焰,内焰和焰心 3部分。外焰温度最高,其次是内焰,焰心温度最低[5-6]。因而造成火焰图像灰度级呈一定的分布规律,可以利用这个特性进行火焰判别,以区分出灯光及其他高温物体。

2 火焰的检测

2.1 物体轮廓的提取

物体轮廓的提取是目标检测和识别的基础,以往的目标提取主要是基于边缘检测,如Robert算子、Sobel算子、Prewitt算子、Lapalace算子等。这类方法在提取物体轮廓边缘时,二值化阈值很多情况下都是通过经验或人为制定的,不具有自适应性,且提取的目标轮廓噪声干扰较严重[7],因此,常需要对图像进行多次膨胀和腐蚀处理,为此,本文提出一种新的物体轮廓提取方法。其基本思想是先对图像进行灰度化处理,然后用迭代的方法选取最佳阈值对图像进行二值化处理,这样在图像中可以得到许多的连通区域,这些区域有的是物体部分,有的则是噪声,再把每一个连通的区域看作是一个集合,对每一个集合进行具体分析,消除噪声,得到物体的轮廓,算法过程如下。

步骤1:对图像进行灰度化处理。

步骤 2:用迭代的方法求取最佳阈值。其基本方法是先选用一个近似的阀值分割图像,从而获得目标物体和背景两类子图像,然后分别对其进行积分并将结果取平均以求得新的阈值,再用此阈值分割图像,如此反复迭代下去,直到收敛于某个稳定的阈值时,便可以求得图像的最佳阈值。下面是对上述文字的数学表达:

其中,N为图像灰度级;hk是灰度值为k的像素个数。使用该阈值在图像对比度比较大的情况下,可以较精确的分割图像。

步骤 3:用该阈值对灰度图像进行二值化处理,得到黑白图像。

步骤4:扫描该黑白图像,将该图像中所有白色像素加入到以PixeList为头节点的链表中。

步骤5:对PixeList链表中的像素进行分类,即产生每个连通区域所对应的集合(为每个连通区域建立一个链表Area,所有的连通区域构成一张区域链表AreaList)。

在对链表中的像素进行区域分类时,按照从左向右和从上到下的顺序扫描图像,依据当前像素点可能出现的位置,需要考虑5种情况:(1)位于图像上边界的像素;(2)位于图像下边界的像素;(3)位于图像左边界的像素;(4)位于图像右边界的像素;(5)位于图像中间位置的像素,需要分别处理。

(1)对于图像上边界的像素,除左边第一个像素外,其余每个像素都要查看其左边的像素是否在某一链表区域中,若在,则将当前像素加入到该区域中,并将该区域面积增加 1。否则新建一个链表区域,并置此区域面积为 1。

(2)对于图像下边界的像素,需要检查其左边、左上方和正上方的像素处理结果。为了简化算法的设计,可以不处理该边界的像素。

(3)对于图像左边界的像素,除左上角的像素外,其余每个像素都需要检查其正上方和右上方的像素,如果其正上方或右上方的像素在某一链表区域中,则将当前像素加入到该区域中,并将该区域面积增加 1;否则新建一个链表区域,并置此区域面积为 1。

(4)对于图像右边界的像素,需要检测其左边、左上方和正上方的像素。如果其左边、左上方或正上方的像素在某一链表区域中,则将当前像素加入到该区域中,并将该区域面积增加 1;否则新建一个链表区域,并置此区域面积为 1。

(5)对于图像中间位置的像素,要考虑其左边、左上方、正上方和右上方的像素处理结果[8],如图1所示。

图1 像素的位置关系

图1中“●”代表当前像素,对其处理不能像(1)、(2)、(3)和(4)中处理的那样简单。因为当前像素的加入可能会导致原先两个互不连通的区域变成连通。例如,若当前像素在PixeList链表中,且①∈Area1,④∈Area2,则当前像素的加入会使区域Area1中任一个像素都可以到达区域Area2中任一个像素,即Area1和Area2变为一个连通区域Area12,即:Area12=Area2∪Area1={x∈Area1或x∈Area2},因此,必须合并这两个区域。对于这一类像素的处理过程如下:

(a)先检查像素①在某一连通区域内Areai,如果在,则把当前像素加入到Areai中,并将Areai的区域面积增加1。然后再查看④是否在Areai中,如果在,则结束本次处理;否则还要查看像素④是否在另一连通区域Areaj中,如果在,则合并Areai和Areaj区域为Areaij,并置Areaij的区域面积为Areai与Areaj的区域面积之和。

(b)若像素①不在任一连通区域内,而像素②在某一连通区域Areai内,则把当前像素加入到Areai中,并将Areai的区域面积增加1,然后再检查像素④是否在Areai,如果在,则结束本次处理。否则,还要检查像素④是否在另一连通区域Areaj中,如果在,则合并Areai和Areaj区域为Areaij,并置Areaij的区域面积为Areai与Areaj的区域面积之和。

(c)若像素①,②都不在任一个连通区域内,则对其处理方法同图像左边界像素的处理方法。

(d)若像素①,②,③和④都不在任一个连通区域内,则新建一个链表区域,并置此区域的面积为 1。

步骤 6:经过以上处理后,得到了一个以链表形式存储的连通区域,并且已经统计出了这些区域的面积,此时可以选取适当的面积值(从统计出的面积值中选取)作为阈值对图像进行过滤,最终面积超过阈值的连通区域被完整的保留下来。然后再采用挖空法,便可以得到单像素且不交叉的连续轮廓。

2.2 火焰目标的检测

通过以上步骤所得到物体轮廓,有的可能不是火焰物体,为了剔除一些干扰因素,可以采用以下一些经验性的规则加以判断。

(1)统计区域灰度均值。火焰燃烧时发出的红外光的波长集中于 950~2 000 nm,在影像中表现为高亮度,其灰度值一般在 200以上[1],一般漫反射物体很难达到火焰的亮度,所以可以利用这一特性来判断剔除一些干扰区域。

(2)满足上述特征的不一定是火焰,可能是一些固定光源和阳光。由于火焰色彩的分布不同于一般的发光物体的色彩分布,火焰颜色分布一般从外焰到焰心有从红色向白色减少的趋势。为此,提出如下检测算法:

从轮廓的左上像素开始,取其连通区域内的像素点 Ri,Gi,Bi的值,i=1,2,…N,连通方向为右下,如果右下无连通像素,则取下连通,每 3个像素求其红色比重的平均值,组成数列,然后做一阶差分运算,从边缘像素开始,如果红色比重的减少趋势持续到一定的步数时(实验时取为 12),说明有红色向白色移动的趋势[9]。可以认为这个物体是火焰。红色比重计算公式如下:

3 试验及分析

在研究过程中,使用VC++6.0模拟我们的方法,收集了包括明火图片,自然风景,室内灯光等共 80幅图片进行试验,得到的结果见表1。

表1 试验结果

图2是其中的一幅原图像,首先把图像转化为灰度图像,然后用阈值迭代的方法选取阈值,把灰度图像转化为二值图像,处理结果如图3所示,然后使用本文提取物体轮廓的算法,得到如图4所示的物体轮廓,最后跟踪已提取的轮廓,并结合火焰色彩分布的特征,进一步检测是否含有火焰物体,检测结果如图5所示。图7和图8是分别使用 Robert算子和Lapalace算子提取的物体轮廓边缘,其轮廓边缘不连续,边缘有断裂现象,边缘定位不够精确且物体轮廓较粗,噪声干扰较严重,不利于后面根据火焰边缘色彩分布特征进行火焰的检测。通过比较可以很清楚地看出:本文提取物体轮廓的方法,不仅可以滤除噪声,而且可以得到连续封闭的较细的物体轮廓,为后面进一步提取火焰的特征带来很大的方便。

图8是一幅风景图像,其天空的颜色与火焰十分的相似。首先对其进行二值化处理,结果如图9所示,很显然,二值化后的图像有很多连通区域,继续使用本文算法提取的物体轮廓,结果如图10所示,其外围的区域不满足火焰的特征,从而做出“没有检测到火焰”的判断。测试的结果也证明了这一点,如图11所示。

从试验结果可以看出:本文提出的算法能够有效地检测出图像中是否有火焰,并且很好地抑制了噪声和干扰,但在复杂环境下,火焰的检测率性能会有所下降,主要是由于火焰边沿轮廓的外围区域受到背景环境的影响,使得边缘色彩分布不具有火焰的特征。

4 结束语

本文算法的最大优点是能够获得连续不交叉的单像素物体轮廓,使得轮廓跟踪变得十分容易,为后续的火焰和火灾识别的研究提供了良好的条件。此外,只要噪声面积没有超过物体面积,还可实现完全去除噪声。

[1] 范华忠,张伯虎,冯艳.图像处理技术在火焰目标提取中的应用[J].电光与控制,2006,13(1):100-104.

[2] 崔凯,曹榆,冯杰平.图像型火灾探测技术浅议[J].消防技术与产品信息,2005(4):30-32.

[3] Cho B H,Bae JW,Jung SH.Image Processing-based Fire Detection System Using Statistic Color Model[C]//International Con ference on Advanced Language Processing and Web Information Technology.New York:IEEE,2008:245-250.

[4] Celik T,Seyin O H,Demirel H.Fire Pixel Classification Using Fuzzy Logic and Statistical Color Model[C]//ICASSP 2007.New York:IEEE,2007:1207-1208.

[5] 袁非牛,廖光煊,张永明,等.计算机视觉火灾探测中的特征提取[J].中国科学技术大学学报,2006,36(1):39-43.

[6] Marbach G,Loepfem,Brupbacher T.An Images[J].Fire Safety Journal,2006,41(2):285-289.

[7] 汪国云,李济顺.基于轮廓的物体识别与定位方法[J].河南科技大学学报:自然科学版,2006,27(6):42-45.

[8] 严云洋,盛明超,杨静宇.单像素宽度目标轮廓提取的实现[J].微计算机信息,2007,23(7):284-286.

[9] 罗云林,朱瑞平,王菁华.基于数字图像处理的火警监测系统研究[J].辽宁工程技术大学学报,2002,21(6):754-756.

猜你喜欢

链表轮廓火焰
最亮的火焰
缤纷的火焰
OPENCV轮廓识别研究与实践
基于实时轮廓误差估算的数控系统轮廓控制
基于二进制链表的粗糙集属性约简
漂在水上的火焰
跟麦咭学编程
基于链表多分支路径树的云存储数据完整性验证机制
高速公路主动发光轮廓标应用方案设计探讨
吹不灭的火焰