999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于計算機視覺技術的人臉檢測系統設計

2011-03-26 07:32:40王斌郭攀張坤黃樂
電子設計工程 2011年16期
關鍵詞:檢測

王斌,郭攀,張坤,黃樂

(長安大學信息工程學院,陜西西安710064)

隨著計算機技術和數字信號處理技術的快速發展,計算機視覺技術逐漸應運而生,并得到了廣泛的應用。OpenCV[1](Open Source Computer Vision Library)是由Intel提供的由一系列C函數和少量C++類構成的計算機視覺開源軟件包,它擁有數百個可實現圖像處理和計算機視覺方面的中、高層API,可以十分方便地搭建基于計算機視覺技術的靜態圖像和視頻流處理軟件平臺,可作為二次開發的理想工具。由于基于Haar-like特征的AdaBoost人臉檢測算法具有檢測速度快、實時性強、魯棒性好等優點,本文采用基于Haar-like特征的AdaBoost人臉檢測算法和OpenCV相結合的方法在VC++6.0軟件開發平臺上分別對基于靜態圖像、攝像頭視頻和avi視頻的人臉檢測系統進行設計,實現了從靜態圖像中檢測出人臉并標記出人臉位置、從攝像頭視頻中實時檢測和標記出人臉的位置和從avi視頻中提取檢測出有人臉的幀并實時標記人臉,同時還實現了對標記后的人臉區域圖像進行實時顯示和存盤。

1 AdaBoost人臉檢測算法

人臉檢測的目的就是把靜態圖像或視頻幀中的人臉區域和非人臉區域區分開。Viola等人提出的人臉檢測方法是一種基于積分圖、級聯分類器和AdaBoost算法的方法,該方法可分為以下3個步驟實現[2]。

1)使用Haar-like特征表示人臉,并采用一種新的圖像表示方式—“積分圖”快速計算其特征值。

2)利用AdaBoost機器學習算法挑選出一些最能代表人臉的矩形特征(弱分類器)并按照加權投票的方式將弱分類器構造成一個強分類器。

3)將訓練得到的若干個強分類器串聯起來構造成一個級聯結構的分類器,從而提高分類器的檢測速度。

1.1 Haar-like特征

用一些簡單的矩形特征來表示人臉特征,因其類似于Viola等人提出的Haar-like小波而得名[3]。常用的Haar-like特征有邊緣特征、線性特征和中心特征,如圖1所示。

圖1 Haar-like特征Fig.1 Haar-like features

其中特征值是指圖像上兩個或者多個形狀大小相同的矩形內部所有像素灰度值之和的差值,在系統中統一采用白色矩形區域所有像素灰度值之和減去黑色矩形區域所有像素灰度值之和[3]。例如,圖1(b)的特征值是靠兩邊的矩形像素總和與中間矩形像素和的差值。也可根據實際情況擴展出多種新的Haar-like特征模板。

1.2 積分圖

為了提高樣本訓練和人臉檢測的速度,Viola等人提出了積分圖的表示方法,這種方法可使矩形特征值得到快速計算。積分圖的計算方法如公式(1)所示[4]:

其中I(x′,y′)為圖像在點(x′,y′)處的像素值,ii(x,y)是計算后的積分圖像。若采用遞推公式[4](2)和(3),積分圖只需遍歷一次原圖像所有點即可計算出來,其中s(x,y)為點(x,y)所在位置的列積分值,定義s(x,-1)=0,ii(-1,y)=0。

1.3 AdaBoost算法基本原理

AdaBoost算法[5]是一種迭代算法,主要用于特征選擇和訓練分類器,其核心思想是針對不同的訓練集訓練同一個分類器(弱分類器),然后把這些在不同訓練集上得到的弱分類器通過一定的方法集合起來,構成一個最終的強分類器。在該算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。最開始的時候,每個樣本的權重是相同的,在此樣本分布下訓練出一個弱分類器h1(x)。對于h1(x)分類錯誤的樣本則加大其對應的權重,而對于h1(x)分類正確的樣本則減小其對應的權重,從而把分類錯誤的樣本突出出來,進而組合成一個新的樣本分布。同時,根據分類錯誤的情況賦予h1(x)一個權重,表示該弱分類器的重要程度,分類錯誤的越少權重越大。在新的樣本分布下,對其進行再次訓練,得到弱分類器h2(x)及其權重。以此類推,經過T次循環訓練得到T個弱分類器和T個對應的權重,然后把這T個弱分類器按照一定的權重疊加起來,得到最終的強分類器。

1.4 級聯分類器

