本發(fā)明涉及一種人體目標檢測方法,尤其是一種紅外熱成像及可見光成像技術融合的人體目標檢測方法。
背景技術:
變電站的視頻技術為遠程監(jiān)控變電站的行人可視化提供了技術手段,為變電站調度運行提供了可視化監(jiān)控及輔助決策依據。隨著視頻監(jiān)控的網絡化、高清化、智能化技術的不斷發(fā)展,視頻監(jiān)控技術在電網安全、生產運行中的應用不斷深入和廣泛,傳統(tǒng)方式所采用的視頻監(jiān)控技術為電網設備遠程監(jiān)控提供遠程可視化的監(jiān)控手段,為遠程確認變電站中是否有行人、工作人員以及工作人員的狀態(tài),提供了可靠和有效的確認手段,為準確做出決策提供了依據,然而,隨著該技術的不斷深入和推廣應用,由于變電站數量眾多、若每個變電站中的工作人員作業(yè)查看和確認都需要人工進行,其所帶來的工作量將特別龐大,且工作效率低下,隨著電網技術對電網智能化水平要求的不斷提高,如何提高視頻監(jiān)控技術在電網智能化監(jiān)控技術中的應用,將對電網智能化水平的提升起到促進作用。同時,將為電網設備的智能化監(jiān)控、智能化巡視提供技術手段。同時,變電站中是否有工作人員以及工作狀態(tài)和是否佩帶安全帽等的圖像識別對于電網智能化設備狀態(tài)巡視、設備告警聯動等電網生產運行監(jiān)控具有重要意義,對電網智能化水平的發(fā)展和提高具有一定的促進作用。由于變電站設備場景的復雜性,如果有效實現對變電站隔離開關狀態(tài)的識別將是該技術的核心研究內容。如何有效實現對變電站中行人的檢測是該技術的核心研究內容。
現有的變電站中行人檢測方法存一些缺點,若采用常用的模板匹配方法檢測時,容易受外界光線及拍攝圖像的攝像機轉動影像,同時,由于變電站內的類似行人形狀的設備數量龐大,設備外觀及形狀均不一致,且不同廠家的不同型號設備也存在一定的差異,很容易對行人檢測產生干擾,因此,采用模板匹配方法時,將會對監(jiān)控場景有嚴格的限制,且在廣泛適用性和可推廣性等方面存在著較多的缺陷。
技術實現要素:
本發(fā)明的目的在于克服現有技術中存在的不足,提供一種電力變電站采用紅外熱成像及可見光成像技術融合的人體目標特征檢測算法,通過可見光行人檢測與紅外熱成像行人檢測的結果比較提取人體目標,較好地排除外在影響因數,能夠最大限度地提高檢測的準確性和適用性。本發(fā)明采用的技術方案是:
一種電力變電站采用紅外熱成像及可見光成像技術融合的人體目標特征檢測算法,包括以下步驟:
步驟s1,獲取可見光攝像機拍攝的可見光圖像和紅外攝像機拍攝的紅外熱成像圖像;并分別作預處理;
步驟s2,對可見光圖像進行行人檢測,獲得可見光圖像行人檢測區(qū)域a;
步驟s3,對紅外熱成像圖像進行行人檢測,獲得紅外熱成像圖像行人檢測區(qū)域b;
步驟s4,將可見光圖像行人檢測區(qū)域a與紅外熱成像圖像行人檢測區(qū)域b進行比較,若重合面積超過一個設定重合面積閾值,則表示檢測到行人目標。
進一步地,所述步驟s2具體包括:
s2.1,行人目標樣本創(chuàng)建;
s2.2,訓練并得到行人檢測分類器;
s2.3,使用訓練好的行人檢測分類器對輸入的可見光圖像檢測行人,得到行人在可見光圖像中的區(qū)域。
更進一步地,步驟s2.1具體包括:
(a.)樣本分為正樣本和負樣本,正樣本為待檢測人體目標,負樣本為采集到的包含背景的圖像,但不包含人體目標特征;調用廠家攝像機sdk,循環(huán)抓取圖像,分別放到正樣本和負樣本對應的幾個列表中,進行
開狀態(tài)正樣本抓取;
開狀態(tài)負樣本抓取;
閉狀態(tài)正樣本抓?。?/p>
閉狀態(tài)負樣本抓??;
(b.)循環(huán)遍歷開狀態(tài)和閉狀態(tài)的正樣本列表,使用opencv提供的樣本描述生產函數opencv_createsample,封裝在createsample函數中,生成樣本描述集,樣本描述集包括:
開狀態(tài)正樣本描述集;
開狀態(tài)負樣本描述集;
閉狀態(tài)正樣本描述集;
閉狀態(tài)負樣本描述集。
更進一步地,步驟s2.2具體包括:
將步驟s2.1中生成的所有樣本描述集,分成開狀態(tài)和閉狀態(tài),進行訓練,生成樣本訓練結果,存儲在開狀態(tài)結果數據庫和閉狀態(tài)結果數據庫中,該兩個開狀態(tài)結果數據庫和閉狀態(tài)結果數據庫即作為兩個行人檢測分類器,將行人檢測分類器放到內存中,供行人檢測使用。
更進一步地,步驟s2.2中,訓練方法使用opencv中的traincascade訓練器進行訓練,并封裝在train函數中。
更進一步地,步驟s2.3具體包括:
使用訓練好的行人檢測分類器,調用opencv提供的分類監(jiān)測函數detectmultiscale進行監(jiān)測,對輸入的可見光圖像檢測行人,檢測結果存儲在object[]對象中,該對象中保存檢測到的每個行人在可見光圖像中的區(qū)域。
進一步地,所述步驟s3包括:
s3.1,對紅外熱成像圖像進行溫度標注,得到標注后的圖像;
s3.2,根據溫度標注區(qū)域,計算相鄰區(qū)域的溫度值的差是否大于某個閾值,如果不大于,則表示該相鄰區(qū)域屬于同一個目標,連通該相鄰區(qū)域,循環(huán)檢測,直到把能夠連通的區(qū)域都連通為止,得到根據溫度標注分割后的區(qū)域;
s3.3,根據最大類間方差法,對紅外熱成像圖像進行分割;
s3.4,將最大類間方差法分割后的區(qū)域與根據溫度標注分割后的區(qū)域相比較,重合的則保留,沒有重合的去除;得到紅外熱成像圖像行人檢測區(qū)域b。
進一步地,步驟s1中,對可見光圖像的預處理包括:可見光圖像進行轉換灰度圖像的處理;然后剪裁圖像邊緣;
對紅外熱成像圖像的預處理包括剪裁圖像邊緣。
本發(fā)明的優(yōu)點在于:本發(fā)明通過新的算法,提高和解決通過視頻分析算法實現對變電站行人目標的識別。該算法易于實現和應用,主要可以應用于電網智能化設備狀態(tài)巡視、設備告警聯動等電網生產運行智能化遠程監(jiān)控中,對電網智能化水平的發(fā)展和提高具有一定的促進作用。
附圖說明
圖1為本發(fā)明的算法流程示意圖。
具體實施方式
下面結合具體附圖和實施例對本發(fā)明作進一步說明。
圖1所示為電力變電站采用紅外熱成像及可見光成像技術融合的人體目標特征檢測算法的主要流程,該算法包括可見光圖像和紅外熱成像圖像的獲取及預處理、對可見光圖像進行行人檢測獲得可見光圖像行人檢測區(qū)域a、對紅外熱成像圖像進行行人檢測獲得紅外熱成像圖像行人檢測區(qū)域b、以及可見光圖像檢測結果與紅外熱成像圖像檢測結果比較四個過程;在可見光圖像檢測結果與紅外熱成像圖像檢測結果比較這個過程中,將可見光圖像行人檢測區(qū)域a與紅外熱成像圖像行人檢測區(qū)域b進行比較,若重合面積超過一個設定重合面積閾值80%,則表示檢測到行人目標;
本發(fā)明采用c/c++語言編程實現本方法;操作系統(tǒng)可基于windows或linux的各類操作系統(tǒng)。
s1,首先,是利用可見光攝像機和紅外攝像機分別獲取可見光圖像和紅外熱成像圖像,并分別作預處理;
以可見光攝像機為例,
(1)通過廠家sdk(軟件開發(fā)工具包)實時獲取變電站可見光攝像機的實時視頻數據;
(2)在獲取到實時視頻數據時間間隔5秒后,從實時視頻數據中獲取一幀圖像數據,采用5秒后再截取圖像數據的原因主要為:由于變電站與遠端之間的網絡帶寬有限,若獲取到視頻后直接截圖圖像,可能會出現圖像截取失敗或截取的圖像存在異常等原因;
(3)在截取完圖像后,檢查圖像是否正常,如果圖像存在異常,則重新獲取圖像,獲取圖像成功后,保存圖像數據為orgimg;
(4)通常此時獲取的圖像格式為yuv格式,為了便于后續(xù)的圖像分析,將該圖像進行格式轉換,轉換為rgb圖像格式,轉換后的圖像數據為orgimg_rgb[];
(5)后續(xù)圖像處理主要是根據灰度圖像的處理,因此,需要將rgb格式轉換為灰度格式,根據rgb轉灰度公式:gray=r*0.299+g*0.587+b*0.114,從而將orgimg_rgb[]計算得到對應的灰度圖像數據:org_mat_gray[];
(6)由于實際圖像中左上角或右上角、左下角或右下角通常均包含一些文字信息,避免文字信息對監(jiān)測的影響,假設圖像橫坐標為0<x<w1,圖像縱坐標為0<y<h1,其中的h1表示圖像的高度,w1表示圖像的寬度,將圖像橫坐標截取為w1/8<x<7*w1/8,將圖像縱坐標截取為h1/8<y<7*h1/8,得到灰度圖像矩陣mat_gray[],新的灰度圖像的寬度為w2,高度為h2;
紅外熱成像圖像的獲取和預處理大致同可見光圖像,只是沒有圖像灰度化步驟;
s2,其次,對可見光圖像進行行人檢測,獲得可見光圖像行人檢測區(qū)域a;
該步驟s2主要包括:s2.1,行人目標樣本創(chuàng)建;s2.2,訓練并得到行人檢測分類器;s2.3,使用訓練好的行人檢測分類器對輸入的可見光圖像檢測行人,得到行人在可見光圖像中的區(qū)域。
s2.1,行人目標樣本創(chuàng)建;
(a.)樣本分為正樣本和負樣本,正樣本為待檢測目標,負樣本為其他圖像,選擇采集到的包含背景的圖像,但不包含人體目標特征;調用廠家攝像機sdk,循環(huán)抓取圖像,分別放到正樣本和負樣本對應的幾個列表(listopenpossample、listopennegsample、listclosepossample、listclosenegsample)中,capturevideo為廠家攝像機sdk提供的設備對象定義,getpictureopenpossample()、getpictureopennegsample()、getpictureclosepossample()、getpictureclosenegsample()四個函數分別是采用廠家攝像機sdk進行封裝的獲取圖像的函數,編程語言選用c++,編譯環(huán)境為windows,并使用廠家提供的攝像機sdk以及opencv開源函數庫,開狀態(tài)為正面樣本集,閉狀態(tài)為非正面樣本集。
開狀態(tài)正樣本抓?。簅penpossamplelist<openpossample>listopenpossample=capturevideo.getpictureopenpossample();
開狀態(tài)負樣本抓?。簅pennegsamplelist<opennegsample>listopennegsample=capturevideo.getpictureopennegsample();
閉狀態(tài)正樣本抓取:closepossamplelist<closepossample>listclosepossample=capturevideo.getpictureclosepossample();
閉狀態(tài)負樣本抓?。篶losenegsamplelist<closenegsample>listclosenegsample=capturevideo.getpictureclosenegsample();
(b.)循環(huán)遍歷開狀態(tài)和閉狀態(tài)的正樣本列表,使用opencv提供的樣本描述生產函數opencv_createsample,封裝在createsample函數中,生成樣本描述集,樣本描述集分別存儲在openpossampledesc、opennegsampledesc、closepossampledesc、closenegsampledesc中;
開狀態(tài)正樣本描述集:openpossampledescopenpossampledesc=createsample(listopenpossample);
開狀態(tài)負樣本描述集:opennegsampledescopennegsampledesc=createsample(listopennegsample);
閉狀態(tài)正樣本描述集:closepossampledescclosepossampledesc=createsample(listclosepossample);
閉狀態(tài)負樣本描述集:closenegsampledescclosenegsampledesc=createsample(listclosenegsample);
s2.2,訓練并得到行人檢測分類器;
將s2.1中生成的所有樣本描述集,分成開狀態(tài)和閉狀態(tài),進行訓練,生成樣本訓練結果,存儲在數據庫openresultdata、closeresultdata中,訓練方法使用opencv中的traincascade訓練器進行訓練,并封裝在train函數中;
開狀態(tài)結果數據庫:openresultdataopenresultdata=train(openpossampledesc,opennegsampledesc);
閉狀態(tài)結果數據庫:closeresultdatacloseresultdata=train(closepossampledesc,closenegsampledesc);
訓練結束后,會生成openresultdata和closeresultdata兩個行人檢測分類器,將行人檢測分類器放到內存中,供行人檢測使用。
s2.3,使用訓練好的行人檢測分類器對輸入的可見光圖像檢測行人,得到行人在可見光圖像中的區(qū)域;
使用訓練好的行人檢測分類器,調用opencv提供的分類監(jiān)測函數detectmultiscale進行監(jiān)測,對輸入的可見光圖像檢測行人,檢測結果存儲在object[]對象中,該對象中保存檢測到的每個行人在可見光圖像中的區(qū)域,也就是獲得可見光圖像行人檢測區(qū)域a;
object[]=detectmultiscale(param1,param2,param3);函數中的param1為輸入的被檢測的圖像,param2表示圖像的尺寸減小的比例,使用1.1作為默認值,param3表示每個目標被確定為監(jiān)測對象至少要被監(jiān)測到的次數,默認值為2,表示監(jiān)測到3次才確定為正確的目標。
s3,接著,對紅外熱成像圖像進行行人檢測,獲得紅外熱成像圖像行人檢測區(qū)域b;
該步驟s3主要包括:
s3.1,對紅外熱成像圖像進行溫度標注,得到標注后的圖像;
s3.2,根據溫度標注區(qū)域,計算相鄰區(qū)域的溫度值的差是否大于某個閾值,如果不大于,則表示該相鄰區(qū)域屬于同一個目標,連通該相鄰區(qū)域,循環(huán)檢測,直到把能夠連通的區(qū)域都連通為止,得到根據溫度標注分割后的區(qū)域;
s3.3,根據開源opencv庫提供的最大類間方差法(ostu),對紅外熱成像圖像進行分割;
s3.4,將最大類間方差法分割后的區(qū)域與根據溫度標注分割后的區(qū)域相比較,重合的說明可能是檢測目標則保留,沒有重合的去除;得到紅外熱成像圖像行人檢測區(qū)域b。
最后,s4,將可見光圖像行人檢測區(qū)域a與紅外熱成像圖像行人檢測區(qū)域b進行比較,若重合面積超過80%,則表示檢測到行人目標;否則沒有檢測到。