杜成波
摘要:水電站現(xiàn)場(chǎng)存在邊坡滾石、高處墜物、水位突變等諸多安全風(fēng)險(xiǎn),采用有效手段對(duì)現(xiàn)場(chǎng)人員未佩戴安全帽和水位超限進(jìn)行自動(dòng)識(shí)別報(bào)警具有重要意義。利用現(xiàn)場(chǎng)視頻監(jiān)控獲取實(shí)時(shí)圖像,借助圖像識(shí)別技術(shù),提出了基于改進(jìn)運(yùn)動(dòng)目標(biāo)識(shí)別方法的安全帽檢測(cè)和水庫水位自動(dòng)監(jiān)控方法,并基于OpenCV平臺(tái)開發(fā)了相關(guān)監(jiān)控程序,對(duì)進(jìn)入視頻監(jiān)控區(qū)域的現(xiàn)場(chǎng)工作人員以及水庫水位進(jìn)行實(shí)時(shí)檢測(cè),實(shí)現(xiàn)了自動(dòng)實(shí)時(shí)監(jiān)控和報(bào)警,提升了水電站現(xiàn)場(chǎng)安全管理水平。
關(guān)鍵詞:安全管理; 安全帽佩戴; 水位監(jiān)控; 圖像識(shí)別; 視頻監(jiān)控; 水電站
中圖法分類號(hào): TV512;TP315
文獻(xiàn)標(biāo)志碼: A
DOI:10.16232/j.cnki.1001-4179.2024.S1.047
0引 言
水電站現(xiàn)場(chǎng)環(huán)境復(fù)雜,存在諸多安全風(fēng)險(xiǎn),如邊坡滾石、高處墜物、水位突變等,采用有效手段對(duì)現(xiàn)場(chǎng)人員未佩戴安全帽或水位超限進(jìn)行自動(dòng)識(shí)別報(bào)警和提醒具有重要意義。水電站場(chǎng)地范圍較大,目前現(xiàn)場(chǎng)一般都會(huì)布設(shè)視頻監(jiān)控系統(tǒng)對(duì)一些重要區(qū)域進(jìn)行重點(diǎn)監(jiān)控,通常情況下會(huì)安排專職人員在監(jiān)控室中集中監(jiān)視視頻監(jiān)控系統(tǒng)傳輸來的圖像畫面,并就發(fā)現(xiàn)的問題及時(shí)通知相關(guān)人員?;谝曨l圖像識(shí)別技術(shù)的現(xiàn)場(chǎng)安全監(jiān)控可以憑借自動(dòng)化程序識(shí)別代替人工監(jiān)視判斷,從而減輕人工監(jiān)視的工作量。圖像識(shí)別技術(shù)屬于人工智能的一個(gè)重要領(lǐng)域,以圖像主要特征(幾何形狀、顏色、面積、周長、體積等)的識(shí)別為基礎(chǔ),目前已經(jīng)廣泛應(yīng)用于智能交通、裂縫識(shí)別、指紋識(shí)別、人臉識(shí)別、運(yùn)動(dòng)目標(biāo)識(shí)別、醫(yī)學(xué)研究等領(lǐng)域[1-2]。
本文針對(duì)水電站現(xiàn)場(chǎng)人員安全帽佩戴和水位監(jiān)控等安全管理,基于現(xiàn)場(chǎng)視頻監(jiān)控獲取的實(shí)時(shí)圖像,采用圖像識(shí)別技術(shù),提出了改進(jìn)的運(yùn)動(dòng)目標(biāo)識(shí)別方法,利用OpenCV平臺(tái)開發(fā)了現(xiàn)場(chǎng)人員安全帽佩戴監(jiān)控程序和水庫水位監(jiān)控程序,實(shí)現(xiàn)自動(dòng)實(shí)時(shí)監(jiān)控和報(bào)警。
1現(xiàn)場(chǎng)人員安全帽佩戴監(jiān)控
本文提出的現(xiàn)場(chǎng)人員安全帽佩戴檢測(cè)流程包括基于圖像識(shí)別的運(yùn)動(dòng)目標(biāo)(人員)檢測(cè)、人員頭部檢測(cè)、人員佩戴安全帽識(shí)別等,并且針對(duì)現(xiàn)有圖像識(shí)別算法缺點(diǎn)進(jìn)行了改進(jìn),以滿足現(xiàn)場(chǎng)視頻實(shí)時(shí)監(jiān)控的要求。
1.1基于ViBe算法的運(yùn)動(dòng)目標(biāo)檢測(cè)
基于圖像識(shí)別的運(yùn)動(dòng)目標(biāo)檢測(cè)方法包括幀差法[3]、背景減除法(如混合高斯、平均背景、均值漂移、ViBe等)、光流法[4]、運(yùn)動(dòng)模板法[5]等。
其中,ViBe法與其他算法相比具有計(jì)算內(nèi)存占用量低、性能較優(yōu)等特點(diǎn),因此本文采用ViBe算法來實(shí)現(xiàn)視頻圖像中運(yùn)動(dòng)目標(biāo)(即移動(dòng)的現(xiàn)場(chǎng)人員)的實(shí)時(shí)檢測(cè)。
ViBe算法的工作原理是:通過建立一定的規(guī)則將圖像中各個(gè)像素點(diǎn)識(shí)別并歸類為背景點(diǎn)或是前景點(diǎn)。ViBe算法中,將背景模型定義為圖像中每個(gè)像素點(diǎn)對(duì)應(yīng)的像素值樣本集,在此基礎(chǔ)上將任意一幀圖像中每一個(gè)像素點(diǎn)新的像素值與其對(duì)應(yīng)的像素值樣本集進(jìn)行比較,來判斷該像素點(diǎn)是否屬于背景點(diǎn),如果一個(gè)像素點(diǎn)新的像素值和樣本集中的采樣值比較接近,則它就應(yīng)該屬于背景點(diǎn),反之則屬于前景點(diǎn)。
ViBe算法的計(jì)算流程如下:
(1) 背景模型的初始化。該步驟僅通過第一幀圖像完成,考慮到單幀圖像中不可能包含像素點(diǎn)的時(shí)空分布信息,因此可以隨機(jī)選擇像素點(diǎn)相鄰點(diǎn)位的像素值作為背景模型樣本值。
(2) 背景模型的更新。背景模型能夠隨著圖像背景的不斷變化而相應(yīng)動(dòng)態(tài)更新,比如光照的變化、背景物體的變更等。更新策略一般分為2種:① 保守的更新策略,即始終不用前景點(diǎn)來更新背景模型,這種策略會(huì)引起死鎖,比如當(dāng)初始化時(shí)如果一塊靜止的區(qū)域被錯(cuò)誤地檢測(cè)為前景,那么它始終會(huì)被當(dāng)做前景,這樣就會(huì)產(chǎn)生Ghost區(qū)域;② 盲目地更新策略,前景點(diǎn)和背景點(diǎn)都可以來更新背景模型,此種策略的缺點(diǎn)是緩慢移動(dòng)的物體會(huì)融入背景中無法被檢測(cè)出來。ViBe算法采用的是保守更新策略+前景點(diǎn)計(jì)數(shù)法。前景點(diǎn)計(jì)數(shù)法的規(guī)則是:對(duì)像素點(diǎn)連續(xù)被檢測(cè)為前景點(diǎn)的次數(shù)進(jìn)行統(tǒng)計(jì),如果某個(gè)像素點(diǎn)連續(xù)N次被檢測(cè)為前景點(diǎn),則將其更新為背景點(diǎn)。
背景模型的更新采用隨機(jī)的二次采樣策略,即當(dāng)一個(gè)像素點(diǎn)被判斷為背景點(diǎn)時(shí),僅采用一定的概率去更新背景模型,具體來說,當(dāng)某個(gè)像素點(diǎn)被判斷為背景點(diǎn)時(shí),采用1/P的概率去更新自己的像素值樣本值,并采用1/P的概率去更新其相鄰點(diǎn)位的像素值樣本值。更新相鄰點(diǎn)位的樣本值利用了像素值的空間傳播特性,有利于Ghost區(qū)域更快地被識(shí)別和消除。同時(shí),當(dāng)前景點(diǎn)計(jì)數(shù)達(dá)到臨界值N時(shí),則將該像素點(diǎn)判斷為背景點(diǎn),并采用1/P的概率去更新自己的像素值樣本值,同時(shí)采用隨機(jī)方法隨機(jī)選取一個(gè)樣本值進(jìn)行更新。
OpenCV是一個(gè)開源的跨平臺(tái)計(jì)算機(jī)視覺分析方法庫,采用其提供的現(xiàn)有通用函數(shù)來實(shí)現(xiàn)特定需求的圖像識(shí)別程序開發(fā),能夠較大程度地減輕開發(fā)量。本文基于OpenCV平臺(tái),編寫了運(yùn)用ViBe算法的視頻圖像運(yùn)動(dòng)目標(biāo)檢測(cè)程序,程序偽代碼流程如下:
(1) 變量初始化。需要初始化的變量包括每個(gè)像素點(diǎn)的樣本個(gè)數(shù)變量pixSamples,存儲(chǔ)每個(gè)像素點(diǎn)對(duì)應(yīng)像素樣本值的三維數(shù)組samples,以及存儲(chǔ)每個(gè)像素點(diǎn)被連續(xù)檢測(cè)為前景點(diǎn)次數(shù)的數(shù)組count。判斷像素點(diǎn)為背景點(diǎn)的兩個(gè)重要閾值:像素差異difference和像素差異內(nèi)的匹配數(shù)matches。判斷像素點(diǎn)為前景點(diǎn)的閾值:連續(xù)判斷為前景點(diǎn)次數(shù)conCount,二次隨機(jī)采樣因子subSampFactor,背景像素值backGround和前景像素值foreGround。
(2) 背景模型初始化模塊。
即依次遍歷第一幀圖像中每個(gè)像素點(diǎn)的每個(gè)樣本,并對(duì)三維數(shù)組samples進(jìn)行賦值的過程。具體地,對(duì)于任意一個(gè)樣本,隨機(jī)選取以該像素點(diǎn)為中心,以2個(gè)像素距離為邊長的正方形范圍內(nèi)像素點(diǎn)位像素值進(jìn)行采樣,并存儲(chǔ)在三維數(shù)組samples中,同時(shí)將每個(gè)像素點(diǎn)被連續(xù)判斷為前景點(diǎn)的次數(shù)N賦值為0。
(3) 背景模型更新模塊。在此模塊中,依次遍歷當(dāng)前圖像幀上的每一個(gè)像素點(diǎn),針對(duì)任意一個(gè)像素點(diǎn),首先將其像素值依次與樣本值進(jìn)行比較,如果二者距離差異小于閾值difference的樣本個(gè)數(shù),且大于或等于matches時(shí),則判定該像素點(diǎn)為背景點(diǎn),否則為前景點(diǎn)。
如果被判斷為背景點(diǎn),首先將該像素點(diǎn)被連續(xù)判斷為背景點(diǎn)的次數(shù)N賦值為0,并將輸出圖像中該像素點(diǎn)位置處的像素值設(shè)置為backGround;然后啟動(dòng)二次采樣流程,依次采用二次隨機(jī)采樣因子subSampFactor隨機(jī)將該像素點(diǎn)的某一樣本值賦值為當(dāng)前幀圖像中該像素點(diǎn)的像素值,同時(shí)隨機(jī)將該像素點(diǎn)某一相鄰像素點(diǎn)的某一樣本值賦值為當(dāng)前幀圖像中該像素點(diǎn)的像素值。
如果被判斷為前景點(diǎn),首先將該像素點(diǎn)被連續(xù)判斷為前景點(diǎn)的次數(shù)N+1,并將輸出圖像中該像素點(diǎn)位置處的像素值設(shè)置為foreGround;然后判斷該像素點(diǎn)連續(xù)被判斷為前景點(diǎn)的次數(shù)是不是小于conCount,如果是,則采用二次隨機(jī)采樣因子subSampFactor隨機(jī)將該像素點(diǎn)的某一樣本值賦值為當(dāng)前幀圖像中該像素點(diǎn)的像素值。
1.2ViBe算法的改進(jìn)
現(xiàn)有ViBe算法存在兩方面可以重點(diǎn)討論改進(jìn)之處:
(1) 現(xiàn)有ViBe算法對(duì)Ghost區(qū)域(圖1)的消除效率不高,具體表現(xiàn)在Ghost區(qū)域識(shí)別及消除較為緩慢,且Ghost區(qū)域消除后的范圍內(nèi)有運(yùn)動(dòng)物體經(jīng)過時(shí)也會(huì)被誤判為背景,如圖2所示。
(2) 現(xiàn)有ViBe算法對(duì)原始視頻幀圖像進(jìn)行了單通道處理,這樣雖然能提高算法分析處理的效率,但是因?yàn)閱瓮ǖ缊D像色域范圍較為局限,有些前景像素由于與背景差別不大依舊易被誤判為背景,如圖3所示。
經(jīng)分析,現(xiàn)有ViBe算法對(duì)Ghost區(qū)域消除效率不高的原因是:當(dāng)像素點(diǎn)被連續(xù)檢測(cè)為前景的次數(shù)conCount滿足成為背景點(diǎn)的條件后,采用二次隨機(jī)采樣因子subSampFactor,隨機(jī)將該像素點(diǎn)的某一樣本值賦值為當(dāng)前幀圖像中該像素點(diǎn)像素值的概率較低,導(dǎo)致該像素點(diǎn)的背景模型更新效率較低。針對(duì)這一問題有兩種改進(jìn)方法:① 降低conCount,同時(shí)采用更大的隨機(jī)采樣因子增大采樣概率;② 采用該像素點(diǎn)當(dāng)前幀圖像中相鄰的像素值對(duì)該像素點(diǎn)的樣本值進(jìn)行全面更新,以擴(kuò)大采樣范圍。上述2種改進(jìn)方法同時(shí)使用時(shí)需要注意:① 對(duì)于圖像前幾幀被判斷為Ghost的區(qū)域(以下簡稱為初始化Ghost區(qū)域),宜采用該像素點(diǎn)當(dāng)前幀圖像中相鄰的像素值對(duì)該像素點(diǎn)的樣本值進(jìn)行全面更新,這樣可以提高初始化Ghost區(qū)域的消除效率;② 對(duì)于因?yàn)榻档蚦onCount同時(shí)增大隨機(jī)采樣概率而增大了背景模型的更新頻率,導(dǎo)致將短暫靜止的物體錯(cuò)誤地判斷成背景而形成的Ghost區(qū)域(以下簡稱為過程中Ghost區(qū)域),此種情況下則適合采用該像素點(diǎn)第一幀圖像中相鄰的像素值對(duì)該像素點(diǎn)的樣本值進(jìn)行全面更新。
對(duì)于如何判斷圖像檢測(cè)過程中出現(xiàn)的是初始化Ghost區(qū)域還是過程中Ghost區(qū)域,可在前若干幀圖像中對(duì)各像素點(diǎn)被判斷為前景點(diǎn)的次數(shù)進(jìn)行統(tǒng)計(jì)后判定,如果前景點(diǎn)次數(shù)遠(yuǎn)大于背景點(diǎn)次數(shù),則判斷其屬于初始化Ghost區(qū)域。
針對(duì)有些前景像素與背景差別不大而被誤判為背景的問題,可以將圖像處理為3通道圖像,根據(jù)RGB像素進(jìn)行判斷更加準(zhǔn)確。
其他改進(jìn)方面:① 縮小背景模型中像素點(diǎn)的樣本數(shù)量和采樣范圍,將采樣范圍縮小至像素點(diǎn)自身及上、下、左、右等5個(gè)像素點(diǎn)的位置;② 補(bǔ)充背景點(diǎn)的判定與更新條件,在經(jīng)過上述方法判定的背景點(diǎn)和前景點(diǎn)構(gòu)成的圖像中,依次判斷各像素點(diǎn),若某一像素點(diǎn)四周均為背景點(diǎn),則其也應(yīng)為背景點(diǎn)。
采用改進(jìn)后的ViBe方法對(duì)原視頻圖像進(jìn)行檢測(cè),結(jié)果如圖4~5所示。
1.3人員頭部檢測(cè)
通過ViBe算法獲取視頻圖像中運(yùn)動(dòng)人員目標(biāo)后,需要在此基礎(chǔ)上進(jìn)一步識(shí)別人員頭部區(qū)域。本文提出兩種人員頭部區(qū)域檢測(cè)的實(shí)現(xiàn)方法:圓形檢測(cè)法和包圍盒檢測(cè)法。
在圓形檢測(cè)法中,首先識(shí)別出運(yùn)動(dòng)人員目標(biāo)所在區(qū)域內(nèi)的圓形以及人形輪廓,根據(jù)輪廓的像素面積,剔除一些不是人形的輪廓。同時(shí)為了剔除一些識(shí)別出來但不屬于頭部區(qū)域的圓形,需設(shè)置兩個(gè)篩選條件:① 圓形的圓心需在某一人形輪廓之內(nèi);② 在滿足條件1的基礎(chǔ)上,同時(shí)需滿足圓心位于該輪廓頂部1/7輪廓高度范圍內(nèi)(人頭高度一般為人身體高度的1/7)。
在包圍盒檢測(cè)法中,首先識(shí)別出運(yùn)動(dòng)人員目標(biāo)的包圍盒以及人形輪廓,同樣可根據(jù)輪廓的像素面積剔除一些不是人形的輪廓。同時(shí)通過設(shè)置以下兩個(gè)篩選條件限定人員頭部區(qū)域的像素坐標(biāo)范圍:① 像素坐標(biāo)需在某一人形輪廓包圍盒頂部1/7高度范圍內(nèi);② 該像素坐標(biāo)需在同一人形輪廓內(nèi)。
1.4佩戴安全帽識(shí)別
水電站現(xiàn)場(chǎng)不同類別的工作人員佩戴不同顏色安全帽,如白色為業(yè)主管理人員,紅色為承包商人員,藍(lán)色為監(jiān)理人員,這3種顏色與頭發(fā)的顏色有明顯區(qū)別,因此可通過對(duì)圖像顏色特征的識(shí)別來判斷現(xiàn)場(chǎng)人員是否佩戴了安全帽。
在確定了人員頭部位置的圓形以后,在圓形上半圓中的像素點(diǎn)對(duì)原視頻圖像該位置處的HSV值進(jìn)行采樣,若滿足白、紅、藍(lán)任一顏色HSV范圍(表1)的像素點(diǎn)數(shù)目大于像素點(diǎn)總數(shù)的30%,則表示該人員頭部位置佩戴了該顏色的安全帽,否則提示報(bào)警。
本文基于OpenCV平臺(tái),編寫了基于ViBe算法的現(xiàn)場(chǎng)人員安全帽佩戴識(shí)別程序,整體程序的算法流程如圖6所示,識(shí)別效果如圖7~8所示。其中圖8所示的黃色圓圈表示該人員未佩戴安全帽,紅色圓圈表示該人員佩戴了紅色安全帽。
2現(xiàn)場(chǎng)水位監(jiān)控管理
為監(jiān)控水電站現(xiàn)場(chǎng)重要區(qū)域的水位情況,除在水中設(shè)置水位標(biāo)尺便于觀察讀數(shù)外,為實(shí)現(xiàn)遠(yuǎn)程監(jiān)控,現(xiàn)場(chǎng)通常會(huì)在該區(qū)域附近設(shè)置攝像頭。本文研究如何在現(xiàn)場(chǎng)設(shè)置視頻監(jiān)控和水位標(biāo)尺的基礎(chǔ)上,實(shí)現(xiàn)基于圖像識(shí)別技術(shù)的水位自動(dòng)讀數(shù),以替代人工讀數(shù)。
2.1水位刻度定位
水位刻度的定位,是在視頻監(jiān)控圖像中識(shí)別出水面以上未被淹沒的水位刻度。
為此需根據(jù)水位刻度的一些顏色或形狀特征將其從圖像中識(shí)別出來。以圖9為例,其中水位刻度具有紅色的顏色特征,以及“E”形的形狀特征。本文基于紅色像素提取方法,實(shí)現(xiàn)圖像中水位刻度的定位,具體實(shí)現(xiàn)方法如下。
(1) 首先將圖像像素由RGB格式轉(zhuǎn)化成HSV格式。
(2) 循環(huán)HSV格式圖像的每個(gè)像素點(diǎn),獲取各像素點(diǎn)對(duì)應(yīng)的H、S、V值,依據(jù)表1中紅色像素H、S、V值所在區(qū)間,將判斷出非紅色像素點(diǎn)的像素值統(tǒng)一賦值為H=0,S=0,V=0。處理后的圖像如圖10所示。
(3) 將上一步處理后的圖像轉(zhuǎn)換成GRAY格式。
(4) 采用局部自適應(yīng)閾值法[6]對(duì)圖像進(jìn)行二值化處理,將圖像中像素值大于自適應(yīng)閾值的像素點(diǎn)其像素值賦值為1,小于自適應(yīng)閾值的像素點(diǎn)其像素值賦值為0。
(5) 采用連通域識(shí)別方法[7]對(duì)二值化處理后的圖像中連通域進(jìn)行分析,并對(duì)各個(gè)連通域的包圍盒進(jìn)行識(shí)別(圖11)。
2.2水位分析計(jì)算
定位了圖像中的水位刻度之后,根據(jù)圖像中已知水位的刻度,以及圖像中露出水面以上刻度的形狀特征來檢測(cè)識(shí)別當(dāng)前水位。圖9攝像頭拍攝圖像范圍內(nèi),位置最高的刻度頂部所對(duì)應(yīng)的水位為1 879.00 m,記為Hmax。水面以上的刻度個(gè)數(shù)可通過識(shí)別出的連通域個(gè)數(shù)來確定,將水面以上的各個(gè)刻度按照刻度包圍盒左下角點(diǎn)的y坐標(biāo)從大到小進(jìn)行排序,則當(dāng)前水位的計(jì)算公式如下:
H≥Hmax-1,n≤1H=Hmax-(n-1)-排序序號(hào)為1的刻度包圍盒面積排序序號(hào)為2的刻度包圍盒面積,n>1式中:n為水面以上刻度連通域包圍盒個(gè)數(shù)。
根據(jù)上述公式計(jì)算,水位識(shí)別結(jié)果如圖12所示。
3結(jié) 語
本文運(yùn)用改進(jìn)的運(yùn)動(dòng)目標(biāo)識(shí)別方法對(duì)水電站現(xiàn)場(chǎng)視頻監(jiān)控系統(tǒng)獲取的視頻圖像進(jìn)行分析,開發(fā)了現(xiàn)場(chǎng)人員安全帽佩戴、水位變化等識(shí)別監(jiān)控程序,使得水電站現(xiàn)場(chǎng)管理工作更加安全、高效和智能。
同時(shí),未來值得進(jìn)一步加強(qiáng)無人機(jī)、移動(dòng)互聯(lián)、機(jī)器人等技術(shù)與圖像識(shí)別技術(shù)在水電站現(xiàn)場(chǎng)安全管理中的深化應(yīng)用,多重手段、全方位保障現(xiàn)場(chǎng)生產(chǎn)安全。
參考文獻(xiàn):
[1]陽恩慧,張傲南,丁世海,等.基于三維光影模型的公路路面裂縫自動(dòng)識(shí)別算法[J].西南交通大學(xué)學(xué)報(bào),2017,52(2):288-294.
[2]崔鵬,張雪婷.一種基于塊共同特征值的人臉識(shí)別方法[J].計(jì)算機(jī)工程與科學(xué),2017,39(4):777-784.
[3]鄧文浩,唐立才,張南鋒,等.基于改進(jìn)的幀差法和Mean-shift結(jié)合的運(yùn)動(dòng)目標(biāo)自動(dòng)檢測(cè)與跟蹤[J].現(xiàn)代電子技術(shù),2016,39(4):108-111.
[4]陳添丁,胡鑒,吳滌.稀疏光流快速計(jì)算的動(dòng)態(tài)目標(biāo)檢測(cè)與跟蹤[J].中國圖像圖形學(xué)報(bào),2013,18(12):1593-1600.
[5]黨曉軍,尹俊文.一種基于模板匹配的運(yùn)動(dòng)目標(biāo)跟蹤方法[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(5):173-176.
[6]張帆,彭中偉,蒙水金.基于自適應(yīng)閾值的改進(jìn)Canny邊緣檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用,2012,32(8):2296-2298.
[7]馬江林,趙忠明,孟瑜,等.海量遙感分類圖連通域標(biāo)記方法[J].計(jì)算機(jī)工程,2008,34(1):262-264.
(編輯:胡旭東)