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

基于openCV的人臉檢測系統的設計

2012-02-15 03:29:52陳志恒姜明新
電子設計工程 2012年10期
關鍵詞:特征檢測

陳志恒,姜明新

(大連民族學院 遼寧 大連 116600)

隨著計算機與數字信號處理技術的高速發展,人臉檢測技術在眾多領域得到廣泛應用。人臉檢測技術是指在視頻或圖像中檢測出現人臉位置、大小的過程。作為人臉信息處理中的一項關鍵技術,人臉檢測技術已經超出了其它人臉識別模式的應用范疇,在視頻處理,圖像處理,身份驗證,安全監測等方面有著重要的應用價值。隨著計算機語言算法的發展,近年來出現了大量的人臉檢測的算法,其中,能夠較好的解決人臉的檢測速度與檢測效果的算法,是在2001年由Paul Viola和Michael Jones首先提出的Adaboost算法。openCV[1]是由Intel提供的一系列包括C與C++的提供計算機視覺和圖像處理的開源軟件包,它為視頻或圖像處理搭建了很好的軟件平臺。本系統就是基于openCV,利用Adaboost算法設計的一個簡單的人臉檢測系統,該系統能夠快速、準確的檢測到圖像或視頻中的人臉。

1 AdaBoost人臉檢測算法

對人臉檢測的研究最初可以追溯到20世紀 70年代,早期的研究方向與現在的研究方向與方法不同。目前在實際中應用的人臉檢測方法較為普遍的是基于 Adaboost算法的方法。

Viola的人臉檢測方法是一種基于積分圖、級聯分類檢測器和Adaboost算法的方法,方法框架可以分為以下3大步驟:

1)使用Haar-like特征表示人臉,使用“積分圖”實現特征數值的快速計算;

2)使用Adaboost算法挑選出一些最能代表人臉的矩形特征(弱分類器),按照加權投票的方式將弱分類器構造為一個強分類器;

3)將得到的若干強分類器串聯組成一個級聯結構的層疊分類器,訓練得到的強級聯結構能有效地提高分類器的檢測速度。

1.1 Haar-like特征

haar特征是基于灰度圖,首先通過大量的具有比較明顯的haar特征(矩形)的物體圖像用模式識別的方法訓練出分類器,分類器是個級聯的,每級都以大概相同的識別率保留進入下一級的具有物體特征的候選物體,而每一級的子分類器則由許多haar特征構成(由積分圖像計算得到,并保存下位置),有水平的、豎直的、傾斜的,并且每個特征帶一個閾值和兩個分支值,每級子分類器帶一個總的閾值。識別物體的時候,同樣計算積分圖像為后面計算haar特征做準備,然后采用與訓練的時候有物體的窗口同樣大小的窗口遍歷整幅圖像,以后逐漸放大窗口,同樣做遍歷搜索物體;每當窗口移動到一個位置,即計算該窗口內的haar特征,加權后與分類器中haar特征的閾值比較從而選擇左或者右分支值,累加一個級的分支值與相應級的閾值比較,大于該閾值才可以通過進入下一輪篩選。當通過分類器所有分類級的時候說明這個物體以大概率被識別。常用的Haar-like特征有線性特征,邊緣特征,中心特征。

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

特征值是指圖像上兩個或者多個形狀大小相同的矩形內部所有像素灰度值之和的差值,例如在邊緣特征中,特征值的計算公式為:

1.2 積分圖

由于訓練樣本通常有近萬個,并且矩形特征的數量非常龐大,如果每次計算特征值都要統計矩形內所以像素之和,將會大大降低訓練和檢測的速度。因此引入了一種新的圖像表示方法——積分圖像特征的特征值計算法,該方法只與此特征矩形的端點的積分圖有關,所以不管此特征矩形的尺度變換如何,特征值的計算所消耗的時間都是常量。這樣只要遍歷圖像一次,就可以求得所有子窗口的特征值。積分圖[2]定義為:

