版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本 科 生 畢 業(yè) 設(shè) 計(jì)(論文)</p><p><b> (2012屆)</b></p><p><b> 信息工程學(xué)院</b></p><p> 題 目: 基于Adaboost的人臉檢測(cè)研究 </p><p> 學(xué) 號(hào):
2、 </p><p> 姓 名: </p><p> 專業(yè)班級(jí): 計(jì)算機(jī)081班 </p><p> 指導(dǎo)教師: 職稱: 實(shí)驗(yàn)師 </p><p> 2012 年 5 月 27日<
3、;/p><p> 基于Adaboost的人臉檢測(cè)研究</p><p> 摘要:本文使用Adaboost算法,以Visual C++集成開(kāi)發(fā)環(huán)境做平臺(tái)并利用OpenCV圖像處理軟件實(shí)現(xiàn)了人臉檢測(cè)功能。論文介紹了幾種常見(jiàn)的人臉檢測(cè)識(shí)別方法以及國(guó)內(nèi)外人臉檢測(cè)技術(shù)研究的發(fā)展現(xiàn)狀,詳細(xì)闡述了Adaboost人臉檢測(cè)算法的原理及訓(xùn)練流程,利用OpenCV圖像處理軟件與Adaboost人臉檢測(cè)算法的結(jié)合
4、模塊,選取擴(kuò)展的Haar特征,實(shí)現(xiàn)了人臉檢測(cè)功能并給出了檢測(cè)結(jié)果。該方法具有較高的準(zhǔn)確度和實(shí)時(shí)性,在自動(dòng)人臉識(shí)別、智能人機(jī)交互、圖像與視頻檢索和監(jiān)控等方面有著重要的應(yīng)用價(jià)值。</p><p> 關(guān)鍵字:Adaboost算法; OpenCV; 人臉檢測(cè)</p><p> Face detection research based on Adaboost</p><p&
5、gt; Abstract: This article is using Adaboost algorithm, OpenCV image processing software and Visual C + + integrated development environment as a platform, achieving a face detection function. This paper introduces seve
6、ral common face detection methods and development status of domestic and international face detection technology, elaborating on the Adaboost face detection algorithm principle and training processes,using OpenCV image p
7、rocessing software combined with Adaboost face detection algorith</p><p> keyword: Adaboost algorithm, OpenCV, Face detection</p><p><b> 目 錄</b></p><p><b> 摘
8、要:I</b></p><p> Abstract:II</p><p><b> 1、緒論 1</b></p><p> 1.1 人臉檢測(cè)研究的提出及背景1</p><p> 1.2 國(guó)內(nèi)外人臉檢測(cè)的研究現(xiàn)狀1</p><p> 1.3 本文研究的目的與意義
9、2</p><p> 1.4 本文研究的主要內(nèi)容與組織結(jié)構(gòu)2</p><p> 1.4.1 主要內(nèi)容2</p><p> 1.4.2 組織結(jié)構(gòu)3</p><p> 2、人臉檢測(cè)方法與分析4</p><p> 2.1 基于特征的人臉檢測(cè)方法4</p><p> 2.
10、1.1 輪廓規(guī)則法4</p><p> 2.1.2 器官分布法5</p><p> 2.1.3 顏色紋理法5</p><p> 2.1.4 對(duì)稱性規(guī)則4</p><p> 2.1.5 運(yùn)動(dòng)規(guī)則法5</p><p> 2.2 模板匹配方法5</p><p> 2
11、.2.1 鑲嵌圖法4</p><p> 2.2.2 預(yù)定模板匹配法5</p><p> 2.2.3 變形模板法5</p><p> 2.3 基于統(tǒng)計(jì)的方法5</p><p> 2.3.1 人工神經(jīng)網(wǎng)絡(luò)法4</p><p> 2.3.2 特征空間法5</p><p&g
12、t; 2.3.3 支持向量機(jī)法5</p><p> 2.3.4 概率模型法4</p><p> 2.3.5 基于積分圖像特征法5</p><p> 2.4 結(jié)束語(yǔ)5</p><p> 3、Adaboost 算法在人臉檢測(cè)中的應(yīng)用5</p><p> 3.1 Adaboost算法簡(jiǎn)介6&
13、lt;/p><p> 3.2 Adaboost的原理6</p><p> 3.2.1 基本原理7</p><p> 3.2.2 具體步驟7</p><p> 4、OpenCV圖像處理軟件的介紹8</p><p> 4.1 OpenCV簡(jiǎn)介8</p><p> 4.1.1
14、 OpenCV的基本概念及應(yīng)用領(lǐng)域12</p><p> 4.1.2 OpenCV的優(yōu)勢(shì)及項(xiàng)目歷史12</p><p> 4.2 OpenCV在Visual C++ 6.0下的安裝與配置14</p><p> 4.2.1 OpenCV的安裝15</p><p> 4.2.2 配置Windows環(huán)境變量15</
15、p><p> 4.2.3 配置Visual C++ 6.015</p><p> 5、人臉檢測(cè)功能的實(shí)現(xiàn)19</p><p> 5.1 Harr特征的提取19</p><p> 5.2 積分圖20</p><p> 5.3 Adaboost人臉檢測(cè)方法22</p><p>
16、; 5.4 利用OpenCV實(shí)現(xiàn)Adaboost算法的人臉檢測(cè)22</p><p> 5.4.1 OpenCV中Haar分類器的數(shù)據(jù)結(jié)構(gòu)23</p><p> 5.4.2 OpenCV人臉檢測(cè)模塊及相關(guān)函數(shù)23</p><p> 5.4.3 OpenCV的人臉檢測(cè)23</p><p> 5.5 實(shí)驗(yàn)結(jié)果與分析24
17、</p><p> 5.6 關(guān)鍵功能實(shí)現(xiàn)代碼24</p><p><b> 6、結(jié)論26</b></p><p><b> 參考文獻(xiàn)27</b></p><p><b> 致謝28</b></p><p><b> 1 緒
18、論</b></p><p> 1.1 問(wèn)題的提出及研究背景</p><p> 人臉檢測(cè)(face detection)最初來(lái)源于人臉識(shí)別(face recognition)。人臉識(shí)別的研究可以追溯到二十世紀(jì)六十年代,由于早期的人臉識(shí)別研究主要針對(duì)背景簡(jiǎn)單的、靜態(tài)的人的面部圖像,通常這些人臉的方位都很輕松可以捕捉到,所以人臉檢測(cè)沒(méi)有得到應(yīng)有的關(guān)注與研究。進(jìn)入二十一世紀(jì)以來(lái),
19、電子商務(wù)應(yīng)用得到大力蓬勃的的發(fā)展,最具有代表性的識(shí)別驗(yàn)證生物身份的手段—人臉檢測(cè),在這種應(yīng)用背景要求下得到了廣大研究人員的關(guān)注,成為人臉信息識(shí)別、處理中的一種非常重要的手段。近幾年來(lái),各領(lǐng)域?qū)ι矧?yàn)證的迫切要求,以及計(jì)算機(jī)視覺(jué)的快速發(fā)展,人臉檢測(cè)逐漸開(kāi)始作為一項(xiàng)單獨(dú)的項(xiàng)目進(jìn)行研究開(kāi)發(fā),引起了國(guó)內(nèi)外廣大的學(xué)者、技術(shù)科學(xué)人員的高度重視。</p><p> 人臉檢測(cè)方法和人臉識(shí)別技術(shù)是兩個(gè)不同的概念,后者包括前者,人
20、臉檢測(cè)是人臉識(shí)別其中的一個(gè)分支。兩者的側(cè)重點(diǎn)和解決的手段都不相同。從本質(zhì)上說(shuō),人臉檢測(cè)是一個(gè)2類的分類問(wèn)題。它的基本思路是先用統(tǒng)計(jì)或知識(shí)的方法對(duì)人臉建模,然后將所有可能需要檢測(cè)的區(qū)域與己經(jīng)建立好模型的進(jìn)行相似程度的匹配,從檢測(cè)結(jié)果中得到是人臉特征的區(qū)域。與人臉檢測(cè)相對(duì)的是人臉識(shí)別,它是n類的分類問(wèn)題(n不是人臉的個(gè)數(shù),而是代表圖像數(shù)據(jù)庫(kù)中人的個(gè)數(shù))。人臉識(shí)別最終的目的是從大量數(shù)據(jù)庫(kù)中搜索出檢測(cè)到的對(duì)應(yīng)的人臉,看是否在人臉數(shù)據(jù)庫(kù)中,具體是
21、那個(gè)人。</p><p> 現(xiàn)在,人臉檢測(cè)的應(yīng)用背景已經(jīng)遠(yuǎn)遠(yuǎn)超出了人臉識(shí)別系統(tǒng)的范疇,在基于內(nèi)容的檢索、數(shù)字視頻處理、視頻監(jiān)測(cè)等方面有著重要的應(yīng)用價(jià)值[1]。</p><p> 1.2 國(guó)內(nèi)外人臉檢測(cè)的研究現(xiàn)狀</p><p> 直到二十世紀(jì)末,人們才把對(duì)人臉圖像的研究從人臉識(shí)別領(lǐng)域轉(zhuǎn)移到人臉檢測(cè)的領(lǐng)域上來(lái)。到目前為止,國(guó)內(nèi)外對(duì)人臉檢測(cè)問(wèn)題的研究有很多,外國(guó)
22、比較著名的有MIT,CMU等;在國(guó)內(nèi),清華大學(xué)、北京工業(yè)大學(xué)、中科院計(jì)算所和自動(dòng)化所等都有研究者從事人臉檢測(cè)相關(guān)的研究[2]。而且,標(biāo)準(zhǔn)組織MPEG7已經(jīng)成立了人臉識(shí)別草案小組,人臉檢測(cè)算法也是其中一項(xiàng)征集的內(nèi)容。隨著人臉檢測(cè)研究的深入,國(guó)際上發(fā)表的有關(guān)論文數(shù)量也大幅度增長(zhǎng),如IEEE的FG、ICIP\CVPR等重要國(guó)際會(huì)議上每年都有大量關(guān)于人臉檢測(cè)的論文,占有關(guān)人臉研究論文的1/3之多。由此可以看到世界對(duì)人臉檢測(cè)技術(shù)的重視[3]。&l
23、t;/p><p> 早期人臉檢測(cè)方法往往針對(duì)簡(jiǎn)單無(wú)變化背景下的正面人臉檢測(cè),所以使這些方法在很大程度上顯得很有局限性。</p><p> 直到二十世紀(jì)九十年代,隨著實(shí)際的人臉識(shí)別和視頻編碼系統(tǒng)開(kāi)始成為現(xiàn)實(shí),這種情況才有所改變。在過(guò)去的十多年里,研究者提出了多種檢測(cè)方法,特別是那些利用運(yùn)動(dòng)、膚色、示例學(xué)習(xí)、統(tǒng)計(jì)模型、形狀分析和一般信息的方法統(tǒng)計(jì)和神經(jīng)網(wǎng)絡(luò)方法的使用也使在復(fù)雜背景和多分辨率中的
24、人臉檢測(cè)成為可能。</p><p> 近期人臉檢測(cè)的研究主要集中在基于數(shù)據(jù)驅(qū)動(dòng)的學(xué)習(xí)方法,如統(tǒng)計(jì)模型方法,彩色信息,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)方法,支持向量機(jī)、多模態(tài)信息融合新分類方法的應(yīng)用[4]等。</p><p> 目前,國(guó)內(nèi)外對(duì)人臉檢測(cè)的研究很多,每年都有大批的研究論文出現(xiàn),但是由于人臉的復(fù)雜多樣,而生物科學(xué)上對(duì)人類視覺(jué)理解的研究還不夠透徹,至今仍然沒(méi)有徹底的解決這個(gè)問(wèn)題。</p>
25、<p> 1.3 本文研究的目的與意義</p><p> 人臉檢測(cè)的目的是確定圖像中是否有人臉,如果有人臉,則返回人臉在圖像中的位置和范圍。人臉檢測(cè)是人臉識(shí)別的基礎(chǔ),我們只有檢測(cè)出圖像中人臉的位置和大小,才能對(duì)其進(jìn)行近一步的識(shí)別。</p><p> 隨著人機(jī)交互和人工智能技術(shù)不斷的發(fā)展,各個(gè)領(lǐng)域?qū)?shí)時(shí)迅速自動(dòng)驗(yàn)證身份的要求愈來(lái)愈強(qiáng)烈。尤其是視頻會(huì)議、人機(jī)交互、門禁控制
26、、家庭娛樂(lè)以及信息安全等場(chǎng)合。人臉作為最關(guān)鍵的生物象征,成為了驗(yàn)證身份最權(quán)威的參考依據(jù)。當(dāng)今社會(huì)有很多生物識(shí)別技術(shù),比如視網(wǎng)膜識(shí)別,虹膜識(shí)別,步態(tài)識(shí)別,聲音識(shí)別,人臉識(shí)別,指紋識(shí)別等等,而人臉識(shí)別更形象,更迅速,更直接有效,其中人臉檢測(cè)是人臉識(shí)別的先決條件,所以必須加以重視,需要投入更多的人力,財(cái)力加以研究開(kāi)發(fā)。</p><p> 1.4 本文研究的主要內(nèi)容與組織結(jié)構(gòu)</p><p>
27、 1.4.1 主要內(nèi)容</p><p> 本論文研究的是基于AdaBoost算法,在windows平臺(tái)下,利用Intel開(kāi)發(fā)的OpenCV圖像處理軟件結(jié)合VC中的MFC實(shí)現(xiàn)的人臉檢測(cè)方法,第一步利先訓(xùn)練出大考量的簡(jiǎn)單的分類器,接著根據(jù)一定規(guī)則,選取有用的分類器,疊加起來(lái)組成一個(gè)能力更強(qiáng)的強(qiáng)分類器,最后通過(guò)把幾個(gè)強(qiáng)分類器組成一個(gè)終極分類器,完成對(duì)圖像的搜索和檢測(cè)。此研究過(guò)程中采用OpenCV庫(kù)編寫程序?qū)崿F(xiàn)人臉
28、檢測(cè)的算法。</p><p> 本文作者創(chuàng)新點(diǎn)是用VC 結(jié)合MFC和OpenCV對(duì)圖像進(jìn)行處理,用于檢測(cè)人臉。詳細(xì)介紹了Adaboost人臉檢測(cè)算法的原理及訓(xùn)練流程.利用OpenCV圖像處理軟件與Adaboost人臉檢測(cè)算法的結(jié)合模塊,選取擴(kuò)展的Haar特征,實(shí)現(xiàn)了人臉檢測(cè)并給出了檢測(cè)結(jié)果,并對(duì)結(jié)果進(jìn)行了分析。</p><p> 1.4.2 組織結(jié)構(gòu)</p><p
29、> 本論文的內(nèi)容一共分為六個(gè)章節(jié),具體內(nèi)容安排如下:</p><p> 第一章是緒論部分,首先介紹了選題背景,然后分析了人臉檢測(cè)國(guó)內(nèi)外研究的的現(xiàn)狀。接著總結(jié)了本文研究人臉檢測(cè)的目的、意義、主要內(nèi)容和本文的組織結(jié)構(gòu)。</p><p> 第二章是介紹人臉檢測(cè)的方法。</p><p> 第三章是介紹Adaboost算法在人臉檢測(cè)中的應(yīng)用。</p>
30、<p> 第四章是OpenCV圖像處理軟件的介紹,包括OpenCV的基本概念、應(yīng)用領(lǐng)域、優(yōu)勢(shì)及項(xiàng)目歷史和OpenCV在VC6.0下的安裝與配置。</p><p> 第五章是人臉檢測(cè)系統(tǒng)的實(shí)現(xiàn),展示了功能實(shí)現(xiàn)后的具體式樣(附圖片)以及對(duì)研究結(jié)果的分析。</p><p><b> 第六章是結(jié)論。</b></p><p> 最后
31、是參考文獻(xiàn),包括相關(guān)參考文獻(xiàn)列表及對(duì)老師和同學(xué)的衷心感謝等相關(guān)內(nèi)容。</p><p> 2 人臉檢測(cè)方法與分析</p><p> 本文對(duì)人臉檢測(cè)的方法進(jìn)行了整理和歸納,大致分為三類:基于特征的方法,模板匹配方法和基于統(tǒng)計(jì)的方法,并對(duì)這些方法做了簡(jiǎn)單的分析。</p><p> 圖 2-1 人臉檢測(cè)方法分類圖</p><p> 2.1
32、 基于特征的人臉檢測(cè)方法</p><p> 這里所說(shuō)的基于特征的人臉檢測(cè)方法是指人眼可以看見(jiàn)的特征,這些特征都是顯而易見(jiàn)的,比如說(shuō)頭發(fā)、皮膚顏色、臉型、輪廓、眼睛、鼻子、嘴巴、耳朵等器官特征等。利用這些最具代表性的結(jié)構(gòu)特征對(duì)人臉進(jìn)行檢測(cè)。</p><p> 2.1.1 輪廓規(guī)則法</p><p> 人的面部輪廓好像一顆鵝蛋,也可看成幾何圖形中的橢圓,所以檢
33、測(cè)算法可以通過(guò)尋找一個(gè)橢圓形來(lái)進(jìn)行人臉檢測(cè)。Govindaraju等人根據(jù)臉部輪廓特征,抽象的把人臉簡(jiǎn)單分為三個(gè)部分:第一部分,頭頂及額頭,算第一層輪廓線,以鼻子為分界線,將左臉和又臉?lè)謩e分為第二層和第三層輪廓線。我們隨便給出的任何一幅圖像,第一步對(duì)圖片進(jìn)行預(yù)處理,首先是邊緣檢測(cè),細(xì)化后,提取得到面部曲線的特征,接著用提取的曲線特征與封裝好的函數(shù)進(jìn)行匹配,檢測(cè)人臉。</p><p> 2.1.2 器官分布法&
34、lt;/p><p> 每個(gè)人都是獨(dú)立的個(gè)體,即使是雙胞胎,細(xì)細(xì)觀察也總存在不同之處。而且人的五官分布結(jié)構(gòu)遵循了一定的幾何規(guī)則。這種方法采用的規(guī)則有兩種:第一種是“從上到下”, 在這種規(guī)則中Yang等人提出的Mosaic方法是最為簡(jiǎn)單和有效的,它給出了基于人臉區(qū)域灰度分布的規(guī)則,根據(jù)這些規(guī)則,按照低分辨率到高分辨率對(duì)這些圖片進(jìn)行一一篩選,如果樣本在一定程度上滿足了這些規(guī)則,則可以判斷為人臉。第二種方法則是“從下到上”
35、,第一步直接對(duì)幾個(gè)器官可能分布的位置進(jìn)行檢測(cè),接著分別組合組合這些檢測(cè)到的位置點(diǎn),再根據(jù)已有的器官幾何分布規(guī)則逐個(gè)對(duì)其進(jìn)行挑選,剔除非人臉,篩選出有可能是人臉的樣本。</p><p> 2.1.3 顏色紋理法</p><p> 人臉面部皮膚顏色信息跟大部分背景顏色在很大程度上有所不同,可以根據(jù)這個(gè)差別將人聯(lián)合非人臉進(jìn)行區(qū)別。基于膚色模型算法有很多優(yōu)點(diǎn):比如算法相對(duì)比較簡(jiǎn)單、計(jì)算量小、
36、易于實(shí)現(xiàn)、檢測(cè)時(shí)間短等。由于只要考慮色度,所以不需要考慮人的面部表情、姿態(tài)等,只要根據(jù)膚色因素,不需要把其他方面考慮在內(nèi),很大程度上簡(jiǎn)化了檢測(cè)過(guò)程。此方法比較有名的代表人物有Dai和Saber,前者利用了SGLD(空間灰度共生矩陣)紋理圖信息作為特征[5],可以對(duì)低分辨率的圖像進(jìn)行人臉檢測(cè)。而Saber則是綜合形狀、顏色等因素,對(duì)人臉進(jìn)行檢測(cè),顯然后者考慮的因素更全面。</p><p> 2.1.4 對(duì)稱性規(guī)
37、則</p><p> 人的臉部結(jié)構(gòu)具有一定的幾何特點(diǎn)即軸對(duì)稱性,以鼻子為分界線,兩只眼睛、耳朵、左右臉頰等器官也是對(duì)稱的。所以很多研究者利用人臉的這個(gè)特點(diǎn),成功檢測(cè)出了人臉。這里比較著名的有盧春雨和Zabrodsky等人,盧春雨在各個(gè)不同方向上對(duì)人臉考察對(duì)稱性,我們稱之為定義方向上的對(duì)稱變換,這種方法既可以找到最強(qiáng)的對(duì)稱點(diǎn),又可以描述出對(duì)稱性強(qiáng)的物體的有關(guān)形狀信息,這種方法對(duì)人臉器官定位更為有效和準(zhǔn)確。Zabr
38、odsky提出的方法叫做連續(xù)對(duì)稱性法,在一個(gè)圓形區(qū)域內(nèi)的對(duì)圖片進(jìn)行對(duì)稱性的檢測(cè),根據(jù)檢測(cè)結(jié)果判斷是否為人臉。</p><p> 2.1.5 運(yùn)動(dòng)規(guī)則法</p><p> 我們可以利用相對(duì)運(yùn)動(dòng)法來(lái)檢測(cè)人臉。如果加載的圖像是動(dòng)態(tài)的序列,人臉相對(duì)于背景是運(yùn)動(dòng)的,我們可以根據(jù)這種方法來(lái)對(duì)人臉進(jìn)行檢測(cè),比如我們可以根據(jù)眨眼或嘴唇等動(dòng)作來(lái)將背景和人臉的區(qū)分開(kāi)來(lái)。Marques基于動(dòng)態(tài)圖像序列,分
39、別使用分割投影和連接算子方將人臉和背景分割開(kāi)來(lái),并取得了令人滿意的檢測(cè)結(jié)果。上述的這些方法都是利用到已經(jīng)存在的的人臉特征信息,然后根據(jù)規(guī)則找到每一個(gè)分布特征之間的相互的聯(lián)系,最后進(jìn)行人臉特征的的提取。</p><p> 2.2 模板匹配人臉檢測(cè)方法</p><p> 這種方法需要大量的人臉特征作為數(shù)據(jù)庫(kù),首先在計(jì)算機(jī)中存儲(chǔ)大量的人臉模板,包括正面人臉和五官等比如眼睛、鼻子、嘴唇、耳朵
40、等。然后輸入待測(cè)圖像,根據(jù)算法將待測(cè)圖與標(biāo)準(zhǔn)模板進(jìn)行的相似程匹配,達(dá)到一定相似度以上及判斷為人臉,否則為非人臉,這種方法需要的數(shù)據(jù)量比較大,需要大量存儲(chǔ)人臉和非人臉模型,對(duì)數(shù)據(jù)庫(kù)要求比較高。</p><p> 2.2.1 鑲嵌圖法</p><p> 此方法是將待測(cè)圖像分割成方格圖,每個(gè)方格大小要一樣,每一個(gè)方格的灰度值為格中各個(gè)像素的平均值。每個(gè)格子的值應(yīng)該滿足的一定的約束規(guī)則。以Y
41、ang為代表的一些研究者把五官區(qū)分割成小方格塊,然后利用一組規(guī)則進(jìn)行人臉檢驗(yàn),接著使用邊緣特征進(jìn)行再次驗(yàn)證。盧春雨等人改善了鑲嵌圖法,在檢測(cè)中自動(dòng)調(diào)整各方格塊的大小,使用一組基于各方格塊的灰度和梯度,對(duì)人臉特征進(jìn)行統(tǒng)計(jì),判斷待測(cè)圖像是否為人臉,實(shí)驗(yàn)結(jié)果相當(dāng)令人滿意。</p><p> 2.2.2 預(yù)定模板匹配法</p><p> 這種方法是用已有的知識(shí)知識(shí)確定出人臉輪廓模板和每一個(gè)器
42、官特征的子模板,第一步通過(guò)計(jì)算分析待測(cè)圖像,選定區(qū)域和人臉輪廓模板,用相關(guān)值匹配方法來(lái)來(lái)對(duì)人臉候進(jìn)行候選區(qū)域檢測(cè),第二步用已有的五官特征子模板來(lái)對(duì)前面檢測(cè)出來(lái)的候選人臉區(qū)域進(jìn)行檢測(cè),檢測(cè)待測(cè)圖像是否包含人臉。這種方法比較著名的有“雙眼一人臉”法,將人的眼睛從模板中裁剪出來(lái),過(guò)濾波形時(shí)首先先使用雙眼模板規(guī)則,然后再采用人臉匹配模板,這樣使匹配速度大大的提高,而且檢測(cè)性能也非常高。另一種思路是先得到人臉輪廓,接著與人臉庫(kù)進(jìn)行相關(guān)值匹配,找到
43、合適的人臉模板。</p><p> 2.2.3 變形模板法</p><p> 這種方法是結(jié)合模板和函數(shù)來(lái)對(duì)人臉進(jìn)行檢測(cè)的,利用一個(gè)非線性方法,找到最優(yōu)的,函數(shù)方法最簡(jiǎn)單的參數(shù)作為模板,這個(gè)人模板就被當(dāng)做是人臉特征。著名的Yullie則根據(jù)此方法,使用彈性模板的方法對(duì)人臉進(jìn)行檢測(cè)。使用這種方法,可以隨意的調(diào)整參數(shù),當(dāng)找到一個(gè)關(guān)于此函數(shù)的最小值的情況下,根據(jù)人臉位置和調(diào)整模板參數(shù),使模板
44、中的人臉與待測(cè)圖像中的人臉最大程度的匹配,從而實(shí)現(xiàn)人臉特征的檢測(cè)。</p><p> 2.3 基于統(tǒng)計(jì)的人臉檢測(cè)方法</p><p> 所謂統(tǒng)計(jì),就是從大量的人臉特征中尋找一些特定的規(guī)律,不是單單從單一的器官出發(fā),而是著眼于整個(gè)人臉特征。然后利用這些規(guī)律使用到檢測(cè)人臉中。此方法的核心是訓(xùn)練一個(gè)訓(xùn)練集,然后建立一個(gè)分類器,訓(xùn)練集是從大量的非人臉與人臉圖像得到的,然后根據(jù)這些樣本建立一個(gè)
45、正確率較高的分類器。這種方法的好處是不需要人為的對(duì)人臉?lè)治觯膊恍枰獙?duì)圖片進(jìn)行處理,檢測(cè)時(shí)只需要用掃描儀對(duì)圖片進(jìn)行掃描,然后分類器判斷是否存在人臉。</p><p> 2.3.1 人工神經(jīng)網(wǎng)絡(luò)法</p><p> CMU的Rowley對(duì)于這種方法具有很大的貢獻(xiàn),這種方法是把統(tǒng)計(jì)得到的人臉特征通過(guò)一定形式隱藏在函數(shù)和網(wǎng)絡(luò)框架之中,最終得到一個(gè)網(wǎng)絡(luò)結(jié)構(gòu)。這種方法的優(yōu)勢(shì)在于可以描述復(fù)雜的、
46、難以顯示的特征。</p><p> 2.3.2 特征空間法</p><p> 以Turk為代表的研究人員提出使用DFFS距離度量概念,然后將人臉空間的距離與待測(cè)圖像進(jìn)行比較,通過(guò)把人臉區(qū)域變換到某一個(gè)特征的空間,采用主分量分析的方法。根據(jù)特定空間的特定規(guī)律來(lái)劃分人臉和非人臉。</p><p> 2.3.3 支持向量機(jī)法</p><p&g
47、t; SVM(Support Vector Machine)是一種新的檢測(cè)人臉的方法,這種方法首先是由Osuna提出的[6]。它是依據(jù)與統(tǒng)計(jì)學(xué)發(fā)展而來(lái)的,提到這種方法前,必須先介紹下人工神經(jīng)網(wǎng)絡(luò)法,人工神經(jīng)網(wǎng)絡(luò)法是一種基于經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化的方法,不過(guò)它很難解決一些技術(shù)性的問(wèn)題,比如極小局部點(diǎn)問(wèn)題、過(guò)度學(xué)習(xí)和模型選擇問(wèn)題、維數(shù)災(zāi)難和非線性問(wèn)題,而SVM方法可以很好地解決這些問(wèn)題首先是搜索大量的人臉樣本,然后用和“自舉”的方法得到一些的“非
48、人臉”特征,訓(xùn)練出樣本。</p><p> 2.3.4 概率模型法</p><p> Schneiderman等人首先提出了一種基于后驗(yàn)概率估計(jì)的檢測(cè)方法。這種方法的思想是計(jì)算機(jī)計(jì)算待測(cè)圖片區(qū)域(region),然后得到屬于人臉特征object的后驗(yàn)概率P(object/region),根據(jù)概率對(duì)所有可能是人臉的的圖像窗口進(jìn)行判斷。另外一種概率模型是應(yīng)用隱馬爾可夫模型(Hidden
49、Markov Models, HMM)。這種方法方法主要用來(lái)檢測(cè)臉部和肩部的圖像。</p><p> 2.3.5 基于積分圖像特征法</p><p> 基于積分圖像特征法是由Viola等人所提出的這種方法結(jié)合了Adaboost學(xué)習(xí)算法、積分圖和分類器還有訓(xùn)練方法等。這種方法一般用于照片的預(yù)處理。</p><p><b> 2.4 結(jié)束語(yǔ)</
50、b></p><p> 由于人臉自身的多變性與環(huán)境的復(fù)雜度,至今仍然沒(méi)有一種統(tǒng)一權(quán)威的的人臉檢測(cè)方法,研究者只能通過(guò)結(jié)合多種混合的檢測(cè)方法來(lái)提高檢測(cè)的正確率,而提高檢測(cè)率的同時(shí)帶來(lái)的反作用則是檢測(cè)速度的放慢,所以要研究出一項(xiàng)正確率高,檢測(cè)速度快的實(shí)時(shí)人臉檢測(cè)方案成為現(xiàn)在亟待解決的問(wèn)題。</p><p> 3 Adaboost算法在人臉檢測(cè)中的應(yīng)用</p><
51、p> 3.1 Adaboost算法簡(jiǎn)介</p><p> Adaboost是一種迭代算法,其核心思想是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),第二步是結(jié)合這些弱分類器來(lái),利用這些弱分類器建立一個(gè)強(qiáng)分類器。通過(guò)變換數(shù)據(jù),對(duì)每一次訓(xùn)練出的訓(xùn)練集中的樣本進(jìn)行分類,根據(jù)正確率,得到權(quán)重。然后將得到的權(quán)重發(fā)送給下一級(jí)分類器,集合每一次正確檢測(cè)樣本的分類器建立一個(gè)最終的強(qiáng)分類器。使用Adaboost算法的優(yōu)
52、點(diǎn)是可以把重點(diǎn)放在有用的數(shù)據(jù)上,而不用著眼于那些影響檢測(cè)結(jié)果的數(shù)據(jù)上。使用Adaboost分類器可以排除一些不必要的訓(xùn)練數(shù)據(jù)特征,并將關(guān)鍵放在關(guān)鍵的訓(xùn)練數(shù)據(jù)上面。</p><p> Michael Jones和Paul Viola在2001年提出了Adaboost人臉檢測(cè)算法[7],此算法的核心思路是分類器的訓(xùn)練和選擇。剛開(kāi)始每一個(gè)樣本的權(quán)值是相等的,用h1進(jìn)行第一次分類,錯(cuò)誤的,增加樣本的權(quán)值,正確的樣本,減
53、小其權(quán)值。然后得到新的樣本U2。然后進(jìn)行第二次分類,訓(xùn)練得到h2弱分類器。按照這種方法,循環(huán)T次,得到了T個(gè)弱分類器,把這些分類器的權(quán)值疊加起來(lái),建立一個(gè)強(qiáng)的分類器。AdaBoost算法訓(xùn)練過(guò)程就是要找到最佳的Harr特征,然后訓(xùn)練出分類器,對(duì)人臉進(jìn)行檢測(cè)。</p><p> 本論文將訓(xùn)練過(guò)程分成以下幾個(gè)步驟:第一步:首先輸入樣本集,利用給定的矩形特征,計(jì)算出樣本特征,并得到矩形特征集;第二步:輸入上一步得到的
54、特征集,采用弱學(xué)習(xí)算法,得到一個(gè)閥值,把弱分類器與特征逐一對(duì)應(yīng)起來(lái),得到一些弱分類器集;第三步:輸入第二步的弱分類器集,利用正確率和錯(cuò)誤率,根據(jù)AdaBoost 算法選擇最佳的弱分類器建立最終的強(qiáng)分類器;第四步:輸入上一步的強(qiáng)分類器,把這些強(qiáng)分類器組合成級(jí)聯(lián)分類器;第五步:輸入不是人臉的照片,把強(qiáng)分類器作為臨時(shí)的級(jí)聯(lián)分類器,篩選并補(bǔ)充非人臉樣本,得到新的樣本。下圖為系統(tǒng)訓(xùn)練框架圖:</p><p> 圖3-1
55、 訓(xùn)練系統(tǒng)框架圖</p><p> 訓(xùn)練的樣本必須是人臉特寫,但是人臉姿態(tài)千變?nèi)f化,這就要求我們?cè)跇颖镜倪x擇過(guò)程中盡可能地做到廣泛。非人臉樣本的選擇有很多種。</p><p> 樣本訓(xùn)練步驟分為三步:第一步Haar特征的提??;第二步把Haar特征與弱分類器相互對(duì)應(yīng)起來(lái);第三步挑選出最優(yōu)的弱分類器。</p><p> (1) Haar特征的提取</p>
56、;<p> 圖3-2 常用的四種Haar特征[8]</p><p> 常用的Haar特征有4種,如圖3-2所示。除了這四種常見(jiàn)的特征,我們也可以設(shè)計(jì)出更多的特征。訓(xùn)練樣本的像素(24×24),以上四種特征所達(dá)到的個(gè)數(shù)為160000個(gè)以上。這么多的數(shù)據(jù),就要求我們更加龐大的計(jì)算任務(wù),所以AdaBoost算法訓(xùn)練過(guò)程非常的費(fèi)時(shí)間,這也正是我們以后研究需要改進(jìn)的問(wèn)題。</p>
57、<p> (2)弱分類器的生成</p><p> 在AdaBoost算法中,我們訓(xùn)練出的弱分類器可以是任何類型的,可以是基于決策樹(shù),基于隱馬爾科夫模型,也可以是基于神經(jīng)網(wǎng)絡(luò),比如說(shuō)弱分類器是基于線性神的網(wǎng)絡(luò)結(jié)構(gòu)模型,那么就要求AdaBoost算法每次都要建立多層感知器節(jié)點(diǎn)。每一個(gè)弱分類器都對(duì)應(yīng)Harr特征,并且都是根據(jù)它所對(duì)應(yīng)的Haar特征的參數(shù)來(lái)定義的。根據(jù)前面所說(shuō)的Haar特征的區(qū)域信息,然后統(tǒng)
58、計(jì)訓(xùn)練樣本就能夠得到相應(yīng)特征的參數(shù)。</p><p> (3)利用AdaBoost算法選取優(yōu)化的弱分類器</p><p> 我們所說(shuō)的AdaBoost算法,就是在訓(xùn)練過(guò)程中篩選出最佳的弱分類器,并且要給出計(jì)算權(quán)值的過(guò)程,如下圖所示:</p><p> 圖3-3 AdaBoost算法訓(xùn)練示意圖</p><p> 主要解決的問(wèn)題:目前,
59、人們對(duì)AdaBoost算法的研究和應(yīng)用領(lǐng)域,主要在分類器的研究問(wèn)題上,人們對(duì)Adaboost算法的研究帶來(lái)了很多實(shí)際效果,解決了很多問(wèn)題:比如分類問(wèn)題、多類型單一標(biāo)簽和多標(biāo)簽多類問(wèn)題等等。</p><p> 分析過(guò)程:Adaboost算法就是采用循環(huán)多次的訓(xùn)練,不斷強(qiáng)化分類器對(duì)數(shù)據(jù)分析的能力,簡(jiǎn)單地說(shuō)就是不斷強(qiáng)化簡(jiǎn)單分類器,最終建立一個(gè)強(qiáng)大的分類器的過(guò)程,其步驟在下面給出: 第一步:對(duì)多個(gè)樣本進(jìn)行訓(xùn)練。建立第一
60、個(gè)簡(jiǎn)單分類器,第二步是對(duì)第一步檢錯(cuò)的樣本進(jìn)行訓(xùn)練建立第二個(gè)簡(jiǎn)單分類器 ,第三步是將前兩步檢測(cè)錯(cuò)誤的樣本訓(xùn)練得到下一個(gè)分類器,最后是訓(xùn)練出強(qiáng)分類器。</p><p> Adaboosting算法有兩大問(wèn)題需要解決: 一是怎樣挑選訓(xùn)練集以及訓(xùn)練集的大??;二是怎樣組合弱分類器,使它們建立成一個(gè)強(qiáng)的分類器。 通過(guò)對(duì)上面兩個(gè)問(wèn)題的研究,我們改善了Adaboost算法: 第一步對(duì)訓(xùn)練樣本進(jìn)行加權(quán),篩選出較復(fù)雜的訓(xùn)練樣本,這
61、樣問(wèn)題就比較有針對(duì)性;第二步根據(jù)權(quán)值對(duì)分類器進(jìn)行分類,權(quán)重大的分類器效果比較好,反之亦然。 </p><p> 根據(jù)在線分配算法Schapire和Freund提出了Adaboost算法,對(duì)Adaboost算法做了深入的研究,比如檢錯(cuò)率和最優(yōu)迭代次數(shù)問(wèn)題[9]。這種方法與Boosting算法是不一樣的,Boosting算法必須要知道弱分類器的誤差即正確率和錯(cuò)誤率,而Adaboost算法不需要,Adaboost算法
62、是根據(jù)計(jì)算每個(gè)樣本的權(quán)重最終建立強(qiáng)分類器的。剛開(kāi)始每一個(gè)樣本的權(quán)值是相等的,用h1進(jìn)行第一次分類,錯(cuò)誤的,增加樣本的權(quán)值,正確的樣本,減小其權(quán)值。然后得到新的樣本U2。然后進(jìn)行第二次分類,訓(xùn)練得到h2弱分類器。按照這種方法,循環(huán)T次,得到了T個(gè)弱分類器,把這些分類器的權(quán)值疊加起來(lái),建立一個(gè)強(qiáng)的分類器。Adaboost算法訓(xùn)練過(guò)程就是要找到最佳的harr特征,然后訓(xùn)練出分類器,對(duì)人臉進(jìn)行檢測(cè)。</p><p>
63、Adaboost算法的詳細(xì)過(guò)程如下: </p><p> 1. 給定訓(xùn)練樣本集S,其中X和Y分別對(duì)應(yīng)于人臉樣本和非人臉樣本;T為訓(xùn)練的最大循環(huán)次數(shù); </p><p> 2. 初始化樣本權(quán)重為1/n ,即為訓(xùn)練樣本的初始概率分布; </p><p> 3. 第一次迭代: </p><p> 1) 訓(xùn)練樣本的概率分布相當(dāng)下,訓(xùn)練弱分類器
64、; </p><p> 2) 計(jì)算弱分類器的錯(cuò)誤率; </p><p> 3) 選取合適閾值,使得誤差最?。?</p><p> 4) 更新樣本權(quán)重值; </p><p> 4.經(jīng)T次循環(huán)后,得到T個(gè)弱分類器,按更新的權(quán)重疊加,最后建立強(qiáng)分類器。 </p><p> 根據(jù)Boosting算法Adaboost算
65、法做了很大的調(diào)整,Adaboost算法可以對(duì)弱學(xué)習(xí)獲得的簡(jiǎn)單分類器的錯(cuò)誤進(jìn)行一定的調(diào)整。一共循環(huán)了T次,每一次都要重新計(jì)算權(quán)值,根據(jù)權(quán)值重新劃分樣本,接著根據(jù)這個(gè)樣本分布對(duì)這個(gè)分布下的樣本使用弱學(xué)習(xí)算法得到建立一個(gè)一個(gè)弱分類器,每次迭代,對(duì)權(quán)重更新一次,采用的方法是:效果好的弱分類器減小其權(quán)值,效果差的弱分類器提高其權(quán)值。最后根據(jù)這些弱分類器的權(quán)值,求平均得到最終強(qiáng)分類器。</p><p> 3.2 Adab
66、oost算法的原理</p><p> 3.2.1 Adaboost算法基本原理</p><p> Adaboost是一種迭代算法,上一章已經(jīng)有所描述。這種方法的關(guān)鍵思路是是針對(duì)同一個(gè)訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),再把這些分類器組合起來(lái),建立一個(gè)強(qiáng)分類器。</p><p> 通過(guò)對(duì)每一個(gè)樣本集權(quán)值的改變得到新的訓(xùn)練集。起先每一個(gè)樣本具有相同的權(quán)值,訓(xùn)練得
67、到第一個(gè)弱分類器。加大檢測(cè)錯(cuò)誤樣本的權(quán)重,減小分類正確樣本的權(quán)值,這樣就得到了一個(gè)在新的樣本,然后多次循環(huán),在循環(huán)T次后,得到T個(gè)弱分類器,最后根據(jù)一定規(guī)則把這T個(gè)弱分類器的權(quán)重疊加起來(lái),得到最終的強(qiáng)分類器。</p><p> 3.2.2 Adaboost算法的具體步驟</p><p> 設(shè)輸入的n個(gè)訓(xùn)練樣本為:{(x1,y1),(x2,y2),L,(xn,yn)},其中xi是輸入的
68、訓(xùn)練樣本,yi屬于{0,1},分別表示正樣本和負(fù)樣本,其中正樣本數(shù)為L(zhǎng),負(fù)樣本數(shù)m,n=l+m,具體步驟如下[10]:</p><p> ?、艑?duì)每個(gè)樣本的權(quán)重wi初始化,i屬于D(i);</p><p> ?、茖?duì)每個(gè)t=1,L,T (T為弱分類器的個(gè)數(shù));</p><p> ?、侔褭?quán)重歸一化為一個(gè)概率分布
69、 (1)</p><p> ?、趯?duì)每個(gè)特征,訓(xùn)練一個(gè)弱分類器hj計(jì)算對(duì)應(yīng)所有特征弱分類器的加權(quán)錯(cuò)誤率 (2)</p><p> ?、圻x取最佳的弱分類器ht (最小錯(cuò)誤率):</p><p> ④按照這個(gè)最佳弱分類器,調(diào)整權(quán)重(3),其中,表示被正確地分類;,
70、表示被錯(cuò)誤地分類</p><p> ?、亲詈蟮膹?qiáng)分類器為:(4), (5)</p><p> 隨著算法的發(fā)展,目前Adaboost算法被廣泛的應(yīng)用在人臉檢測(cè)、目標(biāo)識(shí)別等領(lǐng)域,尤其在對(duì)人臉識(shí)別、汽車識(shí)別和駕駛員眨眼識(shí)別等方面的研究產(chǎn)生重大的意義。</p><p> 4 Opencv圖像處理軟件的介紹</p><p>
71、 4.1 OpenCV簡(jiǎn)介</p><p> 4.1.1 OpenCV的基本概念及應(yīng)用領(lǐng)域</p><p><b> ?。?) 基本概念</b></p><p> OpenCV的全稱是:Open Source Computer Vision Library。1999年,Intel建立了OpenCV現(xiàn)在由Willow Garage提供支持
72、[11]。OpenCV是一個(gè)基于BSD許可證授權(quán)(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),適用于很多操作系統(tǒng),比如Linux、Windows和Mac OS。它很高效,包含了很多C函數(shù)和少量 C++ 類,而且提供了很多接口,如Python、Ruby、MATLAB等語(yǔ)言,包含了圖像處理和智能計(jì)算機(jī)視覺(jué)方面的很多通用算法。</p><p> (2) 應(yīng)用領(lǐng)域:OpenCV的應(yīng)用領(lǐng)域很廣泛。如:人機(jī)互動(dòng)、物體識(shí)別、圖象分割、人
73、臉識(shí)別、動(dòng)作識(shí)別、運(yùn)動(dòng)跟蹤和機(jī)器人等領(lǐng)域。</p><p> 4.1.2 OpenCV的優(yōu)勢(shì)及項(xiàng)目歷史</p><p> ?。?) OpenCV的優(yōu)勢(shì)</p><p> 雖然計(jì)算機(jī)視覺(jué)不斷發(fā)展,但到現(xiàn)在仍然沒(méi)有標(biāo)準(zhǔn)API,而現(xiàn)在的關(guān)于計(jì)算機(jī)視覺(jué)軟件有很大的缺陷:第一是軟件代碼運(yùn)行慢,不穩(wěn)定,而且與別的庫(kù)不能兼容;第二以Halcon, Matlab Simuli
74、nk為例,消耗很高的商業(yè)成本;第三對(duì)硬件有較高的依賴性。建立標(biāo)準(zhǔn)的API便可以簡(jiǎn)化并解決這些問(wèn)題。</p><p> OpenCV圖像處理軟件一直為成為這樣的標(biāo)準(zhǔn)API而不斷努力[12]。OpenCV致力于真實(shí)世界的實(shí)時(shí)應(yīng)用,通過(guò)優(yōu)化的C代碼的編寫對(duì)其執(zhí)行速度帶來(lái)了可觀的提升,并且可以通過(guò)購(gòu)買Intel的IPP高性能多媒體函數(shù)庫(kù)(Integrated Performance Primitives)得到更快的處理
75、速度。下圖為OpenCV與現(xiàn)在其他主流視覺(jué)函數(shù)庫(kù)的性能比較。</p><p> 圖4-1 為OpenCV與現(xiàn)在其他主流視覺(jué)函數(shù)庫(kù)的性能比較圖</p><p> ?。?) OpenCV的項(xiàng)目歷史</p><p> 1999年1月,CVL項(xiàng)目啟動(dòng)。主要研究目標(biāo)是人機(jī)界面問(wèn)題,可以被UI調(diào)用的實(shí)時(shí)計(jì)算機(jī)視覺(jué)庫(kù),為Intel處理器做了特定優(yōu)化。 </p>
76、;<p> 2000年6月,發(fā)布了首個(gè)開(kāi)源版本的OpenCV alpha 3。 </p><p> 2000年12月,發(fā)布了適用于linux平臺(tái)的OpenCV beta 1。在此期間,各種研究仍在繼續(xù)。 </p><p> 2006年,發(fā)布了適用于Mac OS系統(tǒng)的OpenCV 1.0。 </p><p> 2009年9月,Open
77、CV 1.2(beta 2.0)發(fā)布。 </p><p> 2009年10月1日,Version 2.0發(fā)布。 </p><p> 2010年12月6日,OpenCV 2.2發(fā)布。 </p><p> 2011年8月,OpenCV 2.3發(fā)布。 </p><p> 2012年4月2日,發(fā)布OpenCV 2.4. &l
78、t;/p><p> OpenCV軟件具有涵蓋了500 多個(gè)C函數(shù)的跨平臺(tái)的中、高層API,而且能夠調(diào)用某些外部庫(kù),但它并不依賴于它們。OpenCV 是完全免費(fèi)的,它使用類BSDlisence,為Intel Integrated Performance Primitives(IPP)提供了透明接口。此軟件的優(yōu)點(diǎn)是如果有為特定處理器優(yōu)化的IPP 庫(kù),OpenCV可以在運(yùn)行時(shí)自動(dòng)加載這些庫(kù)。軟件關(guān)于視覺(jué)處理算法的提供廣泛
79、而且豐富,而且部分可以用C語(yǔ)言編寫,具有開(kāi)源性的特征,如果處理得當(dāng),可以不用添加新的外部支持,可以獨(dú)立的對(duì)代碼進(jìn)行編譯鏈接并執(zhí)行,在算法的移植方面,OpenCV也起到很大的作用??梢詫⒋a移植到單片機(jī)系統(tǒng)和DSP系統(tǒng)中。</p><p> 4.2 Opencv在vc6.0下的安裝與配置</p><p> 4.2.1 OpenCV的安裝</p><p> 假
80、如要將OpenCV安裝到C:\Program Files\OpenCV。在安裝時(shí)選擇“將\OpenCV\bin加入系統(tǒng)變量”(Add\OpenCV\bin to the systerm PATH)。(下面附圖為OpenCV 1.0安裝界面):</p><p> 圖4-2 安裝目錄界面</p><p> 圖4-3 添加路徑界面</p><p> 4.2.2 配
81、置Windows環(huán)境變量</p><p> 檢查C:\Program Files\OpenCV\bin是否已經(jīng)被加入到環(huán)境變量PATH,如果沒(méi)有,請(qǐng)加入。加入后需要注銷當(dāng)前Windows用戶后重新登陸(或重啟)才能生效。下圖為啟動(dòng)環(huán)境變量界面:</p><p> 圖4-4 系統(tǒng)屬性啟動(dòng)界面</p><p> 圖4-5 添加環(huán)境變量界面</p>&
82、lt;p> 4.2.3 配置Visual C++ 6.0</p><p> (1)系統(tǒng)功能設(shè)全局設(shè)置[13]</p><p> 打開(kāi)Visual C++ 6.0,選擇菜單Tools->Options->Directories:先設(shè)置lib路徑,選擇Library files,在下方填入路徑:C:\Program Files\OpenCV\lib,然后選擇inclu
83、de files,在下方填入路徑:</p><p> C:\Program Files\OpenCV\cxcore\include</p><p> C:\Program Files\OpenCV\cvaux\include</p><p> C:\Program Files\OpenCV\ml\include</p><p> C:
84、\Program Files\OpenCV\otherlibs\highgui</p><p> C:\Program Files\OpenCV\cv\include</p><p> C:\Program Files\OpenCV\otherlibs\cvcam\include</p><p> 圖4-6 添加路徑界面</p><p&g
85、t; 然后選擇source files[14],在下面填入路徑信息:</p><p> C:\Program Files\OpenCV\cv\src</p><p> C:\Program Files\OpenCV\otherlibs\highgui</p><p> C:\Program Files\OpenCV\cvaux\src</p>
86、<p> C:\Program Files\OpenCV\cxcore\src</p><p> C:\Program Files\OpenCV\otherlibs\cvcam\src\windows</p><p> 最后點(diǎn)擊“ok”,完成設(shè)置。</p><p> (2) 項(xiàng)目設(shè)置[15]</p><p> 每次創(chuàng)建一個(gè)
87、OpenCV的VC Project,都要給它指定相應(yīng)的lib。菜單:Project->Settings,然后將Setting for選為All Configurations,然后選擇右邊的link標(biāo)簽,在Object/library modules附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib,也可以只添加需要的lib。</p><
88、;p> 5 人臉檢測(cè)功能的實(shí)現(xiàn)</p><p> 5.1 Harr特征的提取</p><p> 下圖為Rainer Lienhart等人給出了擴(kuò)展的Haar特征圖:</p><p> 圖5-1 Harr特征圖</p><p> 我們把Haar特征分為三類:邊緣特征、線性特征、中心特征和對(duì)角線特征[16],組合成特征模板。
89、特征模板里包黑色跟白色兩種類型的矩形,而且我們規(guī)定該模板的特征值等于白色矩形像素和值減去黑色矩形像素和值。我們?cè)诖_定了特征形式以后,Harr- like特征的數(shù)量就取決于訓(xùn)練樣本圖像矩陣的大小,特征模板在子窗口內(nèi)任意放置,一種形態(tài)稱為一種特征,找出所有子窗口的特征是進(jìn)行弱分類訓(xùn)練的關(guān)鍵和基礎(chǔ)。</p><p><b> 5.2 積分圖</b></p><p>
90、積分圖方法是一種快速計(jì)算RectSum的方法[17]。我們對(duì)一幅圖像的每個(gè)象素灰度定義為i( x, y ) ,則該幅圖像的積分圖中的每個(gè)像素值為ii,對(duì)于一幅圖像在任意點(diǎn)的積分圖值,分別對(duì)行值和列值的進(jìn)行累加,通過(guò)一次循環(huán)得到:</p><p> s ( x , y ) = s ( x , y - 1 ) + i ( x , y ) (6)</p><
91、p> i i ( x , y ) = i i ( x - 1 , y ) + s ( x , y ) (7)</p><p> 其中,s ( x , y )為點(diǎn)( x , y )所在位置的列積分值,但不包含( x , y )點(diǎn)的值.迭代初始時(shí)s ( x , y - 1 )= 0(8),i i ( x , y ) = 0(9)。圖5-2(a)中點(diǎn)( x , y )的積分
92、圖值為灰色矩形區(qū)域的象素灰度值求和.利用積分圖可以方便地對(duì)圖像中任意一個(gè)矩形內(nèi)的灰度值求和,如圖5-2(b)所示:</p><p> 圖5-2 點(diǎn)(x, y)積分圖像值和象素灰度值的求和圖[18]</p><p> 5.3 Adaboost人臉檢測(cè)算法</p><p> Adaboost人臉檢測(cè)方法過(guò)程用到了積分圖和級(jí)聯(lián)檢測(cè)器.此方法的核心:首先訓(xùn)練出大量
93、的簡(jiǎn)單分類器,這種分類器的分類比較差,然后根據(jù)一定規(guī)則一疊加(boost),最后建立一個(gè)強(qiáng)分類器最后這個(gè)分類器的分類能力最強(qiáng).然后再把這些得到的強(qiáng)分類器組合成級(jí)聯(lián)分類器,對(duì)圖像進(jìn)行檢測(cè).</p><p> Adaboost算法描述如下:假設(shè)有n個(gè)訓(xùn)練樣本從( x1, y1 )到( xn, yn )的訓(xùn)練集,其中yi= { 0, 1}, ( i = 1, 2, , n)1和0分別代表真和假.訓(xùn)練集中一共有L個(gè)人臉
94、樣本和M個(gè)非人臉樣本,把待測(cè)圖片分成K個(gè)特征,用fj( · )表示,這里1≤j≤K。xi代表第i個(gè)訓(xùn)練樣本,{ f1( xi) , f2( xi) , , fj( xi) , , fk( xi)}為此樣本的K個(gè)特征的特征值,對(duì)每一個(gè)輸入的特征的特征值fj有一個(gè)簡(jiǎn)單二值分類器。第j個(gè)特征的弱分類器由一個(gè)指示不等式方向的偏置pj(只有±1兩種情況)、一個(gè)閾值θj和一個(gè)特征值fj構(gòu)成。第j個(gè)特征為真,則得到這個(gè)樣本為真,用
95、hj= 1表示,如果是假樣本則hj= 0。訓(xùn)練就是分析真假樣本的過(guò)程,篩選出分類檢錯(cuò)率最小的T個(gè)弱分類器,然后將它們疊加成最后的強(qiáng)分類器。下面是分類器訓(xùn)練過(guò)程:</p><p> (1)初始化訓(xùn)練樣本的誤差權(quán)值,設(shè)wt, i為第t次循環(huán)中第i個(gè)樣本的誤差權(quán)重: 對(duì)于yi= 1的樣本wt, i= 1 / ( 2L );對(duì)于yi= 0的樣本wt,i= 1/(2M);for t=1, ,T。</p>&
96、lt;p> (2)對(duì)權(quán)值進(jìn)行歸一化處理,使得wt, i為wt, i←wt, i/ ∑ni =1wt,i;根據(jù)每個(gè)特征j,訓(xùn)練得到對(duì)應(yīng)的弱分類器,然后得到閾值θj和偏置pj,最終使得特征j的誤差函數(shù)εj=∑ni = 1wt, i| hj( xi) - yi|經(jīng)過(guò)本次循環(huán)達(dá)到最小值;從上一步確定的所有弱分類器中找出一個(gè)具有最小誤差函數(shù)的弱分類器ht,其誤差函數(shù)為εt,并把該弱分類器ht加入到強(qiáng)分類器中;更新每個(gè)樣本所對(duì)應(yīng)的權(quán)重,確定
97、的方法為:若第i個(gè)樣本xi被正確分類,則ei= 0;反之ei= 1,βt=εt/ ( 1-εt) 。</p><p> (3) 循環(huán)T次后,能夠得到由T個(gè)弱分類器疊加建立的最終強(qiáng)分類器</p><p><b> ?。?)</b></p><p> 這里αt= log (1/βt) [19]。</p><p> 雖然
98、級(jí)數(shù)越來(lái)越多,但是計(jì)算的數(shù)據(jù)卻在減少,系統(tǒng)運(yùn)行的速度也在提升,其中的原因是:因?yàn)閷?qiáng)分類器疊加在一起建立成一個(gè)級(jí)聯(lián)分類器的過(guò)程,每次的權(quán)重都要進(jìn)行調(diào)整,為人臉的圖像通過(guò)了樣本,而非人臉樣本則被拒之門外,由于上一步使用的舉行特征匹配數(shù)量少,計(jì)算速度非???而后面通過(guò)檢測(cè)的人臉樣本越來(lái)越少,所以檢測(cè)的速度變得更快,這種分級(jí)方法采用的思想遵循先重后輕規(guī)則。</p><p> 5.4 用OpenCV實(shí)現(xiàn)Adaboos
99、t算法的人臉檢</p><p> OpenCV(Open Source Computer Vision Library)是一個(gè)基于BSD許可證授權(quán)(開(kāi)源)發(fā)行的跨平臺(tái)圖像處理軟件,適用于很多操作系統(tǒng),比如Linux、Windows和Mac OS。它很高效,包含了很多C函數(shù)和少量C++類,而且提供了很多接口。</p><p> 5.4.1O OpenCV中Haar分類器的數(shù)據(jù)結(jié)構(gòu)<
100、;/p><p> 下面給出了Haar分類器中的結(jié)構(gòu)體:</p><p> CvHaar Classifier Cascade結(jié)構(gòu)形式如下:</p><p> typedef struct CvHaar Classifier Cascade</p><p><b> {</b></p><p>
101、 int flags; /*標(biāo)志*/</p><p> int count;/*分級(jí)分類器中強(qiáng)分類器的數(shù)量*/</p><p> CvSize orig_win_dow_size;/*訓(xùn)練中原始目標(biāo)的大小*/</p><p> CvSize real_window_size;/*待檢測(cè)物體的大小*/</p><p> double
102、scale; /*Haar塊縮放的尺寸*/</p><p> CvHaar Stage Classifier * stage_classifier;/*定義強(qiáng)分類器數(shù)組*/</p><p> CvHidHaar ClassifierCascade * hid_cas;</p><p> }CvHaarClassifierCascade;</p>
103、<p> CvHaar Stage Classifier結(jié)構(gòu)形式如下: </p><p> #define CV-HAAR-FEATURE-MAX 3</p><p> typedef struct CvHaar Stage Classifier</p><p><b> {</b></p><p>
104、 int count;/*構(gòu)成強(qiáng)分類器的弱分類器的數(shù)量*/</p><p> float threshold; /*疊加分類器的閾值*/</p><p> CvHaar Classifier * classifier;/*定義分類器數(shù)組*/</p><p> int parent;</p><p> int child;</p&
105、gt;<p><b> int next;</b></p><p> }CvHaar Stage Classifier;</p><p> 5.4.2 OpenCV人臉檢測(cè)模塊及相關(guān)函數(shù)</p><p> Adaboost算法的人臉檢測(cè)器主要包括訓(xùn)練和檢測(cè)2個(gè)模塊,下圖為檢測(cè)模塊的流程。</p><p
106、> 圖5-3 檢測(cè)程序流程圖</p><p> 下面對(duì)OpenCV中的檢測(cè)模塊進(jìn)行簡(jiǎn)單的介紹。</p><p> ?。?) 函數(shù)LoadHaar Classifier Cascade。用來(lái)裝載級(jí)聯(lián)分類器,格式如下:CvHaar Classifier Cascade * cvLoadHaar Classifier Cascade (const char * directory,
107、CvSize orig_win_dow_size);其中directory為級(jí)聯(lián)分類器文件的路徑。Orig_window_size為級(jí)聯(lián)分類器檢測(cè)目標(biāo)的尺寸大小。</p><p> (2) 因?yàn)镺penCV只可以處理內(nèi)部?jī)?yōu)化格式的分類器。第二步把分類器轉(zhuǎn)換成OpenCV視覺(jué)庫(kù)內(nèi)部格式,這個(gè)是關(guān)鍵步驟,不可缺少。</p><p> ?。?) 整個(gè)檢測(cè)過(guò)程中需要用到函數(shù)Haar Detect
108、 Objects。這個(gè)函數(shù)是針對(duì)某目標(biāo)物體訓(xùn)練的級(jí)聯(lián)分類器,作用是在圖像中找到包含目標(biāo)物體的矩形區(qū)域,最后把這些區(qū)域作為列的矩形框返回。函數(shù)格式為CvSeq * cvHaar Detect Objects ( const CvArr*image, CvHaar Classifier Cascade * cascade,CvMemStorage * storage, double scale_factor = 1.1, int min_n
109、eighbors = 3,int flags = 0, CvSize min_size = cvSize(0, 0) );其中image代表被檢測(cè)的圖像。 cascade haar是級(jí)聯(lián)分類器內(nèi)部的標(biāo)志形式。storage用來(lái)存儲(chǔ)檢測(cè)到的一系列候選目標(biāo)矩形框的內(nèi)存區(qū)域。scale_factor是在前后兩次相繼的掃描中,搜索窗口的比例系數(shù)。min_neighbors是構(gòu)成檢測(cè)目標(biāo)的相鄰矩形的最小個(gè)數(shù)(默認(rèn)為- 1)。flags是操作方式。
110、min_size是檢測(cè)窗口的最小尺寸。默認(rèn)情況下被設(shè)為分類器訓(xùn)練</p><p> ?。?) 標(biāo)定要用到函數(shù)RunHaar Classifier Cascade。該函數(shù)在給定位置的圖像中運(yùn)行級(jí)聯(lián)分類器,用于對(duì)單幅圖片進(jìn)行檢測(cè)。其格式為int cvRunHaar Classifier Cascade ( CvHaarClassifierCascade * cascade,CvPoint pt,int start_s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文——基于asm的人臉檢測(cè)
- 基于Adaboost方法的人臉檢測(cè).pdf
- 基于半邊臉的人臉檢測(cè)——畢業(yè)論文
- 基于Gentle Adaboost算法的人臉檢測(cè)研究.pdf
- 基于半邊臉的人臉檢測(cè)——畢業(yè)論文
- 基于Adaboost的人臉檢測(cè)技術(shù)研究.pdf
- 基于AdaBoost的人臉檢測(cè)改進(jìn)算法.pdf
- 基于Adaboost算法的人臉檢測(cè)的研究.pdf
- 基于AdaBoost的人臉檢測(cè)研究與實(shí)現(xiàn).pdf
- 基于AdaBoost改進(jìn)的人臉檢測(cè)算法研究.pdf
- 基于Adaboost學(xué)習(xí)算法的人臉檢測(cè)方法研究.pdf
- 基于AdaBoost算法的人臉檢測(cè)方法的研究.pdf
- 基于Gentle Adaboost的人臉檢測(cè)算法研究.pdf
- 基于連續(xù)Adaboost算法的人臉檢測(cè)研究.pdf
- 基于Adaboost算法的人臉檢測(cè)研究及實(shí)現(xiàn).pdf
- 基于膚色和AdaBoost算法的人臉檢測(cè).pdf
- 基于AdaBoost算法的人臉檢測(cè)研究及DSP實(shí)現(xiàn).pdf
- 基于群體智能與AdaBoost算法的人臉檢測(cè)研究.pdf
- 基于膚色模型和AdaBoost算法的人臉檢測(cè)研究.pdf
- 基于膚色分割與AdaBoost算法的人臉檢測(cè)研究.pdf
評(píng)論
0/150
提交評(píng)論