摘要:OpenCV(Open Source Computer Vision Library)是一個(gè)跨平臺(tái)的開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù),可以在運(yùn)行Linux、Windows等操作系統(tǒng)上運(yùn)行。它由一些C語(yǔ)言函數(shù)組成,包含了圖像處理及計(jì)算機(jī)視覺(jué)算法。本文主要工作是視頻中的火焰識(shí)別,通過(guò)背景相減算法分離火焰和目標(biāo)圖像,基于閾值分割圖像,再進(jìn)行形態(tài)學(xué)去噪,最后通過(guò)RGB和HIS算法,識(shí)別判定火焰。利用OpenCV,在VS2017平臺(tái)上實(shí)現(xiàn)了攝像機(jī)視頻中火焰的檢測(cè)。
關(guān)鍵詞:OpenCV;火焰識(shí)別;機(jī)器視覺(jué)
1 研究背景與意義
隨著人工智能的迅速發(fā)展,機(jī)器視覺(jué)越來(lái)越受到重視,比如火焰識(shí)別、人臉識(shí)別等等。中國(guó)的機(jī)器視覺(jué)技術(shù)發(fā)展迅速,應(yīng)用范圍滲透到了國(guó)民經(jīng)濟(jì)的各個(gè)行業(yè)。其主要原因是因?yàn)橹袊?guó)是世界主要的加工制造和應(yīng)用中心之一,隨著工業(yè)技術(shù)的日益精湛和工業(yè)標(biāo)準(zhǔn)的不斷提高,機(jī)器視覺(jué)技術(shù)在我國(guó)也在不斷發(fā)展壯大,同時(shí)人們也對(duì)機(jī)器視覺(jué)的發(fā)展加大了重視。
在消防領(lǐng)域,火焰識(shí)別發(fā)揮著至關(guān)重要的作用,如果機(jī)器能自動(dòng)識(shí)別火焰并自行滅火,必定能減少人員傷亡和財(cái)產(chǎn)損失。OpenCV給我們提供了相當(dāng)不錯(cuò)的函數(shù)庫(kù),通過(guò)OpenCV可以實(shí)現(xiàn)火焰識(shí)別功能,可以檢測(cè)靜態(tài)圖片中的火焰,還可以檢測(cè)實(shí)時(shí)視頻中的火焰,同時(shí)在視頻檢測(cè)的基礎(chǔ)上推廣到了攝像頭實(shí)時(shí)檢測(cè)。
2 OpenCV機(jī)器視覺(jué)的介紹
通俗來(lái)講,機(jī)器視覺(jué)就是用機(jī)器代替人眼的功能來(lái)實(shí)現(xiàn)相應(yīng)的系統(tǒng)功能。機(jī)器視覺(jué)通過(guò)圖像攝取裝置(分CMOS和CCD兩種)將已被攝取目標(biāo)轉(zhuǎn)換成數(shù)字圖像信號(hào),同時(shí)傳送給專(zhuān)用的數(shù)字圖像處理系統(tǒng),從而得到被攝目標(biāo)的圖像形態(tài)信息,根據(jù)像素分布和顏色、亮度等圖像信息,轉(zhuǎn)變成數(shù)字圖像信號(hào),圖像系統(tǒng)對(duì)這些數(shù)字信號(hào)進(jìn)行各種算法運(yùn)算來(lái)抽取目標(biāo)的相應(yīng)特征,進(jìn)而根據(jù)識(shí)別的結(jié)果來(lái)控制現(xiàn)場(chǎng)的設(shè)備運(yùn)行動(dòng)作。
機(jī)器視覺(jué)系統(tǒng)最大的特點(diǎn)就是提高生產(chǎn)系統(tǒng)的靈活性,增加自動(dòng)化程度。在一些不適合人工作業(yè)的危險(xiǎn)工作環(huán)境中或者人類(lèi)視覺(jué)難以滿足要求的場(chǎng)合,機(jī)器視覺(jué)可以用來(lái)來(lái)替代人工視覺(jué)。同時(shí),在大批量高強(qiáng)度重復(fù)性工業(yè)生產(chǎn)過(guò)程中,利用機(jī)器視覺(jué)可以極大提高生產(chǎn)的工作效率和自動(dòng)化的程度。
OpenCV提供了豐富的大量的視覺(jué)處理算法,而且這些算法絕大部分利用C語(yǔ)言編寫(xiě),同時(shí)OpenCV是開(kāi)源庫(kù),處理地很恰當(dāng),不需要額外添加新的外部函數(shù)或工具支持就可以直接編譯鏈接生成可執(zhí)行程序,所以也有人用來(lái)做算法移植,OpenCV的代碼還有一個(gè)很使用的特性就是,只要進(jìn)行簡(jiǎn)單的改造就可以應(yīng)用到DSP系統(tǒng)和ARM嵌入式系統(tǒng)中。OpenCV一直致力于現(xiàn)實(shí)世界的實(shí)時(shí)檢測(cè)應(yīng)用,通過(guò)優(yōu)化的C語(yǔ)言程序的編寫(xiě)對(duì)其執(zhí)行速度帶來(lái)了很大的提升,并且可以購(gòu)買(mǎi)Intel的IPP高性能多媒體函數(shù)庫(kù)(Integrated Performance Primitives)達(dá)到更快的處理速度。
3 OpenCV識(shí)別火焰設(shè)計(jì)
3.1 設(shè)計(jì)原理
利用OpenCV有強(qiáng)大的圖像處理功能,可以從攝像機(jī)獲取圖像,然而普通的RGB圖形并不能很好的反映出圖像的亮度色度等圖像特征,首先把圖像轉(zhuǎn)換成灰度圖像,灰度圖像可以展示出圖像的亮度色度等圖像特征。背景相減適合檢測(cè)運(yùn)動(dòng)的物體,這里使用幀差法進(jìn)行背景相減來(lái)檢測(cè)視頻中的火焰,可以檢測(cè)到運(yùn)動(dòng)物體的邊緣。
上面通過(guò)背景相減得到了目標(biāo)前景圖,再利用閾值分割方法,通過(guò)設(shè)定適當(dāng)?shù)拈撝担瑒h除一些過(guò)高或過(guò)低的像素點(diǎn)。將原圖二值化后,通過(guò)圖像形態(tài)學(xué)算法,對(duì)圖像進(jìn)行濾波去噪處理以便分割出較清晰明確的火焰,膨脹和開(kāi)運(yùn)算是圖像形態(tài)學(xué)中最基本的操作方法,通過(guò)這兩種操作可以消除噪聲從而得到想要的圖像。
判定火焰還可以通過(guò)RGB顏色模型來(lái)判定,火焰都有一定的顏色規(guī)律,將火焰分成R、G、B三個(gè)通道,即紅色分量、綠色分量和藍(lán)色分量,對(duì)火焰圖像來(lái)說(shuō),紅色分量和藍(lán)色分量較大,任何火焰像素必須滿足以下公式:
R(x, y)≥ Rt〖JY〗(1)
R(x, y)> G(x, y)> B(x, y)〖JY〗(2)
公式(1)中的Rt是紅的分量應(yīng)該滿足的閾值。R(x, y)、G(x, y)、 B(x, y)分別是某個(gè)像素點(diǎn)(x,y)上的紅色分量、綠色分量和藍(lán)色分量。如果目標(biāo)圖像滿足以上公式則基本判定是火焰目標(biāo),然而火焰圖像還包括許多其他圖像特征,為了更準(zhǔn)確地判定火焰目標(biāo),我們可以將RGB顏色模型與其他判定模型進(jìn)行結(jié)合。
單純通過(guò)RGB顏色模型來(lái)判定火焰會(huì)有很多誤報(bào)情況,這里介紹一種更有效的方法,就是將RGB和HIS顏色模型結(jié)合判定。HIS模型是通過(guò)色度、飽和度、亮度三要素進(jìn)行顏色判斷的,將RGB與HIS顏色模型的算法公式相結(jié)合,進(jìn)而計(jì)算圖像的顏色特征,實(shí)現(xiàn)火焰的判定。判定公式如下:
I = (R + G + B) / sqrt(3);
S = sqrt( (R G).^2 + (G B).^2 + (B R).^2 );
H = ( R .* 2 (G + B) )./sqrt( sqrt(2) * ( (R G).^2 + (G B).^2 + (B R).^2 ) );
H( G
3.2 運(yùn)行結(jié)果
4 總結(jié)與展望
本文在OpenCV識(shí)別火焰技術(shù)等各個(gè)方面進(jìn)行深入探討的基礎(chǔ)上,通過(guò)背景相減、閾值分割、圖像形態(tài)學(xué)操作結(jié)合RGB和HIS模型,設(shè)計(jì)了簡(jiǎn)單的火焰識(shí)別程序,由運(yùn)行結(jié)果中的圖1和圖二可以看出,程序識(shí)別了圖像中的火焰。本文設(shè)計(jì)程序簡(jiǎn)單,易調(diào)試。希望今后在革新的基礎(chǔ)上設(shè)計(jì)出性能更好,功能更強(qiáng)大的OpenCV識(shí)別火焰的程序來(lái)。
參考文獻(xiàn):
[1]于仕琪.學(xué)習(xí)OpenCV.北京:清華大學(xué)出版社,2009.10.
[2]鄭莉.C++語(yǔ)言程序設(shè)計(jì).北京:清華大學(xué)出版社,2010.7.
[3]譚歆.基于 OpenCV的運(yùn)動(dòng)目標(biāo)檢測(cè)方法研究與應(yīng)用.電視技術(shù),2010.
[4]孫即祥.圖像分析.西安:西安電子科技大學(xué),2007.1230.
[5]OpenCV學(xué)習(xí)記錄之視頻中的火焰檢測(cè)識(shí)別 coldplayplay的博客.
作者簡(jiǎn)介:吳蔓蔓,山東濟(jì)寧人,碩士,研究方向:無(wú)線通信。