其中 I(x′,y′)為圖像在點(x′,y′)處的像素值。 為了節約時間,減少重復計算,則圖像I的積分圖可按如下遞推公式計算:

這樣就可以進行任意矩形區域內像素積分運算。由圖像的積分圖可快速地計算圖像中任意矩形內所有像素灰度積分。如圖2所示,點1的積分圖像的值為(其中Sum為求和):

圖2 特征和計算Fig.2 The sum of features

同理,點2、點3、點4的積分圖像分別為:

矩形區域D內的所有像素灰度積分可由矩形端點的積分圖像值得到:

1.3 Adaboost算法基本原理

Adaboost是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最后將每次訓練得到的分類器最后融合起來,作為最后的決策分類器。使用Adaboost分類器可以排除一些不必要的訓練數據特征,并將關鍵放在關鍵的訓練數據上面。

Adaboost算法中不同的訓練集是通過調整每個樣本對應的權重來實現的。開始時,每個樣本對應的權重是相同的,即其中 n為樣本個數,在此樣本分布下訓練出一弱分類器。對于分類錯誤的樣本,加大其對應的權重;而對于分類正確的樣本,降低其權重,這樣分類錯的樣本就被突出出來,從而得到一個新的樣本分布。在新的樣本分布下,再次對弱分類器進行訓練,得到弱分類器。依次類推,經過 T次循環,得到 T個弱分類器,把這T個弱分類器按一定的權重疊加(boost)起來,得到最終想要的強分類器。

Adaboost[3]的具體算法如下:

設輸入 的 n 個 訓練 樣本為:{(x1,y1),(x2,y2)......(xn,yn)},其中xi是輸入的訓練樣本,yi∈{0,1}分別表示正樣本和負樣本,其中正樣本數為l,負樣本數為m。n=l+m,具體步驟如下:

1)初始化每個樣本的權重;

2)對每個 t=1,...,T(T 為弱分類器的個數)

①把權重歸一化為一個概率分布:

如此使得ωt為一個概率分布。

② 對每個特征f,訓練一個弱分類器hj,計算對應所有特征的弱分類器的加權錯誤率

③ 選取最佳的弱分類器ht(擁有最小錯誤率):θt

④按照這個最佳弱分類器,調整權重:

其中θi=0表示被正確的分類,ei=1表示被錯誤的分類,當錯誤分類時:

3)最后的強分類器為:

1.4 級聯分類器

級聯分類器是由多個強分類器級聯而成的,其中,每一層均有Abadoost算法訓練得到的強分類器構成,第一層分類器得到疑似人臉的正確結果后,觸發第二層進行分類,當第二層分類器得到疑似人臉的正確結果后,觸發第三層進行分類,依次類推,最后確定疑似人臉的圖像就確認為人臉。反之,當觸發到某一層時,分類器得到的結果是非人臉時,就立即停止對圖像的檢測。級聯分類器的結構類似于金字塔,如圖3所示,通過級聯分類器,可以很對人臉做出檢測。由于本系統較為簡單,所以只用到了4級強分類器構成級聯分類器。

圖3 金字塔結構Fig.3 The structure of Pyramid

2 人臉檢測系統

2.1 系統界面

基于VC++6.0搭建的人機界面,如圖4所示,該系統主要由3個部分組成,視頻成像區,檢測區,和菜單區。視頻成像區主要是基于攝像頭獲取的圖像進行顯示,檢測區主要是基于視頻頭中的人臉和靜態圖像中的人臉的檢測,并在左上方顯示出檢測到的人臉的圖像,菜單區是主要實現基于攝像頭視頻和靜態圖像中人臉檢測的操作。在視頻成像區下方,有 detect(檢測)選項和 run(開始)選項。

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

2.2 人臉檢測的軟件實現方法簡介

2.2.1 系統流程

該系統可分為兩個模塊,靜態圖像人臉檢測和視頻圖像中的人臉檢測。

