摘 要: 基于火焰縱向燃燒的特性,運用圖像處理技術,實現了一種基于紅外圖像軸向比的火災判別算法,通過設定火災圖像軸向比的閾值,實現了一種新型的火災判別技術。
關鍵詞: 紅外圖像;圖像處理;軸向比;火災判別
火災對于人類的危害是顯而易見的,對其進行有效的預防和監控,把火災所帶來的損失降到最小的程度是當今火災防御技術等領域研究的重中之重。傳統的火災探測器用于對監控現場敏感現象(如煙霧濃度、溫度、火焰等)的實時變化進行檢測。由于一些大空間及地下建筑的特殊性,普通的感煙、感溫火災探測報警系統無法迅速采集火災發出的煙溫變化信息,傳統檢測方法存在一定的缺陷。而圖像型火災探測技術對于火災探測具有非接觸式探測的特點,不受空間高度、熱障、易爆、有毒等環境條件的限制,基于此,提供了一種新的火災探測的方法。與傳統的感煙感溫探測技術相比,圖像監測快速性的基礎是視覺上所接受的信息以光為傳播媒介,而圖像信息豐富和直觀,從而為早期火災的辨識和判斷奠定了基礎。
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.