李小飛
(西南石油大學(xué)控制工程2017 級(jí) 四川省成都市 610500)
火災(zāi)是一種比較常見(jiàn)的,能夠?qū)ι鐣?huì)公共安全造成較大損失的災(zāi)害。據(jù)統(tǒng)計(jì),2019年全年共接報(bào)火災(zāi)23.3 萬(wàn)起,直接財(cái)產(chǎn)損失達(dá)到36.12 億元。隨著計(jì)算機(jī)能力的不斷提升,計(jì)算機(jī)視覺(jué)領(lǐng)域得到了蓬勃的發(fā)展。通過(guò)攝像頭采集視頻,檢測(cè)該視頻圖像中是否有火焰的這種方式逐漸成為了目前火災(zāi)防控系統(tǒng)研究的主流方向?;谝曨l圖像的火災(zāi)識(shí)別主要是通過(guò)火焰固有的特征判斷視頻圖像中是否有火焰的存在,特征包括火焰在顏色空間中的模型,火焰的形態(tài)特征以及紋理特征等,可以通過(guò)一種或多種特征相結(jié)合的方式檢測(cè)火焰。
早期的火焰識(shí)別主要通過(guò)分析火焰的顏色特征,建立火焰的顏色模型來(lái)識(shí)別火焰。Chen 等人[1]通過(guò)在RGB 和НIS 顏色空間上建立火焰模型,分析火焰特征并對(duì)其進(jìn)行不規(guī)則性檢測(cè)。吳愛(ài)國(guó)等人[2]通過(guò)區(qū)域分割算法提取疑似的火焰區(qū)域,并在此基礎(chǔ)上通過(guò)邊界鏈碼的方式來(lái)計(jì)算區(qū)域圓形度等特征從而分析是否有火焰產(chǎn)生。顧俊俊等人[3]在找到疑似火焰區(qū)域的基礎(chǔ)上,進(jìn)一步提出了火焰尖角的計(jì)算方法,將二值化后的圖像中所有符合特定條件的尖角標(biāo)記出來(lái)后,利用高度以及寬度來(lái)判斷該尖角是否為火焰的尖角。秦薇薇等人[4]利用背景差分法對(duì)視頻中的火焰圖像進(jìn)行分割,效果顯著,但是速度較慢,對(duì)噪聲比較敏感。齊懷琴等人[5]提出了火焰的面積變化率以及火焰的質(zhì)心兩種新的火焰特征用以識(shí)別火焰。鹿書(shū)恩[6]采用多特征融合的方式將多種火焰特征通過(guò)與運(yùn)算進(jìn)行融合,提高了火焰的判別精度。
現(xiàn)代攝像頭采集的大多為彩色圖像,因此需要首先對(duì)圖像建立顏色模型,初步判斷圖像中是否有火焰的存在[7]。在火災(zāi)識(shí)別領(lǐng)域,更常用的顏色模型為RGB、НSI 兩種。
RGB 顏色模型就是通過(guò)給予紅、綠、藍(lán)三種基本顏色不同的權(quán)重并對(duì)其進(jìn)行疊加來(lái)建立顏色空間。火焰在RGB 空間中有特定的規(guī)律[8],紅色分量大于綠色分量,綠色分量大于藍(lán)色分量,即R(x,y)>G(x,y)>B(x,y)。而且R 通道的亮度與飽和度都相對(duì)較高,因此還需要滿(mǎn)足R(x,y)>Rt,其中Rt 為紅色分量的閾值,多次試驗(yàn)后,本文選取170。
НSI 模型不同于RGB 模型的色彩加權(quán)相加,這種顏色模型通過(guò)提取圖像的色相,飽和度以及亮度這三種元素進(jìn)行數(shù)學(xué)建模。相比于RGB 顏色模型,НSI 顏色模型更符合人類(lèi)的視覺(jué)習(xí)慣[9]。
火焰在НSI 空間的數(shù)學(xué)模型滿(mǎn)足如下條件:0 ≤Н ≤600.2 ≤S ≤ 1.0100 ≤Н ≤255,其中Н 為色相,S 為飽和度。
火焰有很多具有顯著性的特征,如矩形度、圓形度、伸長(zhǎng)度等。僅依靠單一特征,系統(tǒng)的識(shí)別效果總是有欠缺,而將多個(gè)特征進(jìn)行融合,則能極大的提高火焰檢測(cè)的精度[10]。針對(duì)和火焰顏色相近的物體,如路燈、車(chē)燈、太陽(yáng)等可以結(jié)合多種不同火焰的形狀特征將其篩選出去。
本文選取了150 張各式的火焰圖片,以及150 張常見(jiàn)的與火焰顏色相近非火焰圖片,用以分析提取這些特征,從而達(dá)到提高火焰識(shí)別率的目的。
建立好顏色模型后,需要通過(guò)邊緣信息對(duì)圖像中的疑似火焰區(qū)域做進(jìn)一步分析。在圖像識(shí)別領(lǐng)域,一般會(huì)先將彩色圖片進(jìn)行一次低通濾波,也就是灰度化處理。圖像灰度化就是將彩色圖每個(gè)像素中的r,g,b 通道中的三個(gè)值,通過(guò)某種算法融合為一個(gè)灰度值,一般取值范圍在0 ~255 之間。0 代表純黑色,255 代表純白色,其他值代表不同等級(jí)的灰色。圖像灰度化會(huì)丟失部分火焰信息,但是可以提高系統(tǒng)的運(yùn)行效率。為了彌補(bǔ)這部分損失,在對(duì)圖像進(jìn)行低通濾波時(shí),可以通過(guò)靈活調(diào)整灰度化系數(shù),盡可能保留更多原圖的信息,圖像灰度化公式如式(1)所示:
其中,XR、XG、XB分別為 RGB 分量的權(quán)值。
圖像濾波是指對(duì)圖片中物體的識(shí)別會(huì)造成干擾的不相關(guān)信息進(jìn)行抑制的過(guò)程,這些不相關(guān)信息稱(chēng)為噪音。圖像的濾波相當(dāng)于是利用不同的卷積核對(duì)圖像進(jìn)行卷積操作中值濾波屬于非線(xiàn)性濾波,對(duì)輸入圖像在固定窗口中所有值進(jìn)行排序,選擇中值作為輸出圖像對(duì)應(yīng)像素點(diǎn)的灰度值,這種濾波策略對(duì)于椒鹽噪聲有非常好的抑制作用。相對(duì)于線(xiàn)性濾波而言,中值濾波最大的優(yōu)點(diǎn)就是在抑制噪聲的時(shí)候可以保護(hù)信號(hào)的邊緣,這對(duì)于圖像的特征提取非常重要。
通過(guò)形態(tài)學(xué)處理,可以實(shí)現(xiàn)邊緣提取的效果,同時(shí)可以填充圖片中的孔洞,提取具有特征的點(diǎn),如角點(diǎn)等。
3.3.1 開(kāi)運(yùn)算
開(kāi)運(yùn)算相對(duì)較為復(fù)雜,需要先對(duì)圖像進(jìn)行腐蝕操作,然后再對(duì)圖像進(jìn)行膨脹操作,其原理表達(dá)式如式(2):
開(kāi)運(yùn)算可以刪除不包含結(jié)構(gòu)元素的對(duì)象區(qū)域,對(duì)物體的輪廓進(jìn)行平滑,對(duì)于物體之間狹窄的連接進(jìn)行擦除。
3.3.2 閉運(yùn)算
圖1:矩形度統(tǒng)計(jì)直方圖
圖2:圓形度統(tǒng)計(jì)直方圖
圖3:基于多特征融合的火焰識(shí)別
閉運(yùn)算與開(kāi)運(yùn)算類(lèi)似,需要先對(duì)圖像進(jìn)行膨脹操作,然后再對(duì)圖像進(jìn)行腐蝕操作,其遠(yuǎn)離表達(dá)式如式(3)所示:
閉運(yùn)算能夠?qū)D像中微小的黑色斑點(diǎn)進(jìn)行有效的抑制,平滑對(duì)象的輪廓,并且可以增強(qiáng)物體之間細(xì)小的連接。
通常火焰內(nèi)部圖像都滿(mǎn)足顏色空間的條件,顏色的變動(dòng)并不大,而類(lèi)似月亮、燈泡等干擾物其發(fā)光部位內(nèi)部顏色分布也很穩(wěn)定。顯然,在全圖范圍內(nèi)利用火焰特征提取連通域是不必要的,可以先通過(guò)顏色聚類(lèi)的方式減小識(shí)別范圍。
Kmeans 是一種運(yùn)算速度比較快的聚類(lèi)方法[11],k 是系統(tǒng)的超參數(shù),表示數(shù)據(jù)集中類(lèi)的個(gè)數(shù),需要預(yù)先指定。Kmeans 算法的步驟如下:
(1)先確定數(shù)據(jù)集需要被劃分的類(lèi)別數(shù)
(2)隨機(jī)確定k 個(gè)點(diǎn)作為中心點(diǎn),計(jì)算數(shù)據(jù)集中的點(diǎn)到每個(gè)中心點(diǎn)的距離,將距離某個(gè)中心點(diǎn)距離較近的數(shù)據(jù)點(diǎn)集合作為一類(lèi)。
(3)計(jì)算每個(gè)集合中數(shù)據(jù)點(diǎn)的平均值,并把這個(gè)平均值作為新的中心點(diǎn)。
(4)重復(fù)第2 步和第3 步,直到中心點(diǎn)不再發(fā)生變動(dòng)。
Canny 算子是一種能夠精確確定圖像邊緣的算子[12],可以去掉由噪聲或一些與火焰不相關(guān)的細(xì)節(jié)而引入的假邊緣。利用Canny 算子分析圖像邊緣時(shí)需要先將火焰的灰度圖進(jìn)行高斯濾波,濾除噪聲,然后利用一階偏導(dǎo)的有向差分來(lái)計(jì)算梯度的幅值和方向,通常使用Sobel 算子進(jìn)行計(jì)算。
計(jì)算的結(jié)果需要對(duì)梯度幅值進(jìn)行非極大值抑止,即尋找像素點(diǎn)領(lǐng)域內(nèi)梯度方向的局部最大值點(diǎn)并將其置1,其余值至0。由于是在梯度方向上尋找,而圖像的像素點(diǎn)是離散分布的,如果梯度方向上沒(méi)有像素點(diǎn),就需要用領(lǐng)域內(nèi)已有的像素點(diǎn)通過(guò)差值的方式計(jì)算出一個(gè)亞像素點(diǎn),從而進(jìn)行判斷。
最后為了進(jìn)一步減少假邊緣,Canny 算子采用雙閾值檢測(cè)算法。如果梯度幅值大于高閾值則直接判定為邊緣,如果小于低閾值則直接舍棄,位于高閾值和低閾值之間的像素點(diǎn),如果在邊緣像素的8個(gè)領(lǐng)域像素內(nèi),則判定為邊緣,否則舍棄。
3.6.1 矩形度
矩形度是圖像連通域?qū)ζ渫饨泳匦纬錆M(mǎn)程度的一種度量[13],表示物體與矩形之間的相似程度,計(jì)算公式如式(4)所示:
其中AS是目標(biāo)物體,即火焰的面積,AR是圖像中該目標(biāo)物的最小外接矩形的面積。當(dāng)目標(biāo)物的形態(tài)與矩形越接近時(shí),矩形度就越接近1;當(dāng)目標(biāo)物的形態(tài)與矩形相差越大時(shí),矩形度就越接近0。外接矩形的計(jì)算方法為目標(biāo)物體最大和最小縱坐標(biāo)之間的差值與目標(biāo)物最大和最小橫坐標(biāo)之間的差值的乘積。
圖1 是對(duì)300 張樣本圖像的矩形度統(tǒng)計(jì)直方圖,通過(guò)對(duì)統(tǒng)計(jì)圖進(jìn)行分析,可以得出火焰的矩形度大致在0.4-0.6 之間。
3.6.2 圓形度
圓形度是對(duì)物體連通域邊緣復(fù)雜程度的一種度量[14],連通域越接近圓形,其圓形度越大;連通域越不規(guī)則,其圓形度越小。計(jì)算公式如圖(5)所示:
其中,S 為物體連通域的面積,L 為物體連通域的周長(zhǎng)。在進(jìn)行火焰識(shí)別時(shí),環(huán)境中的光源會(huì)對(duì)識(shí)別造成很大的影響,如太陽(yáng)、白熾燈、汽車(chē)尾燈等。而這些光源與圓形非常接近,通過(guò)圓形度可以很好的排除外界光源的影響。
圖2 是對(duì)300 張樣本圖像的圓形度統(tǒng)計(jì)直方圖,通過(guò)對(duì)統(tǒng)計(jì)圖進(jìn)行分析,可以得出火焰的矩形度大致在0.3-0.7 之間。
首先對(duì)經(jīng)過(guò)顏色模型處理的圖像,利用K-Means 算法進(jìn)行聚類(lèi),聚類(lèi)的k 值取3。然后對(duì)聚類(lèi)的結(jié)果利用形態(tài)學(xué)操作對(duì)識(shí)別的連通域中的孔洞進(jìn)行填充,并對(duì)聚類(lèi)的結(jié)果通過(guò)漫水填充法填充不同的顏色作為區(qū)分。接著利用Canny 算子算法檢測(cè)到各個(gè)聚類(lèi)集群的邊緣,再利用矩形度、圓形度對(duì)連通域進(jìn)行判斷舍棄掉非火焰的區(qū)域,最終描繪出真正火焰的輪廓。試驗(yàn)過(guò)程如圖3 所示。
由實(shí)驗(yàn)結(jié)果可知,基于顏色模型與多特征融合的火焰識(shí)別算法,能夠很好的提取火焰的輪廓,甚至在火焰分布比較扭曲的情況下仍然能夠很好的進(jìn)行識(shí)別。
通過(guò)對(duì)300 張圖片進(jìn)行測(cè)試,本優(yōu)化算法對(duì)火焰的檢測(cè)精度可以達(dá)到95%以上,對(duì)于非火焰幾乎沒(méi)有誤報(bào)的現(xiàn)象發(fā)生。由檢測(cè)結(jié)果可知,盡管燈光的顏色模型與火焰很相似,但是本算法依然可以將其與火焰區(qū)分開(kāi)。同時(shí)對(duì)于邊緣比較平滑的火焰圖像,本算法也能很好的提起其特征,進(jìn)行正確的識(shí)別。