李小飞
(西南石油大学控制工程2017 级 四川省成都市 610500)
火灾是一种比较常见的,能够对社会公共安全造成较大损失的灾害。据统计,2019年全年共接报火灾23.3 万起,直接财产损失达到36.12 亿元。随着计算机能力的不断提升,计算机视觉领域得到了蓬勃的发展。通过摄像头采集视频,检测该视频图像中是否有火焰的这种方式逐渐成为了目前火灾防控系统研究的主流方向。基于视频图像的火灾识别主要是通过火焰固有的特征判断视频图像中是否有火焰的存在,特征包括火焰在颜色空间中的模型,火焰的形态特征以及纹理特征等,可以通过一种或多种特征相结合的方式检测火焰。
早期的火焰识别主要通过分析火焰的颜色特征,建立火焰的颜色模型来识别火焰。Chen 等人[1]通过在RGB 和НIS 颜色空间上建立火焰模型,分析火焰特征并对其进行不规则性检测。吴爱国等人[2]通过区域分割算法提取疑似的火焰区域,并在此基础上通过边界链码的方式来计算区域圆形度等特征从而分析是否有火焰产生。顾俊俊等人[3]在找到疑似火焰区域的基础上,进一步提出了火焰尖角的计算方法,将二值化后的图像中所有符合特定条件的尖角标记出来后,利用高度以及宽度来判断该尖角是否为火焰的尖角。秦薇薇等人[4]利用背景差分法对视频中的火焰图像进行分割,效果显著,但是速度较慢,对噪声比较敏感。齐怀琴等人[5]提出了火焰的面积变化率以及火焰的质心两种新的火焰特征用以识别火焰。鹿书恩[6]采用多特征融合的方式将多种火焰特征通过与运算进行融合,提高了火焰的判别精度。
现代摄像头采集的大多为彩色图像,因此需要首先对图像建立颜色模型,初步判断图像中是否有火焰的存在[7]。在火灾识别领域,更常用的颜色模型为RGB、НSI 两种。
RGB 颜色模型就是通过给予红、绿、蓝三种基本颜色不同的权重并对其进行叠加来建立颜色空间。火焰在RGB 空间中有特定的规律[8],红色分量大于绿色分量,绿色分量大于蓝色分量,即R(x,y)>G(x,y)>B(x,y)。而且R 通道的亮度与饱和度都相对较高,因此还需要满足R(x,y)>Rt,其中Rt 为红色分量的阈值,多次试验后,本文选取170。
НSI 模型不同于RGB 模型的色彩加权相加,这种颜色模型通过提取图像的色相,饱和度以及亮度这三种元素进行数学建模。相比于RGB 颜色模型,НSI 颜色模型更符合人类的视觉习惯[9]。
火焰在НSI 空间的数学模型满足如下条件:0 ≤Н ≤600.2 ≤S ≤ 1.0100 ≤Н ≤255,其中Н 为色相,S 为饱和度。
火焰有很多具有显著性的特征,如矩形度、圆形度、伸长度等。仅依靠单一特征,系统的识别效果总是有欠缺,而将多个特征进行融合,则能极大的提高火焰检测的精度[10]。针对和火焰颜色相近的物体,如路灯、车灯、太阳等可以结合多种不同火焰的形状特征将其筛选出去。
本文选取了150 张各式的火焰图片,以及150 张常见的与火焰颜色相近非火焰图片,用以分析提取这些特征,从而达到提高火焰识别率的目的。
建立好颜色模型后,需要通过边缘信息对图像中的疑似火焰区域做进一步分析。在图像识别领域,一般会先将彩色图片进行一次低通滤波,也就是灰度化处理。图像灰度化就是将彩色图每个像素中的r,g,b 通道中的三个值,通过某种算法融合为一个灰度值,一般取值范围在0 ~255 之间。0 代表纯黑色,255 代表纯白色,其他值代表不同等级的灰色。图像灰度化会丢失部分火焰信息,但是可以提高系统的运行效率。为了弥补这部分损失,在对图像进行低通滤波时,可以通过灵活调整灰度化系数,尽可能保留更多原图的信息,图像灰度化公式如式(1)所示:
其中,XR、XG、XB分别为 RGB 分量的权值。
图像滤波是指对图片中物体的识别会造成干扰的不相关信息进行抑制的过程,这些不相关信息称为噪音。图像的滤波相当于是利用不同的卷积核对图像进行卷积操作中值滤波属于非线性滤波,对输入图像在固定窗口中所有值进行排序,选择中值作为输出图像对应像素点的灰度值,这种滤波策略对于椒盐噪声有非常好的抑制作用。相对于线性滤波而言,中值滤波最大的优点就是在抑制噪声的时候可以保护信号的边缘,这对于图像的特征提取非常重要。
通过形态学处理,可以实现边缘提取的效果,同时可以填充图片中的孔洞,提取具有特征的点,如角点等。
3.3.1 开运算
开运算相对较为复杂,需要先对图像进行腐蚀操作,然后再对图像进行膨胀操作,其原理表达式如式(2):
开运算可以删除不包含结构元素的对象区域,对物体的轮廓进行平滑,对于物体之间狭窄的连接进行擦除。
3.3.2 闭运算
图1:矩形度统计直方图
图2:圆形度统计直方图
图3:基于多特征融合的火焰识别
闭运算与开运算类似,需要先对图像进行膨胀操作,然后再对图像进行腐蚀操作,其远离表达式如式(3)所示:
闭运算能够对图像中微小的黑色斑点进行有效的抑制,平滑对象的轮廓,并且可以增强物体之间细小的连接。
通常火焰内部图像都满足颜色空间的条件,颜色的变动并不大,而类似月亮、灯泡等干扰物其发光部位内部颜色分布也很稳定。显然,在全图范围内利用火焰特征提取连通域是不必要的,可以先通过颜色聚类的方式减小识别范围。
Kmeans 是一种运算速度比较快的聚类方法[11],k 是系统的超参数,表示数据集中类的个数,需要预先指定。Kmeans 算法的步骤如下:
(1)先确定数据集需要被划分的类别数
(2)随机确定k 个点作为中心点,计算数据集中的点到每个中心点的距离,将距离某个中心点距离较近的数据点集合作为一类。
(3)计算每个集合中数据点的平均值,并把这个平均值作为新的中心点。
(4)重复第2 步和第3 步,直到中心点不再发生变动。
Canny 算子是一种能够精确确定图像边缘的算子[12],可以去掉由噪声或一些与火焰不相关的细节而引入的假边缘。利用Canny 算子分析图像边缘时需要先将火焰的灰度图进行高斯滤波,滤除噪声,然后利用一阶偏导的有向差分来计算梯度的幅值和方向,通常使用Sobel 算子进行计算。
计算的结果需要对梯度幅值进行非极大值抑止,即寻找像素点领域内梯度方向的局部最大值点并将其置1,其余值至0。由于是在梯度方向上寻找,而图像的像素点是离散分布的,如果梯度方向上没有像素点,就需要用领域内已有的像素点通过差值的方式计算出一个亚像素点,从而进行判断。
最后为了进一步减少假边缘,Canny 算子采用双阈值检测算法。如果梯度幅值大于高阈值则直接判定为边缘,如果小于低阈值则直接舍弃,位于高阈值和低阈值之间的像素点,如果在边缘像素的8个领域像素内,则判定为边缘,否则舍弃。
3.6.1 矩形度
矩形度是图像连通域对其外接矩形充满程度的一种度量[13],表示物体与矩形之间的相似程度,计算公式如式(4)所示:
其中AS是目标物体,即火焰的面积,AR是图像中该目标物的最小外接矩形的面积。当目标物的形态与矩形越接近时,矩形度就越接近1;当目标物的形态与矩形相差越大时,矩形度就越接近0。外接矩形的计算方法为目标物体最大和最小纵坐标之间的差值与目标物最大和最小横坐标之间的差值的乘积。
图1 是对300 张样本图像的矩形度统计直方图,通过对统计图进行分析,可以得出火焰的矩形度大致在0.4-0.6 之间。
3.6.2 圆形度
圆形度是对物体连通域边缘复杂程度的一种度量[14],连通域越接近圆形,其圆形度越大;连通域越不规则,其圆形度越小。计算公式如图(5)所示:
其中,S 为物体连通域的面积,L 为物体连通域的周长。在进行火焰识别时,环境中的光源会对识别造成很大的影响,如太阳、白炽灯、汽车尾灯等。而这些光源与圆形非常接近,通过圆形度可以很好的排除外界光源的影响。
图2 是对300 张样本图像的圆形度统计直方图,通过对统计图进行分析,可以得出火焰的矩形度大致在0.3-0.7 之间。
首先对经过颜色模型处理的图像,利用K-Means 算法进行聚类,聚类的k 值取3。然后对聚类的结果利用形态学操作对识别的连通域中的孔洞进行填充,并对聚类的结果通过漫水填充法填充不同的颜色作为区分。接着利用Canny 算子算法检测到各个聚类集群的边缘,再利用矩形度、圆形度对连通域进行判断舍弃掉非火焰的区域,最终描绘出真正火焰的轮廓。试验过程如图3 所示。
由实验结果可知,基于颜色模型与多特征融合的火焰识别算法,能够很好的提取火焰的轮廓,甚至在火焰分布比较扭曲的情况下仍然能够很好的进行识别。
通过对300 张图片进行测试,本优化算法对火焰的检测精度可以达到95%以上,对于非火焰几乎没有误报的现象发生。由检测结果可知,尽管灯光的颜色模型与火焰很相似,但是本算法依然可以将其与火焰区分开。同时对于边缘比较平滑的火焰图像,本算法也能很好的提起其特征,进行正确的识别。