級聯分類器是由多層強分類器級聯而成的,也稱之為級聯檢測器或瀑布型檢測器。其每一層都是由AdaBoost算法訓練得到的強分類器,第1層分類得到的正確結果觸發第2層分類器的分類,第2層分類得到的正確結果再觸發第3層分類器的分類,以此類推。這樣疑似人臉窗口依次通過各層分類器,就確認為人臉。反之,如果被檢測的窗口在某一層被判斷為非人臉,就立即停止對該窗口的檢測,開始進行下一個窗口的檢測[5]。這種級聯結構的分類器在設計時采用逐級復雜的原則來實現的,最初的幾層強分類器比較簡單,通常一層由一到幾個弱分類器構成,這樣可以快速排除掉那些明顯不是人臉的子窗口,使后續檢測目標越來越少,從而大大提高了檢測速度。此外,為了實現搜索不同大小的目標區域,分類器被設計為可進行尺寸改變,這樣可以避免直接對圖像進行縮放變換,減小了計算工作量,也提高了檢測速度。

2 人臉檢測系統設計與實現

2.1 級聯分類器的制作和選取

級聯分類器的制作可采用OpenCV自帶的Haartraining程序訓練實現,首先準備大量的正樣本(人臉樣本)和負樣本(非人臉樣本),然后利用OpenCV安裝目錄中的bin子目錄下的createsamples.exe和haartraining.exe分別創建Sample和訓練Sample,直到收斂為止,最后利用bin子目錄下的performance.exe進行樣本測試的訓練,最終生成級聯分類器XML文件[6]。為了快速開發出一套人臉檢測系統,本文選取OpenCV自帶的基于Haar-like特征的級聯分類器haarcascade_frontalface_alt_tree.xml和haarcascade_profileface.xml進行實驗。

2.2 軟件系統界面設計

采用VC++6.0搭建前臺人機界面(如圖2所示),該界面主要分為3個部分,分別是檢測顯示區、定位顯示區和菜單區。檢測顯示區主要實現基于靜態圖像、攝像頭視頻和avi視頻的人臉檢測結果顯示,定位顯示區主要實現對標記后的人臉區域圖像進行實時顯示,菜單區主要實現基于靜態圖像、攝像頭視頻和avi視頻的人臉檢測與標記操作以及標記后的人臉區域圖像的顯示和存盤操作。

圖2 人臉檢測系統界面Fig.2 The interface of face detection system

2.3 人臉檢測軟件實現

基于靜態圖像的人臉檢測流程如圖3所示,大致可分為4個過程:1)加載訓練好的級聯分類器;2)將其轉化為內部格式,以便被計算機識別處理;3)加載待檢測的靜態圖像;4)檢測出圖像中的人臉區域并標記出人臉位置。

圖3 基于靜態圖像的人臉檢測流程圖Fig.3 Flow chart of face detection based on static image

基于攝像頭視頻的人臉檢測流程如圖4所示,主要過程:1)檢測并啟動攝像頭,如未安裝攝像頭將會發出警告并結束檢測,因視頻采集設備種類多和視頻處理的實時性要求,本文采用了實時視頻處理技術DirectX;2)加載已訓練好的級聯分類器并將其轉化為內部格式;3)判斷檢測標志位,若為真,首先捕獲當前一幀并創建該幀的圖像,然后載入當前一幀圖像,并對圖像中的人臉區域進行檢測和標記,最后判斷保存標志位,此時若為真則保存標記的人臉區域圖像并進入下一幀的檢測,否則直接進入下一幀的檢測;若檢測標志位為假則結束檢測。

圖4 基于攝像頭視頻的人臉檢測流程圖Fig.4 Flow chart of face detection based on camera video

視頻可以看成是一幀一幀的圖像在時間上的排列,這樣視頻人臉檢測可看作是對一組圖像序列的連續檢測,因此,基于avi視頻的人臉檢測和基于攝像頭視頻的人臉檢測的流程基本上是一樣的,不同之處是其不需要檢測啟動攝像頭這一步,而是進行加載avi視頻,所以其流程不再贅述。

計算機視覺類庫OpenCV中用于人臉檢測的主要函數為:

1)cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0);該函數實現載入級聯分類器的功能,其中cascade_name為級聯分類器的路徑。

2)cvGrabFrame(capture);和frame=cvRetrieveFrame(capture);這兩個函數一起調用實現快速獲取avi視頻幀。其中capture=cvCaptureFromAVI(path);讀取捕獲avi視頻。

3)CvMemStorage*storage=cvCreateMemStorage(0);該函數創建一個默認大小為64 kB的內存塊并返回指向塊首的指針。