基于靜態圖像的人臉檢測流程大致可分為4個過程(如圖5所示):1)加載已經訓練好的分類器;2)將其轉化為計算機可以識別的內部格式;3)加載該圖片以進行檢測;4)顯示檢測結果到檢測區。

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

基于視頻圖像的人臉檢測主要流程為:1)攝像頭提取圖像;2)加載已訓練好的級聯分類器并將圖像其轉化為內部各式;3)判斷檢測標志位,若為真,首先捕獲當前一幀并創建該幀圖像,然后載入當前一幀圖像,并對圖像的人臉區域進行檢測,反之,結束檢測;4)將檢測到的結果顯示到檢測區。

2.2.2 openCV人臉檢測主要函數

openCV軟件包中提供了豐富的基于圖像和視頻處理的視覺類庫[4],該系統主要用到的函數[5]有:

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

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

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

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

5)獲得被檢測到的人臉后,要對圖像進行包括圖像色彩轉換、圖像大小變換和直方圖均衡化等相關處理,方可把檢測到的人臉顯示在檢測區中。相關的函數包括:cvCvtColor(img,gray,CV_BGR2GRAY); 該函數是對圖像進行色彩轉換。 cvResize(gray,small_img,CV_INTER_LINEAR);該函數是對圖像的大小進行變換。cvEqualizeHist(small_img,small_img);該函數的作用是對灰度圖像直方圖的均衡化。

6)對于視頻圖像的人臉檢測來說,還需要從電腦上的攝像頭讀取視頻,openCV提供很好的實時視頻采集,cvCapture*cvCaptureFromCAM (int 1);該函數的功能是對攝像頭(個數為1)打開進行定義。

2.3 制作級聯分類器

制作分類器[6]需要制作正樣本文件和負樣本文件。負樣本可以來自于任意的圖片,但這些圖片不能包含目標特征。負樣本由背景描述文件來描述。背景描述文件是一個文本文件,每一行包含了一個負樣本圖片的文件名(基于描述文件的相對路徑),該文件創建方法如下:采用Dos命令生成樣本描述文件。具體方法是在Dos下的進入你的圖片目錄,比如我的圖片放在D:facedetect egdata中,則:按Ctrl+R打開Windows運行程序,輸入 cmd,打開DOS命令窗口,輸入 d:回車,再輸入cd D:facedetect egdata進入圖片路徑,再次輸入dir/b>negdata.dat,則在圖片路徑下生成一個negdata.dat文件,打開該文件將最后一行的negdata.dat刪除,這樣就生成了負樣本描述文件。對于正樣本文件,通常的做法是先把所有正樣本裁切好,并對尺寸做規整。由于HaarTraining訓練時輸入的正樣本是vec文件,所以需要使用openCV自帶的CreateSamples程序,將準備好的正樣本轉換為vec文件。正、負樣本創建之后,接下來要訓練分類器,這個過程是由haartraining程序來實現的。該程序源碼由openCV自帶,且可執行的程序在openCV安裝目錄的bin目錄下。訓練結束后,會在目錄data下生成一些子目錄,即為訓練好的分類器。用performance.exe進行樣本的測試訓練,最終生成xml文件。

3 測試結果

在個人用的筆記本電腦上進行視頻圖像中的人臉檢測和圖片中的人臉檢測的測試,得到程序測試圖如圖6和圖7所示。結果表明,基于openCV的簡單的人臉檢測系統,可以快速的從視頻或靜態圖像中檢測到人臉,在檢測區將人臉用方框標記,并在檢測區左上方顯示出檢測到的人臉。

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

4 結束語

文中簡要闡述了在Adaboost人臉檢測算法的基礎上,采用級聯分類器的方法檢測動態視頻和靜態圖像中人臉,在檢測區對人臉進行標記,并對結果進行了分析。分析結果顯示,采用計算機視覺類庫openCV實現基于Adaboost算法的人臉檢測,具有檢測速度快,檢測結果準確,實時性強等優點,且實現的方法簡單實用。文中所闡述的基于openCV的簡單人臉檢測系統可用于其他人臉識別與實時監控的軟件系統開發。

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

