![人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)_第1頁](http://file4.renrendoc.com/view9/M03/13/2B/wKhkGWcjEdOAGsnUAACVAGOe06U469.jpg)
![人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)_第2頁](http://file4.renrendoc.com/view9/M03/13/2B/wKhkGWcjEdOAGsnUAACVAGOe06U4692.jpg)
![人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)_第3頁](http://file4.renrendoc.com/view9/M03/13/2B/wKhkGWcjEdOAGsnUAACVAGOe06U4693.jpg)
![人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)_第4頁](http://file4.renrendoc.com/view9/M03/13/2B/wKhkGWcjEdOAGsnUAACVAGOe06U4694.jpg)
![人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)_第5頁](http://file4.renrendoc.com/view9/M03/13/2B/wKhkGWcjEdOAGsnUAACVAGOe06U4695.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
四川師范大學(xué)本科畢業(yè)設(shè)計人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)學(xué)生姓名院系名稱計算機科學(xué)學(xué)院專業(yè)名稱軟件工程班級學(xué)號指導(dǎo)教師完成時間2016年5月10日人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)內(nèi)容摘要:本設(shè)計旨在開發(fā)一個從靜態(tài)圖像中檢測人臉及對檢測到的人臉圖像進行歸一化的軟件系統(tǒng),具體內(nèi)容包括:1.學(xué)習(xí)OpenCV庫函數(shù)的調(diào)用和內(nèi)在原理及相關(guān)編程環(huán)境,掌握使用該庫的庫函數(shù)和接口。在學(xué)習(xí)過程中了解人臉圖像歸一化的目和歸一化的主要內(nèi)容與方法。制定了本設(shè)計采用的歸一化方案,編程實現(xiàn)歸一化算法,實現(xiàn)一個基于OpenCV的人臉檢測和圖像歸一化系統(tǒng)。2.研究了人臉檢測原理和算法,學(xué)習(xí)了OpenCV內(nèi)部封裝的人臉人眼檢測的算法原理。自己編程實現(xiàn)了一種基于人類皮膚顏色特征的人臉檢測算法并對人眼檢測方法中的灰度投影法進行了學(xué)習(xí)和改進。實現(xiàn)了手動定位人眼在圖像中的位置,然后根據(jù)雙眼位置進行人臉圖像旋轉(zhuǎn)和裁剪的歸一化方法。3.本文首先概述人臉檢測研究背景、人臉檢測的必要性、現(xiàn)狀及發(fā)展趨勢。然后介紹了OpenCV人臉檢測算法和膚色人臉檢測算法的原理和數(shù)學(xué)模型。之后對本設(shè)計實現(xiàn)的人臉檢測和裁剪系統(tǒng)的總體設(shè)計方案和詳細設(shè)計方案進行了論述。最后利用KNN最近鄰分類器,對歸一化前后的人臉圖像進行了人臉識別實驗。實驗結(jié)果顯示,利用本系統(tǒng)可以有效地進行人臉檢測和歸一化,歸一化步驟可以提高人臉識別率。關(guān)鍵詞:OpenCV人臉檢測膚色人眼檢測人臉歸一化ThedesignandimplementationoffacedetectionandcuttingsystemAbstract:Thispaperaimsatdevelopafacedetectionandanormalizationsystem.LearningTheOpenCV(anopencomputervisionlibrary)andtheprogrammingenvironment,masteringthelibrary’sfunctionsandinterface.Getthepurposeofnormalizingandlearnsomeimportantmethodandalgorithm.Aschemeabouttheimplementonthissystemshouldbemade.ThenimplementthedetectionsystembaseonOpenCVlibrary,andfinishanormalizationalgorithmbymyself.IlearnsomeinternalencapsulationbasedonOpenCVbyresearchingsamefacedetectionalgorithmofOpenCV.DuringthestudyIearnedtheimportantoffaceDetection.SoIplantoimplementonedetectionalgorithmbaseonskincolorandimprovethehumaneyeLocationmethodnamedgray-levelprojectionmethod.Themanualpositioningofthehumaneyepositionwascompleted,andthenrotatingandcuttingaccordingtothebinocularlocation.FirstofallIwillgiveabriefdescribethehistory,presentsituationandthetrendoffacedetectioninthefutureInthepaper.ThentheprincipleandmathematicalmodeloftwokindsoffacedetectionalgorithmsbasedonOpenCVandskincolormustbeexplained.Afterthatthispapertalkabouttheoveralldesignofthesystemdesignanddetaildesignofthissystem.Finally,usethenearestneighborclassifier,recognizethebeforeandafternormalizedfaceimage.theexperimentprovesthattheafternormalizedfacerecognitionratehigherthantheotherone.Keywords: OpenCVfacedetectionskincoloreyeLocationnormalization目錄118781概述 1127271.1研究目的和意義 1314141.2研究背景 1130121.2.1國內(nèi)現(xiàn)狀 1279981.2.2國外現(xiàn)狀 11301.3文章的結(jié)構(gòu) 2318682預(yù)備知識及原理說明 2121112.1人臉檢測定義 335212.2人臉特點和人臉開檢測的意義 330942.2.1人臉的自然特性 322522.2.2進行人臉檢測與裁剪必要性 375502.3一些常用的人臉檢測技術(shù) 4105212.3.1基于顯性特征人臉檢測 4109152.3.2基于隱式特征人臉檢測 4298602.4本章小結(jié) 5142613XFace系統(tǒng)總體設(shè)計 593333.1XFace系統(tǒng)設(shè)計 5124943.1.1XFace系統(tǒng)框圖 5303773.2功能說明 5318313.2.1讀取顯示文件 5239963.2.2人臉檢測 6147693.2.3檢測結(jié)果歸一化 6243453.2.4歸一化結(jié)果保存 6220093.3本章小結(jié) 6172164XFace系統(tǒng)詳細設(shè)計 6123234.1XFace系統(tǒng)總體設(shè)計 630734.1.1XFace系統(tǒng)流程 637804.1.2XFace系統(tǒng)的功能模塊 724544.2XFace系統(tǒng)算法詳細描述 8320584.2.1OpenCV人臉檢測法詳細描述 8280804.2.2膚色檢測模型詳細描述 1248914.2.3歸一化算法詳細描述 14296064.3XFace系統(tǒng)詳細設(shè)計 18154.3.1XFace系統(tǒng)關(guān)鍵類 18121394.3.2XFace系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu) 19183024.4章小結(jié) 20248305XFace系統(tǒng)實現(xiàn) 20129935.1OpenCV人臉檢測模塊實現(xiàn) 20226265.1.1EmguCV概述 20301275.1.2EmguCV封裝OpenCV 2057405.1.3EmguCV安裝 2283815.1.4OpenCV人臉定位 22309475.2膚色人臉檢測模塊實現(xiàn) 2353955.2.1二值化圖像得到人臉候選區(qū) 23298995.2.2候選膚色區(qū)域篩選 2446685.3歸一化實現(xiàn) 24142865.3.1灰度投影法定位人眼 24292745.3.2旋轉(zhuǎn)人臉圖像 2646375.3.3裁剪歸一化。 2643655.4本章小結(jié) 26215776XFace系統(tǒng)運行 27313316.1系統(tǒng)運行 27268426.2XFace系統(tǒng)對人臉識別率的提高。 28109006.3本章小結(jié) 28285967總結(jié)與展望 28113537.1總結(jié) 2844887.2展望 2948838致謝 2913280參考文獻 30人臉檢測與裁剪系統(tǒng)的設(shè)計與實現(xiàn)1概述1.1研究目的和意義人臉檢測(FaceDetection)就是查找圖像中人臉的位置,大小及數(shù)量REF_Ref755\w\h[1]。裁剪就是將檢測到的人臉進行旋轉(zhuǎn)亮度等歸一化方法來得到可以用于計算機人臉識別的標(biāo)準(zhǔn)化人臉圖像樣本,研究人臉檢測和裁剪的目的是為了更好的進行人臉識別。意義一:在自拍美圖、人臉識別、無人駕駛、人工智能等技術(shù)被廣泛用于生活的背后始終有一個默默無聞的技術(shù)在支撐著他們的發(fā)展,那就是人臉的檢測。人臉檢測與識別的關(guān)系就好比人在處理眼睛看到的對象一樣我們先需要對看到的對象進行分類然后才能在該類下了解它的具體特性。同樣首先我們需要人臉檢測來幫助弄清楚對象是什么類,然后才可以知道它的具體內(nèi)容。意義二:人臉檢測可以降低對人臉樣本的采樣的環(huán)境要求,想象一下如果我們?yōu)榱俗R別某人而需要他或她在鏡頭前表情僵硬的一動也不動的才能采集到滿足要求的人臉。與能從一張隨便拍攝的圖片就能檢測到人臉的采樣條件而言,人臉檢測在降低采樣環(huán)境上著實起到了很大作用。1.2研究背景1.2.1國內(nèi)現(xiàn)狀從全球的人臉識別市場發(fā)展來看,中國現(xiàn)在正處于巔峰時刻。如今從事人臉識別的公司有200家。今年中科院人臉識別團隊將人臉識別技術(shù)運用于鐵路安全檢測系統(tǒng)這是應(yīng)用上取得的一大進步。徐州市人事考試辦公室也首次應(yīng)用了人臉識別技術(shù)機考防范及排查替考還有目前支付寶已經(jīng)在某些移動端上也能完成刷臉支付了。學(xué)術(shù)上微軟亞洲研究院視覺計算組同美國ImageNet計算機視覺組織進行挑戰(zhàn)。微軟亞洲研究院視覺計算組的研究員們憑借深層神經(jīng)網(wǎng)絡(luò)技術(shù)的最新突破,以絕對優(yōu)勢獲得圖像分類、圖像定位以及圖像檢測全部三個主要項目的冠軍REF_Ref2522\w\h[2]。同時,在另一項圖像識別挑戰(zhàn)賽MSCOCO中同樣取得了很好的成績,擊敗了來自企業(yè)、學(xué)界和研究機構(gòu)的眾多參賽者REF_Ref2522\w\h[2]。相信在將來人臉檢測技術(shù)會越來越多的應(yīng)用到生活場景中。我很幸運的選擇了人臉檢測歸一化系統(tǒng)的設(shè)計與實現(xiàn)作為本次的畢業(yè)選題。1.2.2國外現(xiàn)狀最早的二維圖像的統(tǒng)計模式識別開始于20世紀(jì)50年代。最早的三維機器視覺的研究始于60年代。1977年,MIT人工智能實驗室正式開設(shè)”computervision”課程。全球性的研究熱潮于80年代開始,不久computervision獲得了巨大發(fā)展,該領(lǐng)域的各種新概念、新理論不斷出現(xiàn)。目前在海外,機器視覺人臉檢測系統(tǒng)在很多方面已經(jīng)得到了普遍的應(yīng)用,而且其產(chǎn)品在很多行業(yè)中有著舉足輕重的地位。目前大多數(shù)應(yīng)用集中在半導(dǎo)體及電子行業(yè)。可以這樣說computervision現(xiàn)在國內(nèi)與國外對于人臉檢測計算機視覺方面研發(fā)成果處于并駕齊驅(qū)、不相上下的地步。1.3文章的結(jié)構(gòu)本文共為八個主要部分:概述,這章主要說明了人臉檢測和裁剪系統(tǒng)的必要性和重要性,主要從市場和發(fā)展前景來論述為什么進行人檢測和裁剪的研究。預(yù)備知識和原理說明,如同只有站在巨人的肩膀上才能看的更遠才能一樣,要更好的了解這項技術(shù)就必須要了解一些準(zhǔn)備知識??傮w設(shè)計,主要使用結(jié)構(gòu)圖來說明本人臉檢測與裁剪系統(tǒng)包括的主要功能。詳細設(shè)計,用功能模塊圖來說明系統(tǒng)的工作流程和重要算法原理,并通過系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu)和關(guān)鍵類介紹系統(tǒng)詳細設(shè)計是如何實現(xiàn)的。系統(tǒng)實現(xiàn),本章對Emgucv進行了概要描述,主要實現(xiàn)了OpenCV、膚色定位人臉區(qū)域和對檢測到人臉進行歸一化功能。系統(tǒng)運行及歸一化對識別率的影響實驗,說明人臉檢測和裁剪系統(tǒng)在對靜態(tài)圖像檢測歸一化歸一方面所做的工作??偨Y(jié)篇,對該系統(tǒng)進行了綜合評述??偨Y(jié)系統(tǒng)做到了什么,同時還提出了一些系統(tǒng)可能存在的不足及系統(tǒng)沒做到什么和對系統(tǒng)改進期望。致謝,對所有幫助我的人和組織表示感謝。最后是本文所參考的各種國內(nèi)外有價值的論文、圖書、期刊、和網(wǎng)絡(luò)技術(shù)博客資料列表。2預(yù)備知識及原理說明在開發(fā)人臉檢測與裁剪系統(tǒng)之前我們必須要了解一些關(guān)于人臉檢測的預(yù)備知識。比如了解什么是人臉檢測及人臉檢測定義,還需要了解為何進行檢測和裁剪及這樣做的意義。同時還應(yīng)該了解一些關(guān)于現(xiàn)在常用的一些檢測技術(shù)。2.1人臉檢測定義人臉檢測:在實際中人臉檢測主要用來預(yù)先處理需要進行人臉識別的圖像,它的主要任務(wù)就是在圖像中準(zhǔn)確標(biāo)定出人臉的位置和大小。人臉檢測就是把人臉圖像中包含的眾多的特征,如結(jié)構(gòu)的特征、直方圖的特征、人臉顏色的特征、及Haar特征等對檢測人臉有用的信息挑出來,并利用這些特征實現(xiàn)人臉檢測REF_Ref2663\w\h[3]。2.2人臉特點和人臉開檢測的意義2.2.1人臉的自然特性人臉和人的其它生物特征一樣從出生就會伴其一生,人臉的唯一性和難復(fù)制性為身份鑒別提供了必要的前提。因為如果現(xiàn)實中存在兩張完全相同的人臉那么人臉識別就無法進行判斷。與其它類型的生物識別比較人臉識別還具有:直接性:就是指和人類辨別人一樣主要是通過人臉來區(qū)別,而不需要進行種種轉(zhuǎn)換運算。非接觸性:用戶不需要像采集指紋那樣需要和設(shè)備直接接觸就才能獲取圖像;并發(fā)性:在同一張圖片或者圖像中我們可以同時檢測多個人臉;唯一性:這是我們可以根據(jù)人臉達到識別身份的必要前提。每個人的臉具有與他人不同的特點而這些是唯一的,不會存在兩個目標(biāo)臉可以是完全相同的。2.2.2進行人臉檢測與裁剪必要性意義一:我們知道圖像對于計算機而言就是一串一串二進制數(shù)而且他的保存十分耗費資源。針對安全監(jiān)測視頻圖像中無人的景象是無用的,那么人臉檢測則可以在檢測到人臉時才對圖像進行存儲這樣既節(jié)約資源又可以提高圖像的有用性。意義二:在自拍美圖、人臉識別、無人駕駛、人工智能等技術(shù)被廣泛用于生活的背后始終有一個默默無聞的技術(shù)在支撐著他們的發(fā)展,那就是人臉的檢測。沒有人臉檢測技術(shù)的支持不會有計算機人臉識別的產(chǎn)生。人臉檢測與識別的關(guān)系就好比人在處理眼睛看到的對象一樣我們先需要對看到的對象進行分類然后才能在該類下了解它的具體特性。同樣首先我們需要人臉檢測來幫助弄清楚對象是什么類,然后才可以知道它的具體內(nèi)容。意義三:人臉檢測可以降低人臉識別前對人臉樣本的采樣條件,想象一下如果我們?yōu)榱俗R別某人而需要他或她在鏡頭前表情僵硬的一動也不動的才能采集到滿足要求的人臉。與能從一張隨便拍攝的圖片就能檢測到人臉的采樣條件而言,人臉檢測在降低采樣環(huán)境上著實起到了很大作用。2.3一些常用的人臉檢測技術(shù)2.3.1基于顯性特征人臉檢測所謂基于顯性特征人臉檢測是指人肉眼就可以采集出來的的特征而不需要進行各種處理的特征,如五官結(jié)構(gòu),人臉皮膚顏色,面部輪廓等五官分布法是根據(jù)人臉五官雙眼、眉毛、耳朵、鼻子、嘴巴在人臉的位置分布規(guī)則對圖像進行掃描來檢測人臉?;谀w色的人臉檢測是指膚色在去除亮度的色度空間內(nèi)具有內(nèi)聚性我們可以根據(jù)對大量膚色統(tǒng)計發(fā)現(xiàn)膚色會內(nèi)聚到某個范圍內(nèi)從而可以幫助我們將皮膚區(qū)域同其他背景中分離出來。其優(yōu)點是檢測快速原理簡單而且具有姿態(tài)不變性?;趯ΨQ性的人臉檢測我們知道正面人臉長寬比會在一定范圍內(nèi),而超過這個范圍是人臉的概率比較小可以不予考慮?;陲@性特征的檢測算法復(fù)雜度低檢測效率高。但同時也會有相當(dāng)高的檢誤率但總的來說基于顯示特征的人臉檢測方法是比較容易實現(xiàn)的。2.3.2基于隱式特征人臉檢測隱式特征的方法就是預(yù)先讓分類器對大量的人臉和非人臉樣本對進行學(xué)習(xí),然后再用學(xué)習(xí)好的分類器檢測一個新人臉看是否為人臉。如果送檢人臉通過分類器的所有檢測,則確認(rèn)為人臉否則不是人臉。典型例子有以下幾種:基于人工神經(jīng)網(wǎng)絡(luò)的方法人工神經(jīng)網(wǎng)絡(luò)和人自身處理信號的過程類似大致過程為:當(dāng)大腦或者感受器接收到某個來自外界的刺激,神經(jīng)細胞就通神經(jīng)結(jié)構(gòu)將信息傳遞到其他細胞然后在到其他細胞就這樣將刺激迅速通過處理傳到其他神經(jīng)細胞REF_Ref9847\w\h[4]。這樣一條通路就是一個信息處理的通路。整個神經(jīng)網(wǎng)絡(luò)系統(tǒng)是由無數(shù)個相互關(guān)聯(lián)的神經(jīng)細胞組成,構(gòu)成一強大的高精度的信號處理機REF_Ref9847\w\h[4]。不過信號不是隨機選擇下一個神經(jīng)元來傳遞信息,而是基于人在成長過程中長期累積的分類信息有條件的選擇路徑。受這種思想啟發(fā)人工神經(jīng)網(wǎng)絡(luò)算法就是要模擬人類神經(jīng)的既成分類機制以此達到對待檢測樣本的檢測?;谧涌臻g的方法子空間學(xué)習(xí)大意是指通過映射,實現(xiàn)從高維度特征向低維度特征空間的映射,是一種經(jīng)典的思想。就好比你拿到了一組具有很多信息數(shù)據(jù)要對其做分類,然而數(shù)據(jù)分布在一個高維空間中,不太方便處理,維度太高導(dǎo)致采用的分類模型的復(fù)雜度也相應(yīng)增高,最終導(dǎo)致分類模型容易出問題。從而導(dǎo)致問題無法解決,但是,數(shù)據(jù)中往往存在一些特性使得這個問題又有了可以解決的希望,比如數(shù)據(jù)其實分布在高維空間的一個子空間中,你拿到的高維數(shù)據(jù)其實是子空間中有效數(shù)據(jù)加上高維無效數(shù)據(jù),而這個子空間的維度數(shù)其實一般不那么大,那么找出這個子空間,就能保證盡量不丟失信息又能降低數(shù)據(jù)維度,在這個子空間中做訓(xùn)練,就可以變得比較容易。2.4本章小結(jié)本章我們可以清楚知道什么是人臉檢測以及人臉檢測為何會如此的有用以及證明了我們很有必要對其進行探究學(xué)習(xí),同時我們還大致明白人臉檢測的顯性特征檢測方法及隱性特征檢測方法的優(yōu)缺點。3XFace系統(tǒng)總體設(shè)計3.1XFace系統(tǒng)設(shè)計3.1.1XFace系統(tǒng)框圖如圖3.1是XFace人臉檢測系統(tǒng),包含以膚色檢測法為指導(dǎo)的膚色檢測模塊和基于OpenCV圖像處理庫檢測算法原理的OpenCV人臉檢測模塊,同時還實現(xiàn)了基于灰度投影法的自動定位人眼和手動定位人眼的歸一模塊。圖3-1XFace系統(tǒng)框圖XFace系統(tǒng)的運行是從讀取文件開始的,然后我們對打開的圖片加載到檢測模塊檢測得到人臉,然后就可以對檢測到的人臉進行歸一化處理最后保存處理結(jié)果到文件。3.2功能說明3.2.1讀取顯示文件讀取文件是系統(tǒng)運行的第一步,我選擇用C#的System.Windows.Forms.OpenFileDialog類實例化對象進行圖片路徑的選取。我設(shè)置該對象的Filter讓可供選擇的文件僅限于如Jpg、bmp、png等圖片文件。用Bitmap對象來加載選擇文件的圖片數(shù)據(jù)。然后顯示該圖片到界面。3.2.2人臉檢測人臉檢測就是將讀取顯示到界面的圖片文件加載到OpenCV人臉檢測功能模塊去或者是以膚色檢測法為基礎(chǔ)的人臉檢測模塊去。該模塊如果檢測到了人臉就返回人臉位置信息加載到數(shù)據(jù)模型中。否者就不會返回任何信息。我們隊數(shù)據(jù)模型進行讀取有數(shù)據(jù)就顯示結(jié)果。無數(shù)據(jù)則顯示未檢測到任何結(jié)果的信息提示。3.2.3檢測結(jié)果歸一化檢測結(jié)果歸一化是將檢測到的人臉歸一化到大小一致眼睛處于同一水平線上的圖片,這是設(shè)計XFace系統(tǒng)的最終目的。我們可以選擇人臉檢測結(jié)果來進行人臉歸一化。在選取需要歸一化的檢測人臉后我們就可以執(zhí)行自動歸一和手動歸一了;歸一結(jié)果會顯示到界面并根據(jù)用戶是否對歸一化結(jié)果滿意來進行下一步操作。即用另外一種歸一方法還是保存結(jié)果。3.2.4歸一化結(jié)果保存我們進行人臉檢測歸一化是為了能為人臉識別提供標(biāo)準(zhǔn)的人眼處于同一水平的可靠的識別人臉樣本,保存對于整個系統(tǒng)勢必是不可或缺的。我們根據(jù)用戶提供的保存路徑先判斷文件是否存在,如果存在提示是覆蓋文件還是放棄保存,如果文件不存在則直接保存文件。3.3本章小結(jié)通過本章我們可以了解人臉檢測系統(tǒng)裁剪系統(tǒng)每個模塊是如何協(xié)同工作的為下一步的詳細設(shè)計奠定良好基礎(chǔ)。4XFace系統(tǒng)詳細設(shè)計4.1XFace系統(tǒng)總體設(shè)計4.1.1XFace系統(tǒng)流程如圖4.1XFace系統(tǒng)包括四個功能模塊:讀取圖片文件、檢測人臉、歸一化人臉、然后保存結(jié)果。圖4-1XFace系統(tǒng)工作流程4.1.2XFace系統(tǒng)的功能模塊圖4-2讀取文件模塊圖圖4-3人臉檢測模塊圖4-4歸一化模塊圖4-5保存文件模塊4.2XFace系統(tǒng)算法詳細描述4.2.1OpenCV人臉檢測法詳細描述圖4-6OpenCV人臉檢測功能圖OpenCVhaar分類器的建立:OpenCV的haar積分圖人臉分類器是基于adaboost算法對人臉haar特征進行學(xué)習(xí)建立起來的。Haar分類器算法的要點如下:①使用Haar特征做檢測。②使用積分圖(IntegralImage)對Haar特征求值進行加速。③使用AdaBoost算法對弱分類區(qū)訓(xùn)練得到區(qū)分人臉和非人臉能力更強的強分類器。④使用級聯(lián)方法把強分類器堆疊級聯(lián)到一起形成級聯(lián)分類器,提高準(zhǔn)確率。Haar特征Haar特征用法,就是在人臉檢測過程中將他視為一個子窗口在檢測區(qū)域內(nèi)不斷滑動。對于每個位置的每個一種特征都會有一個與之對應(yīng)的特征值,將這些計算出來的值代入預(yù)先訓(xùn)練好的級聯(lián)分類器。如果特征通過這些分類器則我們就判定該區(qū)域是人臉,否則該區(qū)域不是人臉區(qū)域。下面是Viola提出的Haar特征REF_Ref9267\w\h[5]。圖4-7haar特征圖REF_Ref9267\w\h[5]下面是Lienhart提出的Haar特圖4-8新haar特征圖REF_Ref9267\w\h[5]將任意一種haar特征矩形放到人臉樣本所在區(qū)域內(nèi),對于特征覆蓋的人臉區(qū)用白色區(qū)域?qū)?yīng)的人臉像素值和減去特征黑色區(qū)域覆蓋的人臉像素和得到的像素值我們稱之為人臉特征值REF_Ref23362\w\h[7]。而如將這個特征覆蓋到非人臉區(qū)域,那么計算出的值應(yīng)該和覆蓋到人臉區(qū)域得到的特征值不一樣,其實非人臉區(qū)域特征值與人臉區(qū)域得出的特征值區(qū)別越大越有利于我們區(qū)分出人臉來REF_Ref17664\w\h[8]。最終為了達到好的區(qū)分效果增加區(qū)分度,我們通過使用多種haar特征計算特征值然后將他們疊加在一起得到一個區(qū)分度更大的特征值。Haar分類器在2001年,Viola和Jones發(fā)表了《RapidObjectDetectionusingaBoostedCascadeofSimpleFeatures》REF_Ref11561\w\h[5]和《RobustReal-TimeFaceDetection》兩本經(jīng)典著作REF_Ref14667\w\h[6]。在這兩本著作中詳細介紹了haar特征和haar分類器?,F(xiàn)在我們知道haar分類器就是利用人臉的haar特征值和adaboost算法訓(xùn)練得到弱分類器,由弱分類器組合成強分類器,再由強分類器分層疊加形成級聯(lián)分類器。弱分類器對于20000張人臉樣本圖像和20000張非人臉樣本圖像,一個如4.9圖左邊中a型haar特征在每個個位置上都會取得20000個正樣本特征值和20000個負樣本特征值。在這40000個特征值中會存在一個值能夠最好區(qū)分出人臉和人非人臉樣本。那么我們就選擇該特征值對應(yīng)的haar特征作為一個弱分類器。圖4-9最優(yōu)弱分類器原理圖如何選擇一個特征值達到對該種特征分類效果好的閥值?對a型特征得到的40000個特征值進行排序。計算每個特征值對應(yīng)的分類正確率。每一個特征值會對應(yīng)一個分類的正確率,我們選擇分類正確率最大的特征值E所對應(yīng)的特征得到最優(yōu)弱分類器。同樣對于B型特征我們也可以找到一個最優(yōu)弱分類器。強類器強分類器的誕生需要循環(huán)多輪得出,我們?nèi)⊙h(huán)次數(shù)為N具體操作如下:對訓(xùn)練樣本集U,共M個樣本,其中一部分正樣本和負樣本;N為訓(xùn)練的最大循環(huán)次數(shù);2.初始化樣本權(quán)重為1/M,即為訓(xùn)練樣本的一個初始概率分布;3.第一次選擇M個樣本的某一個特征,得到第一個最優(yōu)弱分類器4.提高上一輪中被誤判的樣本的權(quán)重;5.選入新的特征特進行新一輪的訓(xùn)練得到一個新的弱分類器。6.經(jīng)過N次步驟4和5的執(zhí)行就得到N個弱分類器。7.最后對N個弱分類器組合就可以得到一個強分類器。級聯(lián)分類器我們將訓(xùn)練出多個強分類器按照一定規(guī)則的組合,最終形成正確率可以滿足人臉實際需求的分類器。圖4-10級聯(lián)分類器原理圖級聯(lián)分類器級聯(lián)方法是,將一定數(shù)量的強分類器一般20個就夠了從分類能力弱排列到分類能力強的經(jīng)過訓(xùn)練使每個強分類器都有較高檢測率,而誤識率可以放低,根據(jù)錯誤率F=每層錯誤率相乘而得,檢測率D=每層的檢測率相乘而得。級聯(lián)分類器就是在給定級聯(lián)分類器錯誤率和識別率反過來計算每層強分類器的錯誤率和識別率。積分圖對于一個Haar特征在一個窗口中如何排列可更好的體現(xiàn)人臉的特征,這是未知的,只有通過訓(xùn)練才能了解到所以在訓(xùn)練之前我們需要窮舉所有特征。對于每一個矩形樣本,對于他里面的任何一個子窗口圖像,毫無疑問都是需要計算特征值的那么我們知道對于一個24*24的區(qū)域就有16萬個左右的特征值然而對于大多數(shù)的人臉圖尺寸會遠大于24*24所以運算量可想而知是多大。積分圖之所以被廣泛采用就在于積分圖只遍歷一次圖像就可得出圖像中所有區(qū)域像素和這對提高了圖像特征值的計算效率很有幫助。它是用一點的值表示該點p(i,j)與坐標(biāo)原點形成的矩形的所有像素和積分圖構(gòu)建算法:1)用s(i,j)表示行方向的累加和,初始化s(i,-1)=0;2)用Sij(i,j)表示一個積分圖像,初始化Sij(-1,i)=0;3)掃描圖像,計算每個點P(i,j)行方向的像素f(i,j)累加和得到s(i,j)和積分圖像Sij(i,j)的值s(i,j)=s(i,j-1)+f(i,j)Sij(i,j)=Sij(i-1,j)+s(i,j)4)經(jīng)過對圖像一遍的掃描,積分圖像Sij就構(gòu)造好了。對于一個已經(jīng)運算完的積分圖,圖中任何矩形框的像素和就都可以通過簡單加法和減法運算得到。如圖:圖4-11積分圖設(shè)D的四個頂點分別為1,2,3,4則D的像素和可以表示為Dsum=Sij(1)+Sij(3)-(Sij(2)+Sij(4));4.2.2膚色檢測模型詳細描述圖4.12膚色人臉檢測細化圖HSV顏色空間HSV模型圖4-13Hsv模型圖色調(diào)H所謂的顏色的色調(diào)其實指的是圖像中畫面色彩的大致顏色而H色調(diào)(Hue)是用角度來進行度量的,它的取值范圍為0°~360°REF_Ref21426\w\h[9]。飽和度S飽和度S表示顏色與光譜色的接近程度比如說一種顏色,可以看成是某種光譜顏色與白色按照一定比例混合而成的結(jié)果REF_Ref21426\w\h[9]。如果某種光譜顏色在總體中占的比例大,那么這種顏色顯現(xiàn)程度就高,同時顏色的飽和度就會越高。飽和度高,在顏色上表現(xiàn)就是顏色深而艷。明度V明度表示顏色明亮的程度,對于發(fā)光物體,明度值與發(fā)光體的光亮程度成正比;對于非光源物體,明暗度就是指物體的透射或反射能力的強度。通常取值范圍為0%到100%取值越大也就越明亮REF_Ref21426\w\h[9]。RGB與HSV的聯(lián)系直觀的看,只需要把以RGB三維坐標(biāo)的中軸線為軸線的立方體立起來的,將他扁平化,就能形成HSV空間模型了REF_Ref21426\w\h[9]。V只選取了RGB的一個最大分量與強度無直接關(guān)系而RGB則能反映光照強度(或灰度)的變化。v=max(r,g,b)。由RGB到HSV顏色空間轉(zhuǎn)換的偽代碼如下:Input(R,G,B);varV=Max(R,G,B); ifV=0 thenS=0;Else thenS=[V-Min(R,G,B)]/V;IfV=R thenH=60*(G-B)/(V-Min(R,G,B));IfV=G thenH=120+60*(B-R)/(V-Min(R,G,B);IfV=B thenH=240+60*(R-G)/(V-Min(R,G,B));IfH<0 thenH+=360;Output(H,S,V);4.2.3歸一化算法詳細描述圖4-13自動歸一化模塊細化圖圖4-14手動歸一化模塊細化圖自動人眼定位灰度投影法REF_Ref30616\w\h[11]:由人臉的人眼位置特征將人臉部雙眼區(qū)域縮小到兩個小區(qū)域。然后根據(jù)灰度圖像在人眼區(qū)域像素和會低于非人眼區(qū)域從而定位人眼坐標(biāo);根據(jù)在圖像預(yù)處理與匹配方法研究REF_Ref30616\w\h[11]中人眼定位方法。我們經(jīng)過對五官定位得到大致矩形人眼位置記為左眼所在框(x1,y1,x2,y2)右眼所在框(x3,y1,x4,y2)。然后進行掃描獲得像素最小的區(qū)域。取該區(qū)域的中心就是眼睛位置。如圖4.15所示:從圖可看到對區(qū)域(x1,y1,x2,y2)進行分割對每個小格子進行像素求和p(x,y)最終找到像素最小矩形塊將該中心當(dāng)做人臉左眼。同理對區(qū)域(x3,y1,x4,y2)可以找出右眼。圖4-15自動定位人眼圖圖像旋轉(zhuǎn)圖4-16圖像旋轉(zhuǎn)模型圖如圖4.16中我們以P0(x0,y0)為旋轉(zhuǎn)中心建立坐標(biāo)系,p2(x2,y2)為旋轉(zhuǎn)后的點,我們需要計算旋轉(zhuǎn)前的點p1(x1,y1)線p0p1與線p0p2夾角為Ap0p2與X軸夾角為B線段p0p1=p0p2的長記作r;由于旋轉(zhuǎn)過程不會改變線段長r。我們通過下面的公式推導(dǎo)得出p1(x1,y1)在圖片中的坐標(biāo)。我們根據(jù)三角函數(shù)公式(4.1)(4.2)(4.3)(4.4) (4.1)(4.2)(4.3)(4.4)將(4.1)展開得到(4.5):(4.5)將(4.2)展開得到(4.6):(4.6)將(4.3)(4.4)帶入(4.5)得到(4.7):(4.7)將(4.3)(4.4)帶入(4.6)得到(4.8):(4.8)最終結(jié)果:(4.9)(4.10)由于現(xiàn)在坐標(biāo)系的原點是P0也就是人臉左眼位置點,現(xiàn)在計算得到的坐標(biāo)都是相對于P0點因此還要還原到原來的坐標(biāo)系,那么最終的結(jié)果就是: (4.9) (4.10)如上計算可得到旋轉(zhuǎn)后圖像中每個點p(x,y)在原圖的位置p’(x,y)由于旋轉(zhuǎn)p’(x,y)可能不是整數(shù)點而且有可能超出原圖范圍就取存在值作為該點的像素值如果點不在原圖范圍內(nèi)則賦值為255。雙線性插值雙向性插值根據(jù)距離點p(x,y)距離越小而對該點值影響越大來進行插值。同時,由旋轉(zhuǎn)后圖像坐標(biāo)計算出來的原圖像坐標(biāo)往往不是整數(shù),為了保證旋轉(zhuǎn)效果,進行雙線性插值。雙線性插值就是對一點進行X方向和Y兩個方向進行變量的線性插值,分別對每個變量線性插值就得到最終的插值結(jié)果。圖4-18雙線性插值圖在X方向上插入R1,R2值如公式(4.11)(4.12): 公式(4.11) 公式(4.12)在Y方向插值(4.3)如下: 公式(4.13)簡化后得到(4.4)如下 公式(4.14)旋轉(zhuǎn)后點p2(x2,y2)對應(yīng)的像素值f(x,y)我們根據(jù)公式(4.14)計算可以得到。圖像裁剪在旋轉(zhuǎn)后圖像中,以左眼Leye(x,y)做基準(zhǔn)兩眼間距離為D標(biāo)準(zhǔn)找到人臉矩形左上角的點leftUP(x-0.5D,y-0.5D)。然后以leftUp點,寬2D,長2D構(gòu)造矩形,裁剪得到歸一化人臉即為一個2D*2D的矩形人臉框;如圖4.19:圖4-19人臉裁剪模型圖通過流程圖4.13或者圖4.14我們可以清晰的看到。經(jīng)過對圖片的處理可以得到人眼,然后對該圖片進行以左眼為旋轉(zhuǎn)中心的人臉圖像旋轉(zhuǎn),就可以使得雙眼處于同一水平,最后按比例裁剪人臉就完成了人臉幾何歸一化。在第六章可以看到歸一化前后人臉對比圖。4.3XFace系統(tǒng)詳細設(shè)計4.3.1XFace系統(tǒng)關(guān)鍵類圖4-20系統(tǒng)關(guān)系圖圖4-21系統(tǒng)重要類的圖圖4.18是人臉檢測裁剪系統(tǒng)的一些重要關(guān)聯(lián)關(guān)系圖。4.19是XFace系統(tǒng)關(guān)鍵類。根據(jù)MVC架構(gòu)我將XFace系統(tǒng)分為三層。Model層實現(xiàn)類是圖的AllFaces類與AllImg類主要對數(shù)據(jù)進行封裝用于顯示。View層是顯示數(shù)據(jù)層主要對應(yīng)了上圖的XFace類。Controller層就是從model層取得數(shù)然后傳遞個view層對應(yīng)上圖的Xface類。最底層的兩個類DetectFunc類與Helper類則是人臉檢測用到的靜態(tài)函數(shù)庫與用于顯示提示的靜態(tài)string庫;4.3.2XFace系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)圖4-22系統(tǒng)重要數(shù)據(jù)結(jié)構(gòu)圖如圖所示,是XFace系統(tǒng)中的重要的數(shù)據(jù)結(jié)構(gòu)類每個結(jié)構(gòu)的分析如下:Rect結(jié)構(gòu):包括一個點和一個Size分別對應(yīng)與檢測得到人臉矩形框的左上角和size;Face結(jié)構(gòu):包括了rectface和一個eyes[2];分別對應(yīng)檢測得到一張臉與臉的兩個眼睛;AllFaces結(jié)構(gòu):包括一個List<Face>對應(yīng)于一張圖片上檢測得到的所有人臉;Image結(jié)構(gòu):有imageName、ImageData、leye、reye、imgsize分別對應(yīng)檢測結(jié)果圖的圖片名、圖片像素數(shù)據(jù)、圖片中左眼右眼位置,和圖片大小。AllImgs結(jié)構(gòu):對應(yīng)所有需要顯示的結(jié)果圖。4.4章小結(jié)本章我們介紹了OepnCV人臉檢測原理,膚色檢測原理,人臉歸一化原理。并對系統(tǒng)進行MVC架構(gòu),進行詳細設(shè)計了Face、AllFaces、Image、AllImgs四個數(shù)據(jù)結(jié)構(gòu)類,接下來就可以編碼實現(xiàn)XFace系統(tǒng)了;5XFace系統(tǒng)實現(xiàn)5.1OpenCV人臉檢測模塊實現(xiàn)5.1.1EmguCV概述我們將EmguCV3.1看作是Opencv的.net版本是由OpenCV封裝而成是一個跨平臺的圖像處理庫。封裝使得OPenCV的函數(shù)能對.net環(huán)境下的C#,VB,IronPyThon等語言進行支持。它很能夠在Linux,MacOSX以及一些手機平臺上如Android設(shè)備iPhone,iPod,iPad上運行REF_Ref25936\w\h[12]。EmguCV優(yōu)點:.跨平臺,支持多語言;.提供泛型顏色和度的圖片類Image<color,depth>;.自動內(nèi)存管理機制;.XML序列化圖片;.直接支持圖片類和OpenCV函數(shù)調(diào)用;5.1.2EmguCV封裝OpenCV從圖5.3可以看出第一層是基礎(chǔ)層,它包括了枚舉類型,結(jié)構(gòu)體類型和圖片處理函數(shù)它們的命名空間直接從Opencv封裝而來。第二層是上層封裝它充分體現(xiàn)了.net框架的優(yōu)點將各種類融合在一起.圖5-1Emgucv封裝結(jié)構(gòu)圖REF_Ref25936\w\h[12]下圖是一些Emgucv與Opencv結(jié)構(gòu)體的對照。圖5-2Emgucv與Opencv結(jié)構(gòu)體的對照圖REF_Ref25936\w\h[12]下圖是.net框架結(jié)構(gòu)體與Opencv結(jié)構(gòu)體對照。圖5-3.net框架結(jié)構(gòu)體與Opencv結(jié)構(gòu)體對照REF_Ref25936\w\h[12]這里簡潔的介紹了EmguCV,我們應(yīng)該明白為什么選擇它來做開發(fā)。那么接下來就人我們看一下如何安裝EmguCV。5.1.3EmguCV安裝EmguCv安裝,我們到/projects/emgucv/下載最新版本的emgucv安裝包加壓后打開.exe文件開始安裝到Windows。統(tǒng)配置環(huán)境配置,打開系統(tǒng)配置環(huán)境變量在Path上加上...\emgucv3.1\emgucv-windesktop282\bin\X64;添加引用,我們把上述路徑下的.dll文件復(fù)制到項目debug文件目錄下。完成上述操作后就打開vs2012創(chuàng)建新工程向解決方案資源管理器添加前面拷貝到debug文件下的dll到引用。到此我們可以用emgucv庫進行開發(fā)了。如果某個程序需要用到Emgucv的內(nèi)庫則在該程序的開始添加UsingXXX即可。5.1.4OpenCV人臉定位實現(xiàn)代碼:publicModel.AllFacesGetAllFacs(System.Drawing.Bitmapimage){Model.AllFacesmaf=newModel.AllFaces();System.Drawing.Rectangle[]facerectangles=HelpFaceDetect.DetectFunc.DetectFaceUseOpencv(image);if(facerectangles.Length>0){for(inti=0;i<facerectangles.Length;i++){Model.AllFaces.Faceface=newModel.AllFaces.Face();face.Position.Leftup=facerectangles[i].Location;face.Position.Size=facerectangles[i].Size;//獲取每個人臉的眼睛位置System.Drawing.Bitmapfaceimg=newImage<Bgr,byte>(image).Copy(facerectangles[i]).Bitmap;List<Rectangle>eyerectangles=HelpFaceDetect.DetectFunc.DetectEyesUseOPencv(faceimg,facerectangles[i].Location);if(eyerectangles.Count==2){face.Eyes[0].Leftup=eyerectangles[0].X>eyerectangles[1].X?eyerectangles[1].Location:eyerectangles[0].Location;face.Eyes[1].Leftup=eyerectangles[0].X<eyerectangles[1].X?eyerectangles[1].Location:eyerectangles[0].Location;if(face.Eyes[0].Leftup.X==eyerectangles[0].X){face.Eyes[0].Size=eyerectangles[0].Size;face.Eyes[1].Size=eyerectangles[1].Size;}else{face.Eyes[0].Size=eyerectangles[1].Size;face.Eyes[1].Size=eyerectangles[0].Size;}}maf.FaceList.Add(face);}returnmaf;}else{thrownewException(AppService.Helper.faceDetectResultMesg);}}5.2膚色人臉檢測模塊實現(xiàn)5.2.1二值化圖像得到人臉候選區(qū)參考論文發(fā)現(xiàn)在HSV空間H的值在范圍9-50可以分辨出亞洲人皮膚。而在RGB顏色空間下有滿足不等式(R-G>10)&&(G-B)>5的像素點就可以判定為膚色點。然后我們將是膚色點的像素值設(shè)定為255非膚色像素點設(shè)置值為0。實現(xiàn)源碼如下:if((Rf-Gf>10)&&Gf-Bf>5){srcImg.Data[i,j,0]=255;srcImg.Data[i,j,1]=255;srcImg.Data[i,j,2]=255;if(9<=H&&H<=50){srcImg.Data[i,j,0]=255;srcImg.Data[i,j,1]=255;srcImg.Data[i,j,2]=255;}else{srcImg.Data[i,j,0]=0;srcImg.Data[i,j,1]=0;srcImg.Data[i,j,2]=0;}}else{srcImg.Data[i,j,0]=0;srcImg.Data[i,j,1]=0;srcImg.Data[i,j,2]=0;}}}SrcImg=srcImg;}這里二值化的方法采用了RGB顏色空間和Hsv顏色空間的組合方法其中用于判斷的閥值是參考一種基于膚色分割的人臉檢測方法REF_Ref2285\w\h[14]的文獻。5.2.2候選膚色區(qū)域篩選對于一般人臉二值化圖像的面積要大于20*20=400可以排除一些小的區(qū)域。由于人臉幾何特征存在人臉比例范圍在0.8-2.5范圍可以篩選出人臉。源碼如下:#region獲取候選膚色區(qū)域privatestaticList<Rectangle>getfaceCandidateRect(Image<Gray,byte>BlackWhitesrcImg){List<Rectangle>candidateRectList=newList<Rectangle>();//Image<Gray,byte>candidateImg=newImage<Gray,byte>(BlackWhitesrcImg.Size);using(VectorOfVectorOfPointcontours=newVectorOfVectorOfPoint()){//找到所有連通域contoursCvInvoke.FindContours(BlackWhitesrcImg,contours,null,Emgu.CV.CvEnum.RetrType.Tree,Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple,newPoint(0,0));intcount=contours.Size;//遍歷contours根據(jù)面積判斷是否舍棄for(inti=0;i<count;i++){using(VectorOfPointcontour=contours[i])using(VectorOfPointapproxContour=newVectorOfPoint()){//多邊形曲線逼近CvInvoke.ApproxPolyDP(contour,approxContour,CvInvoke.ArcLength(contour,false)*0.05,true);if(CvInvoke.ContourArea(approxContour,false)>400)//onlyconsidercontourswithareagreaterthan100{RectanglerectCandidate=CvInvoke.BoundingRectangle(approxContour);//根據(jù)人臉特征比例篩選if(2.5>=((float)rectCandidate.Height/rectCandidate.Width)&&((float)rectCandidate.Height/rectCandidate.Width)>0.8)candidateRectList.Add(rectCandidate);}}}}returncandidateRectList;}#endregion 本算法是基于人臉長和寬比例在[0.8-2.5]范圍特征REF_Ref4839\w\h[13]來篩選人臉區(qū)域和基于經(jīng)驗的數(shù)據(jù)人臉面積一般大于20*20像素來排除非人臉。5.3歸一化實現(xiàn)5.3.1灰度投影法定位人眼根據(jù)上面描述的自動歸一。該方法利用了在人眼區(qū)域會存在局部灰度值最低從而定位人眼。從而得到雙眼位置用于旋轉(zhuǎn)圖像。實現(xiàn)源碼:#region自動定位人眼privatestaticPointF[]autoLocateEye(Image<Gray,byte>OrGrayImg){//【0】左眼【1】右眼PointF[]twoeyes=newPointF[2];intx1=OrGrayImg.Width/4,x2=OrGrayImg.Width/2,x3=x2,x4=x2+x1;inty1=OrGrayImg.Height/4,y2=OrGrayImg.Height/2;intWstep=(x2-x1)/5;inthstep=(y2-y1)/5;//縱向掃描矩形(x1,x2,y1,y2)(x3,x4,y1,y2)得到twoeyes.Yfloatmingh=255*(x2-x1)*(y2-y1),mingw=255*(x2-x1)*(y2-y1);for(inth=y1;h<=y2;h+=hstep){for(intw=x1;w<=x2;w+=Wstep){floatgh=0.0f;for(intk=0;k<hstep;k++)for(intl=0;l<Wstep;l++)gh+=OrGrayImg.Data[h+k,w+l,0];//[10,10]區(qū)域的像素和if(gh<=mingh){twoeyes[0].Y=h+hstep/2;//得到左眼Y;twoeyes[0].X=w+Wstep/2; //得到左眼Xmingh=gh;}}}mingh=255*10000;mingw=255*10000;for(inth=y1;h<=y2;h+=hstep){for(intw=x3;w<=x4;w+=Wstep){floatgh=0.0f;for(intk=0;k<hstep;k++)for(intl=0;l<Wstep;l++)gh+=OrGrayImg.Data[h+k,w+l,0];//小矩形像素和if(gh<=mingh){twoeyes[1].Y=h+hstep/2;//得到右眼Y;twoeyes[1].X=w+Wstep/2;mingh=gh;}}}returntwoeyes;}#endregion從我多次進行的檢測結(jié)果得出結(jié)論:本方法需要預(yù)先根據(jù)對人臉顯性特征來對人眼劃分區(qū)域如果預(yù)分區(qū)出錯就會導(dǎo)致算法嚴(yán)重錯誤。比如對于某些人臉處于圖片邊緣或者人眼并未處于劃分出來的區(qū)域會出現(xiàn)檢測錯誤。目前還未想到好的解決方案。對于定位失敗的人臉,現(xiàn)在只能通過手動選取人眼來達到歸一化。5.3.2旋轉(zhuǎn)人臉圖像為了使的兩眼處于同一水平我們把人臉圖像繞左眼所在點旋轉(zhuǎn)人臉。實現(xiàn)偽代碼:Begin(算法開始)InputLeye,Reye,SrcImg(輸入?yún)?shù))getAngle(Leye,Reye)(獲取旋轉(zhuǎn)角度)Reotate(Leye,SrcImg)(旋轉(zhuǎn)圖片)OutPut(SrcImg);(輸出結(jié)果)5.3.3裁剪歸一化。根據(jù)左眼裁剪旋轉(zhuǎn)后的人臉并歸一化到相同尺寸,目的在于可以得到眼睛在同一水平線上大小相同的去掉會干擾人臉識別的無關(guān)區(qū)域。裁剪偽代碼:Begin(算法開始)InputSrcImg,Leye,Distance(輸入?yún)?shù))getRectangle(Leye,Distance)(獲得人臉矩形)Img=SrcImg
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二手車個體交易策劃合同范本
- 2025年專利權(quán)交換協(xié)議格式
- 2025年個人信用管理協(xié)議書
- 2025年二手汽車交易未過戶合同模板
- 2025年農(nóng)資研發(fā)與實驗勞動合同
- 2025年體重管理服務(wù)協(xié)議
- 2025年企業(yè)員工住房公積金貸款合同
- 2025年上海市新能源汽車產(chǎn)業(yè)投資合作協(xié)議
- 2025年養(yǎng)殖場租賃協(xié)議正式版本
- 2025年云服務(wù)器租用合同示范
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進本土項目化設(shè)計-讀《PBL項目化學(xué)習(xí)設(shè)計》有感
- 《網(wǎng)店運營與管理》整本書電子教案全套教學(xué)教案
- 教師信息技術(shù)能力提升培訓(xùn)課件希沃的課件
- 高端公寓住宅項目營銷策劃方案(項目定位 發(fā)展建議)
- 執(zhí)業(yè)獸醫(yī)師聘用協(xié)議(合同)書
- 第1本書出體旅程journeys out of the body精教版2003版
- [英語考試]同等學(xué)力英語新大綱全部詞匯
- 2022年肝動脈化療栓塞術(shù)(TACE)
- 形式發(fā)票格式2 INVOICE
評論
0/150
提交評論