摘 要: 基于火焰纵向燃烧的特性,运用图像处理技术,实现了一种基于红外图像轴向比的火灾判别算法,通过设定火灾图像轴向比的阈值,实现了一种新型的火灾判别技术。
关键词: 红外图像;图像处理;轴向比;火灾判别
火灾对于人类的危害是显而易见的,对其进行有效的预防和监控,把火灾所带来的损失降到最小的程度是当今火灾防御技术等领域研究的重中之重。传统的火灾探测器用于对监控现场敏感现象(如烟雾浓度、温度、火焰等)的实时变化进行检测。由于一些大空间及地下建筑的特殊性,普通的感烟、感温火灾探测报警系统无法迅速采集火灾发出的烟温变化信息,传统检测方法存在一定的缺陷。而图像型火灾探测技术对于火灾探测具有非接触式探测的特点,不受空间高度、热障、易爆、有毒等环境条件的限制,基于此,提供了一种新的火灾探测的方法。与传统的感烟感温探测技术相比,图像监测快速性的基础是视觉上所接受的信息以光为传播媒介,而图像信息丰富和直观,从而为早期火灾的辨识和判断奠定了基础。
1 火焰的纵向燃烧特性
在日常生活中,看到的火焰不论大小,总是向上蹿的。这主要是因为物体在燃烧的过程中会散发出热量,于是火焰周围的空气会变热并且膨胀,从而变得稀薄,其浮力也会增大,于是,热空气会包住火焰逐渐上升,使得火焰向上。之后,冷空气会从四面八方来补充热空气上升而留下来的空缺,补充过来的冷空气又经过加热、膨胀变得稀薄,浮力变大,缓慢上升,产生循环。图1揭示了火焰燃烧时气流的上升过程。
火焰总是向上燃烧的,并且由于在火焰周围的气流是自下而上的,在这样的气流的影响下,火焰的上方一般会形成一个小尖,而下方则会变为较上方更宽的不规则形。
因此,可以将火焰的纵向燃烧特性作为判别火灾的一个依据。在火灾发生的初期,火焰总是不断向上蹿的,结合红外测温原理,就可以探测到火灾的发生,达到早期报警、早期防护的目的,对预防或减少火灾的发生有着重要的现实意义。
2 基于红外图像轴向比的火灾判别机理
可燃物在燃烧时会释放出频率范围从紫外到红外的光波,在可见光波段,火焰图像具有独特的色谱、纹理等特征,使之在图像上与背景有明显的区别。但由于可见光波段受干扰的光源很多,造成其识别算法复杂度增加,可靠度下降,因而可以借助红外波段的图像识别,利用红外成像的原理获取燃烧初期所发出的红外图像进行图像处理,从而达到监控的目的。
由于火焰具有纵向燃烧的特性,因此在红外图像上表现出火焰的纵向高度大于其横向宽度。火焰轴向比为其纵向高度与横向宽度的比值。可以使用VC++结合OpenCV(开源计算机视觉库)对图像进行灰度化、二值化、轮廓跟踪等处理,建立外接矩形,计算出其轴向比设定阈值,并且结合红外测温原理判别是否形成火灾。
如图2所示,设定轴向比判别阈值为1,图2(a)超过轴向比判别阈值,图2(b)则没有超过设定的阈值。
3 基于红外图像轴向比的火灾判别系统
红外图像轴向比火灾判别系统结构简单,主要由红外滤光片、摄像头、PC、显示屏组成,如图3所示。
红外滤光片就是透红外光而阻止可见光的滤光片,可有效滤除人工照明等因素的干扰。红外滤光片的选取主要基于维恩位移定律[1],其公式为:
其中,为光谱辐射出射度的峰值波长;a是与温度无关的常数,a的近似值是0.289 cm.K。因此,光谱辐射出射度的峰值波长与绝对温度成反比。根据式(1)可以求出在某个温度下光谱辐射出射度的峰值波长,即可根据此波长来适当地选择滤光片[2]。
在图像型火灾探测系统中,摄像机的选用十分关键,它直接决定了整个系统的图像效果[3]。摄像机选用主要依据两个要素:摄像机的应用场合和摄像机的主要参数。
4 基于红外图像轴向比的火灾判别系统软件设计
4.1 编程环境
本系统使用VC++中的MFC搭建程序框架,并结合使用OpenCV中的图像处理函数。
OpenCV(Open Source Computer Vision Library)是Intel公司支持的开源计算机视觉库。它轻量级而且高效,由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。
4.2 软件流程
管理员登录火灾探测系统后,首先设置摄像头参数、设定轴向比判别阈值,然后对监控区域运用轴向比判别算法进行火灾探测,若超过轴向比判别阈值,则运用红外测温原理显示其温度及“火灾隐患”,同时启动语音报警及GSM短信报警。软件流程图如图4所示。
4.3 轴向比判别算法流程
将采集得到的图像经过平滑处理、灰度化、二值化后进行轮廓提取,提取出面积不断增大的轮廓,对面积不断增大的轮廓建立其外接矩形,以所得外接矩形的高宽比值求出当前帧的轴向比值。轴向比判别流程图如图5所示。
4.4 防误报警功能
在实际火灾探测过程中会遇到很多干扰,如白炽灯、打火机等,这就需要系统有一定的健壮性,能够排除干扰,正确识别火灾,不给出虚假报警信号。因此,在系统中加入了防误报警的功能,即当所前捕获的一帧图像超过轴向比判别阈值时并不立即报警,而是紧接着再多捕获几帧图像,若捕获到的图像中10帧内有6帧及以上超过轴向比阈值,则进行报警。防误报警流程图如图6所示。
4.5 部分程序源代码
IplImage* gray=cvCreateImage(cvGetSize(image),8,1);
if( capture == NULL ) //判断摄像头是否开启
while(capture != NULL) //判断帧数是否到10
{frame = cvQueryFrame( capture );
DrawPicToHDC(image, IDC_STATIC_PIC);
cvSmooth( pic, g_smooth, CV_MEDIAN, 3, 3, 0 );
//平滑处理
cvCvtColor( g_smooth, g_gray, CV_BGR2GRAY );
//灰度图
cvThreshold( g_gray, g_gray,128,255, CV_THRESH_BINARY);
//二值化
cvFindContours(g_gray,g_storage,&contours,sizeof(CvContour),
cvCvtColor(g_gray,dst,CV_GRAY2RGB); //灰度化
DrawPicToHDC(dst,IDC_STATIC_PIC2); //画出图像边缘
for( ;contours != 0; contours = contours->h_next )
//求出图片内所有轮廓的最大面积
CvRect box = cvBoundingRect(pcontours,NULL);
//计算矩形边界
cvCvtColor(g_gray,dst,CV_GRAY2RGB); //灰度图像
cvRectangle( dst, cvPoint(box.x, box.y), cvPoint(box.x+box.width, box.y+box.height), cvScalar(124, 5, 125), 3, 4, 0 );
//画出矩形轮廓
DrawPicToHDC(dst,IDC_STATIC_PIC2); //显示出轮廓
length=(float)box.height;
width=(float)box.width;
b=length/width; //求出轴向比的值
return b;
ro[Count]=p_handle(image);
if(Count==9)
for(int i=0;i<10;i++) //判断每一帧是否超过阈值
{if(ro[i]>=nPos)
nu++;}
if(nu>=6)
//如果10帧内超过阈值的帧数到达6帧,则显示超过阈值
{m_Edit9.SetSel(0,-1);
m_Edit9.ReplaceSel("");
m_Edit8.SetSel(0,-1);
m_Edit8.ReplaceSel("火灾隐患");
cvMinMaxLoc(gray,&MinValue,&MaxValue,&MinLocation,&MaxLocation);
}
Else
//轴向比判别,如果不超过阈值,则显示正常
{m_Edit8.SetSel(0,-1);
m_Edit8.ReplaceSel("");
m_Edit9.SetSel(0,-1);
m_Edit9.ReplaceSel("正常");
}
5 基于红外图像轴向比的火灾判别系统的实现
根据以上所述的基于红外图像轴向比的火灾判别算法,设计了火灾探测软件,使用一个采集红外图像的摄像头,若采集到的图像超过所设的轴向比阈值,则显示此时的温度值及“火灾隐患”,同时进行语音报警及GSM短信报警。图7所示为轴向比阈值设定为1时的火灾探测系统。
如图8所示,轴向比阈值设定为2,经过轴向比判别算法判别后没有超过设定的轴向比阈值,显示“正常”。
本文基于火焰纵向燃烧的机理,运用图像处理技术,通过设定火灾图像轴向比的阈值,设计出一种基于红外图像轴向比的火灾探测系统。实验表明,该火灾探测系统能对火灾进行实时有效的监控,从而实现了一种新型的火灾判别技术。
软件方面,系统基于OpenCV和MFC框架,通过红外图像轴向比判别算法来判别红外图像是否超过所设定的轴向比阈值,并结合红外测温原理对超过阈值的图像进行温度的判断,能及时准确地探测到火灾的发生。硬件方面,采用USB摄像头、红外滤光片等简单易得且性价比较高的器材配合数字图像处理来完成对火灾的实时监控。该系统基本实现了预期的功能。
参考文献
[1] 陆峰.基于红外图像识别的火灾探测系统[D].上海:东华大学,2009.
[2] 邬晓琳.红外图像型智能火灾探测系统的研究与实现[D].上海:东华大学,2013.
[3] 王本西.基于图像处理的火灾探测技术的研究[D].上海:东华大学,2006.