4)CvSeq*faces=cvHaarDetectObjects(small_img,cascade,storage,1.1,2,0,cvSize(30,30));該函數的功能是使用訓練好的級聯分類器在圖像中找到包含人臉目標的矩形區域,并將這些區域作為一序列的矩形框返回。

5)cvRectangle(img,LeftPoint,RightPoint,color,3,8,0);該函數實現對檢測到的人臉區域用方框標記出來。

6)cvSaveImage(savepath+strcat(strCount,".bmp"),OutImage);該函數實現把標記的人臉區域圖像保存為bmp格式的圖像,其中OutImage=cvCreateImage(cvSize(120,120),8,3);創建頭并分配120×120大小的圖像數據空間。

7)獲取到被檢測圖像之后需要進行包括圖像色彩轉換、圖像大小變換和直方圖均衡化等相關處理后方可進行后面的人臉檢測。相關處理函數如下:cvCvtColor(img,gray,CV_BGR2GRAY);色彩轉換。cvResize(gray,small_img,CV_INTER_LINEAR);圖像大小變換。cvEqualizeHist(small_img,small_img);灰度圖像直方圖均衡化。

2.4 實時視頻處理技術DirectX

由微軟公司提供的多媒體編程接口DirectX采用C++編程語言實現,遵循COM,可以更好的構建Windows系統的機器視覺平臺。該接口可直接提供開發質量高、實時的應用程序所需要的各種資源。DirectX技術優點:1)為軟件開發者提供硬件無關性,即可使系統不再依賴任何特定的視頻采集設備;2)為硬件開發提供策略。基于攝像頭視頻的人臉檢測部分主要使用DirectX SDK中的DirectShow組件實現視頻的實時采集和處理,它采用一種叫Filter Graph的模型來管理整個數據流的處理過程,保持兼容VFW(Video For Windows)并且提供了更加優秀的接口。通過對OpenCV和DirectShow組件的實時視頻采集情況進行對比,采用DirectShow組件處理攝像頭視頻效果更加流暢。DirectShow組件中用于打開攝像頭和處理視頻的主要函數如下:

CCameraDS camera;//定義攝像類變量camera.OpenCamera(0,false,320,240));//打開攝像頭IplImage*pFrame=camera.QueryFrame();//獲取視頻幀

2.5 人臉檢測圖像顯示和保存

本文實現了對標記后的人臉區域圖像進行實時顯示和存盤的功能。因軟件界面有限,在定位顯示區最多可實時顯示被標記的前7幅人臉區域圖像,如圖5所示。當需要保存被標記的人臉區域圖像時,點擊“保存定位圖像”按鈕并選取保存路徑,即可實現存盤功能。

3 測試結果分析

在Pentium T3200 2.0 GHz CPU,1 GB內存的筆記本電腦上進行實驗。對于靜態圖像的人臉檢測,實驗樣本是從互聯網上搜集的46張彩色圖像,最小尺寸為469×447,最大尺寸為1 936×1 288,共361個人臉,其中漏檢25個,誤檢13個,總體檢測效果良好,其中一張圖像檢測結果如圖5所示。利用筆記本電腦上自帶的30萬像素的攝像頭拍攝的實時視頻進行人臉檢測,視頻處理流暢,檢測結果完全滿足實時性需求,其中一幀檢測結果如圖6所示。最后,分別對從互聯網上下載的avi格式視頻文件U-go-girl.AVI和kissingyou.AVI進行人臉檢測,流暢度和實時性均能滿足需求,需要注意的是在進行人臉檢測前需要安裝XviD解碼器方可打開這兩個avi視頻文件,對U-go-girl.AVI文件其中一幀的檢測結果如圖7所示。在實驗中發現,漏檢的主要原因是人臉姿態偏轉角度較大造成的,因此,分類器訓練權重的更新規則需要進一步的改進和完善。在人臉檢測中需要注意的是靜態圖像的像素和視頻的清晰度都不能過高,當過高時人臉檢測的實時性將會大大降低,同時檢測率也會有所下降。

4 結束語

圖5 基于靜態圖像的人臉檢測結果Fig.5 Result of face detection based on static image

圖6 基于攝像頭視頻的人臉檢測結果Fig.6 Result of face detection based on camera video

圖7 基于avi視頻的人臉檢測結果Fig.7 Result of face detection based on avi video

本文在簡要闡述基于Haar-like特征的AdaBoost人臉檢測算法原理基礎上,利用由AdaBoost算法訓練的人臉級聯分類器在計算機視覺類庫OpenCV和VC++6.0平臺上進行軟件編程設計人臉檢測系統,分別實現了基于靜態圖像、攝像頭視頻和avi視頻的人臉檢測與標記以及標記后的人臉區域圖像實時顯示和存盤,并對檢測結果進行了分析和討論。實驗結果顯示,采用計算機視覺類庫OpenCV實現基于AdaBoost算法的人臉檢測,具有檢測速度快、檢測率高、實時性強等優點,且實現方法簡單實用,可用于實現人臉識別與跟蹤、運動分析及環境的實時監控等,有較好的開發和應用前景。