[1]Ary Bradski,Adrian Kaebler.學習OpenCV[M].北京:清華大學出版社,2009.

[2]黃文杰,陳斌.一種快速圖像處理的積分方法[J].計算機應用,2005,25(1):266-268.HUANG Wen-jie,CHEN Bin.A fast image process of integration method[J].Computer Applications,2005,25 (1):266-268.

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

[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]陳勝勇,劉勝.基于OpenCV的計算機視覺技術實現[M].北京:科學出版社,2008.

[6]唐徙文,曾義.人臉檢測級聯分類器快速訓練算法[J].計算機仿真,2007,24(12):324-327 TANG Xi-wen,ZENGYi.An improved algorithm for constructing cascade classifier based on adaboost[J].Computer Simulation,2007,24(12):324-327.

猜你喜歡
特征檢測
抓住特征巧觀察
“不等式”檢測題
“一元一次不等式”檢測題
“一元一次不等式組”檢測題
“幾何圖形”檢測題
“角”檢測題
新型冠狀病毒及其流行病學特征認識
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
抓住特征巧觀察
主站蜘蛛池模板: 成人av手机在线观看| 亚洲欧美日韩高清综合678| 在线精品自拍| 久草视频中文| 性色一区| 熟女成人国产精品视频| 久久亚洲天堂| 91av国产在线| 国产91无码福利在线| 亚洲精品国产日韩无码AV永久免费网| 中文字幕首页系列人妻| 免费一级毛片在线观看| 无码中文字幕精品推荐| 69综合网| 国产激爽大片在线播放| 国产福利在线免费| 国产精品粉嫩| 伊人激情久久综合中文字幕| 国产av无码日韩av无码网站 | 国产精品永久不卡免费视频| 粗大猛烈进出高潮视频无码| 最新国产麻豆aⅴ精品无| 日韩精品高清自在线| av在线5g无码天天| 亚洲swag精品自拍一区| 欧美日韩导航| 亚洲成A人V欧美综合| 国产亚洲日韩av在线| 亚洲成a人片77777在线播放| 四虎精品黑人视频| 久久黄色小视频| 欧美亚洲国产精品久久蜜芽| 视频二区亚洲精品| 99精品一区二区免费视频| 成人字幕网视频在线观看| 国产一级毛片高清完整视频版| 久久久国产精品免费视频| 亚洲精品成人7777在线观看| 99精品视频在线观看免费播放| 国产美女无遮挡免费视频| 一区二区偷拍美女撒尿视频| 一级爱做片免费观看久久| www.国产福利| 精品久久香蕉国产线看观看gif | 精品久久国产综合精麻豆| 国产swag在线观看| 亚洲av综合网| 麻豆精品在线| 在线a视频免费观看| 国产成人精品一区二区三区| 美女被操91视频| 亚洲一级无毛片无码在线免费视频| 婷婷亚洲天堂| 国产白浆在线| 欧美视频免费一区二区三区 | 97狠狠操| 欧美自拍另类欧美综合图区| 色婷婷在线播放| 国产杨幂丝袜av在线播放| 国产亚洲精品自在久久不卡| 色综合激情网| 欧美国产综合色视频| 久久人妻xunleige无码| 特级aaaaaaaaa毛片免费视频| 91小视频在线观看| 强奷白丝美女在线观看| 中文无码毛片又爽又刺激| 国产丝袜第一页| 亚洲人网站| 欧洲一区二区三区无码| 亚洲v日韩v欧美在线观看| 成人精品免费视频| 亚洲精品中文字幕午夜| 亚洲免费三区| 欧美日韩理论| 国产成人高清精品免费| 欧美不卡二区| 91视频99| 欧美亚洲欧美| 老司国产精品视频91| 久久香蕉国产线看观看式| 国产美女人喷水在线观看|