薛宇城,戴未然,盧捍華,張瀟磊
(1.南京郵電大學(xué)通信與信息工程學(xué)院,江蘇 南京 210003;2.南京航空航天大學(xué)自動(dòng)化學(xué)院,江蘇 南京 210016;3.南京郵電大學(xué)物聯(lián)網(wǎng)學(xué)院,江蘇 南京210003;4.南郵-福富實(shí)驗(yàn)室,江蘇 南京 210003)
基于網(wǎng)絡(luò)攝像的監(jiān)控系統(tǒng)在社會(huì)中已經(jīng)得到廣泛的應(yīng)用[1],并具有可尋址可操作的優(yōu)異特性。[2-3]然而,目前大部分監(jiān)控系統(tǒng)只能進(jìn)行視頻錄制,功能較為單一。[4-7]為了更有效地利用這些攝像頭,相關(guān)部門越來(lái)越需要對(duì)相關(guān)人員進(jìn)行識(shí)別、搜索與跟蹤,[8-9]于是如何將人臉檢測(cè)和跟蹤技術(shù)與網(wǎng)絡(luò)攝像相結(jié)合,實(shí)現(xiàn)對(duì)公共場(chǎng)合的人臉智能識(shí)別和搜索,成為當(dāng)今學(xué)術(shù)界研究的重點(diǎn)。本文提出了一種利用EmguCV庫(kù)中的Detect函數(shù)對(duì)檢測(cè)到的人臉圖像與圖像數(shù)據(jù)庫(kù)中已存儲(chǔ)圖像進(jìn)行比較,實(shí)現(xiàn)對(duì)圖像數(shù)據(jù)庫(kù)中已存人臉圖像的識(shí)別和自動(dòng)搜索系統(tǒng),較好地解決了在裝有網(wǎng)絡(luò)攝像頭的公共場(chǎng)合對(duì)有關(guān)人員進(jìn)行搜尋的問(wèn)題。[10-11]
OpenCV與EmguCV是當(dāng)前使用最廣泛的兩類函數(shù)庫(kù),在C#環(huán)境下利用EmguCV函數(shù)庫(kù)進(jìn)行人臉識(shí)別檢測(cè),同時(shí),人臉信息搜索需要數(shù)據(jù)庫(kù)信息的支持,因此,需要先建立人臉圖像數(shù)據(jù)庫(kù)。
首先開(kāi)啟網(wǎng)絡(luò)攝像頭抓取實(shí)時(shí)圖像,利用EmguCV圖像處理庫(kù)進(jìn)行人臉識(shí)別。若處于學(xué)習(xí)狀態(tài)下,將檢測(cè)到的人臉信息與姓名信息存入數(shù)據(jù)庫(kù)中。若處于搜索狀態(tài)下,并檢測(cè)到人臉存在,將檢測(cè)到的人臉圖像與之前保存在數(shù)據(jù)庫(kù)中的人臉圖像進(jìn)行比對(duì),如比對(duì)成功,將搜索到的人物名字顯示在面板中,搜索成功。系統(tǒng)工作流程框圖如圖1所示。
圖1 智能搜索系統(tǒng)工作原理框圖
網(wǎng)絡(luò)攝像頭的工具開(kāi)發(fā)包中有ipcamax控件,該控件封裝了網(wǎng)絡(luò)攝像頭的基本方法,為了能夠在VS C#中調(diào)用網(wǎng)絡(luò)攝像頭,可通過(guò)以下步驟來(lái)實(shí)現(xiàn):
1)VS自帶的軟件工具depends.exe找到注冊(cè)控件缺少的dll文件ddisp.dll和ijl15.dll,并將其與ipcamax.ocx文件拷入同一路徑下。
2)在cmd窗口使用cd命令進(jìn)入該路徑,并使用 regsvr32 ipcamax.ocx 進(jìn)行注冊(cè)。[2]
3)在VS C#的工具箱空白處右擊,執(zhí)行“選擇項(xiàng)—選擇工具箱項(xiàng)—com組件選項(xiàng)卡”,選擇axremote control控件加入工具箱,工具箱中就會(huì)出現(xiàn)該網(wǎng)絡(luò)攝像頭的控件。
經(jīng)過(guò)以上操作,就可以在窗體上添加控件。在對(duì)控件設(shè)定好參數(shù)后,便可以在程序中獲取網(wǎng)絡(luò)攝像頭的實(shí)時(shí)圖像。網(wǎng)絡(luò)攝像頭的成功調(diào)用擴(kuò)大了監(jiān)控區(qū)域,同時(shí)利用攝像頭自帶的接口函數(shù)完成如抓取圖片、錄像等重要的實(shí)用功能。
為了進(jìn)行智能化的搜索,必須先建立系統(tǒng)的人臉圖像數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)應(yīng)能進(jìn)行增加及刪除。數(shù)據(jù)庫(kù)信息具體如下:
在oracle數(shù)據(jù)庫(kù)中新建一張3列的表,第一列存放全球唯一標(biāo)識(shí)符guid,第二列、第三列分別采用string類型和blob類型存放姓名信息和人臉圖片。程序中建立相應(yīng)的oracle數(shù)據(jù)庫(kù)的類DataBase,類中寫入連接數(shù)據(jù)庫(kù)的findAddressInfos函數(shù)、增加數(shù)據(jù)庫(kù)人臉信息的updateAddress函數(shù)與刪除數(shù)據(jù)庫(kù)人臉信息的deleteAddress函數(shù)。
檢測(cè)到人臉信息后,需將其保存到數(shù)據(jù)庫(kù)中。首先將暫存在變量中的人臉圖像轉(zhuǎn)化成數(shù)組,然后調(diào)用DataBase類中updateaddress函數(shù)可存入oracle數(shù)據(jù)庫(kù)中,函數(shù)采用sql語(yǔ)句的insert方法實(shí)現(xiàn),同時(shí)將用戶輸入的人名信息存入數(shù)據(jù)庫(kù)表的第二列,并生成全球唯一標(biāo)識(shí)符guid存入該行第一列。若需要?jiǎng)h除指定的圖片信息時(shí),從數(shù)據(jù)庫(kù)中讀出已存儲(chǔ)的人臉信息,將圖片顯示在listview控件中,鼠標(biāo)選取需要?jiǎng)h除的圖片,通過(guò)listview的selecteditems方法,獲取選中的圖片對(duì)應(yīng)的guid值,再調(diào)用deleteAddress函數(shù)對(duì)數(shù)據(jù)庫(kù)中該guid值對(duì)應(yīng)的信息行進(jìn)行刪除,這樣,數(shù)據(jù)庫(kù)可以不斷地完善與更新,人臉信息的搜索工作可以開(kāi)始。
2.3.1 數(shù)據(jù)庫(kù)信息讀取
調(diào)用DataBase類中的數(shù)據(jù)庫(kù)findAddressInfos連接函數(shù),由于之前保存在數(shù)據(jù)庫(kù)中的圖片為blob格式,轉(zhuǎn)換為Image類型后將所有人物臉部信息與人物姓名分別保存到鏈表List<Image<Gray,byte>>learnedFaces和List<string>learnedPeople中,完成人臉?biāo)阉鞯男畔⒊跏蓟ぷ鳌?/p>
2.3.2 人臉識(shí)別檢測(cè)
本檢測(cè)采用的人臉識(shí)別算法為特征臉?lè)椒ǎ瑥慕y(tǒng)計(jì)的觀點(diǎn),尋找人臉圖像分布的基本元素,即人臉圖像樣本集協(xié)方差矩陣的特征向量,以此近似地表征人臉圖像。這些特征向量稱為特征臉(Eigenface)。首先獲取網(wǎng)絡(luò)攝像頭的圖像數(shù)據(jù),并用控件的capture方法將網(wǎng)絡(luò)攝像頭的圖像截取下來(lái)。人臉檢測(cè)程序主要完成加載分類器、加載待檢測(cè)圖像及檢測(cè)與表示等功能,EmguCV中提供的用于檢測(cè)圖像的函數(shù)是Detect方法,該函數(shù)對(duì)某目標(biāo)物體(本系統(tǒng)中是人臉)訓(xùn)練的級(jí)聯(lián)分類器在圖像中找到包含目標(biāo)物體的矩形區(qū)域,并將這些區(qū)域作為序列矩形框返回。
2.3.3 人臉比對(duì)檢測(cè)
在進(jìn)行搜索任務(wù)時(shí),若攝像頭檢測(cè)到有人臉出現(xiàn),則將該人臉信息保存到MCvAvgComp類型的變量face[i]中,并與存儲(chǔ)在數(shù)據(jù)庫(kù)中的人臉信息通過(guò)EmguCV自帶函數(shù)recognize進(jìn)行比較,recognize函數(shù)主要算法是比較當(dāng)前的臉部信息與List<Image<Gray,byte> > learnedFaces鏈表中的所有人臉圖像的歐氏距離,若歐氏距離在閾值內(nèi),讀取歐氏距離差值最小的那張圖片的人臉信息,顯示在右邊方框中,若不存在,則表明數(shù)據(jù)庫(kù)中沒(méi)有該人信息。
本系統(tǒng)程序在Visual Studio 2010下編譯連接,并在實(shí)際環(huán)境中進(jìn)行了測(cè)試。檢測(cè)人臉采用EmguCV自帶的正面人臉?lè)诸惼鱤aarcascade_frontalface_alt_tree.xml,經(jīng)過(guò)實(shí)驗(yàn),能夠較好地識(shí)別到人臉的正面與側(cè)面,如圖2、圖3所示。
圖2 正臉識(shí)別
圖3 側(cè)臉識(shí)別
在建立數(shù)據(jù)庫(kù)之前,需要在攝像頭范圍內(nèi)檢測(cè)到人的臉部信息,之后將檢測(cè)到的信息存入oracle數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)信息如圖4所示,其中ID為guid且各不相同,IDCARD保存人名,NUM采用blob格式存儲(chǔ)圖片。但一定情況下會(huì)存在人臉的漏檢和非人臉的誤檢,可見(jiàn)對(duì)于人臉在平面內(nèi)有一定旋轉(zhuǎn)的情況還存在不足,但隨著強(qiáng)分類器個(gè)數(shù)的增加,這種情況可以得到很大的改善。
圖4 人臉信息數(shù)據(jù)庫(kù)
為了更好地完善數(shù)據(jù)庫(kù)信息,應(yīng)根據(jù)需求刪除數(shù)據(jù)庫(kù)中指定的人臉信息,本程序能夠彈出數(shù)據(jù)庫(kù)信息窗口,該窗口提供可視化操作,從數(shù)據(jù)庫(kù)中讀出所有已經(jīng)存儲(chǔ)的人臉信息,并將圖片和姓名信息顯示在面板上,根據(jù)需求用鼠標(biāo)選中,點(diǎn)刪除即可從數(shù)據(jù)庫(kù)中刪除。彈出已存儲(chǔ)的人臉信息如圖5所示,選中第一排部分照片刪除后信息如圖6所示。
圖5 人臉數(shù)據(jù)庫(kù)信息刪除操作前的信息
圖6 人臉數(shù)據(jù)庫(kù)信息刪除操作后的信息
當(dāng)數(shù)據(jù)庫(kù)的信息完善之后完成后,打開(kāi)人臉檢測(cè)系統(tǒng),發(fā)現(xiàn)能夠識(shí)別到之前已存儲(chǔ)的人物,并且能夠?qū)⒚衷谟覀?cè)顯示出來(lái),如圖7所示。測(cè)試表明,利用EmguCV開(kāi)發(fā)的智能搜索系統(tǒng),不但實(shí)現(xiàn)了人臉的自動(dòng)搜索和人臉圖像的識(shí)別與比對(duì),而且系統(tǒng)效率高、識(shí)別效果好。
圖7 正確搜索到已經(jīng)存儲(chǔ)信息的人物
系統(tǒng)基于EmguCV圖像庫(kù)的強(qiáng)大功能,結(jié)合現(xiàn)有的、分布廣泛的網(wǎng)絡(luò)攝像頭,實(shí)現(xiàn)了已知人臉圖像的服務(wù)器數(shù)據(jù)庫(kù)存儲(chǔ)與調(diào)用,以及人臉圖片的智能化比對(duì)搜索功能,數(shù)據(jù)庫(kù)信息的存儲(chǔ)方便了信息的實(shí)時(shí)調(diào)用,較大程度地改進(jìn)了現(xiàn)有單一的人臉識(shí)別系統(tǒng)。該系統(tǒng)功能強(qiáng)大,可靠性高,具有較強(qiáng)的圖像處理能力及廣泛的應(yīng)用前景。
[1]嚴(yán)嚴(yán),章毓晉.基于視頻的人臉識(shí)別研究進(jìn)展[J].計(jì)算機(jī)學(xué)報(bào),2009(5):30-40.
[2]王燕,曹銀杰.基于EmguCV的數(shù)字相機(jī)圖像采集[J].電子科技,2012(4):31-32.
[3]信師國(guó),劉慶磊,劉全賓.網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)現(xiàn)狀和發(fā)展趨勢(shì)[J].信息技術(shù)與信息化,2010(1):23-25.
[4]常丹華,楊冬冬,韓夏.OpenCV在智能監(jiān)控方面的應(yīng)用研究[J].電視技術(shù),2009(9):101-103.
[5]孫統(tǒng)義,李林.基于OpenCV的紅外運(yùn)動(dòng)目標(biāo)檢測(cè)方法及實(shí)現(xiàn)[J].信息化研究,2010(11):12-16.
[6]陳堯,袁繼敏,程江珂.基于OpenCV的監(jiān)控系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)安全技術(shù),2010(6):117-118.
[7]潘晶晶.網(wǎng)絡(luò)視頻實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2010.
[8]吳巾一,周德龍.人臉識(shí)別方法綜述[J].計(jì)算機(jī)應(yīng)用研究,2009(9):3205-3209.
[9]肖冰,王映輝.人臉識(shí)別研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2005(8):1-5.
[10]賈川.淺談人臉識(shí)別技術(shù)在智能視頻監(jiān)控中的應(yīng)用與發(fā)展趨勢(shì)[J].中國(guó)安防,2010(3):83-86.
[11]侯鯤,隆嘉,王赫寧.人臉識(shí)別技術(shù)的現(xiàn)狀和發(fā)展趨勢(shì)[J].科協(xié)論壇,2010(11):43-44.