[1]陳勝勇,劉盛.基于OpenCV的計算機視覺技術實現[M].北京:科學出版社,2008.

[2]蘇景龍,林天威,王科俊,等.視頻流下的人臉檢測與跟蹤[J].應用科技,2011,38(3):5-11.

SU Jing-long,LIN Tian-wei,WANG Ke-jun,et al.Face detection and tracking in video[J].Applied Science and Technology,2011,38(3):5-11.

[3]花櫻,彭宏京,顧佳玲.Boosting協方差特征的人臉檢測方

法[J].計算機工程與應用,2010,46(18):186-189.

HUA Ying,PENG Hong-jing,GU Jia-ling.Face detection method by boosting covariance feature[J].Computer Engineering and Applications,2010,46(18):186-189.

[4]郭磊,王秋光.AdaBoost人臉檢測算法研究及OpenCV實現[J].哈爾濱理工大學學報,2009,14(5):123-126.

GUO Lei,WANG Qiu-guang.Research of face detection based on AdaBoost algorithm and OpenCV implementation[J].Journal of Harbin University of Science and Technology,2009,14(5):123-126.

[5]崔曉青.基于AdaBoost算法的人臉檢測系統的研究與實現[D].長春:吉林大學計算機科學與技術學院,2008.

[6]徐麒,王繼成.基于視頻圖像的人臉檢測與統計[J].計算機與現代化,2010,(1):120-123.

XU Qi,WANG Ji-cheng.Real-time face detection and statistics based on video image[J].Computer and Modernization,2010(1):120-123.

猜你喜歡
檢測
QC 檢測
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
“有理數的乘除法”檢測題
“有理數”檢測題
“角”檢測題
“幾何圖形”檢測題
主站蜘蛛池模板: 亚洲成人免费在线| 91精品福利自产拍在线观看| 日韩精品无码免费专网站| 朝桐光一区二区| 成人一区在线| 日本少妇又色又爽又高潮| 青青操视频在线| 天天色综网| 国产亚洲日韩av在线| 九九视频免费看| 亚洲制服丝袜第一页| 亚洲欧美成人影院| 欧美日韩资源| 亚洲欧美一区二区三区麻豆| 91精品免费久久久| 一本无码在线观看| 亚洲第一中文字幕| 欧美精品色视频| 理论片一区| 无码精品国产VA在线观看DVD| 亚洲欧美日韩天堂| 国产H片无码不卡在线视频| 久久96热在精品国产高清| 一区二区日韩国产精久久| 国产无遮挡裸体免费视频| 欧洲av毛片| 国产日韩丝袜一二三区| 夜夜操国产| 伊人久久大香线蕉aⅴ色| 亚洲激情区| 久久久久九九精品影院 | 午夜精品一区二区蜜桃| 国产精品污视频| 成人午夜精品一级毛片| 色综合久久无码网| 538国产视频| 国产本道久久一区二区三区| 丁香六月激情综合| 在线观看视频99| 久久鸭综合久久国产| 香蕉网久久| 亚洲第一成网站| 色婷婷在线影院| 亚洲精品福利网站| 97超碰精品成人国产| 精品人妻系列无码专区久久| 天天干天天色综合网| 国产成人乱无码视频| 国模粉嫩小泬视频在线观看| 亚洲自拍另类| 夜夜操狠狠操| 欧美精品色视频| 91福利一区二区三区| 中文字幕无码电影| 亚洲国产精品人久久电影| 国产色伊人| 国产91高清视频| 一级香蕉视频在线观看| 日韩在线1| 久久美女精品国产精品亚洲| 亚洲日韩图片专区第1页| 福利视频一区| 国产成人综合亚洲欧美在| 国产第一页第二页| 亚卅精品无码久久毛片乌克兰| 91国内视频在线观看| 亚洲国产中文精品va在线播放| 天天操天天噜| 国产精品成人久久| 亚洲欧美另类视频| 日本精品影院| 波多野结衣中文字幕久久| 国内精品久久人妻无码大片高| 国产精品久久久久久搜索 | 国产jizz| 国产精品一线天| 久久天天躁狠狠躁夜夜躁| 国产一级特黄aa级特黄裸毛片| 亚洲精品视频网| 色精品视频| 国产在线八区| 国产精品无码一区二区桃花视频|