![人臉檢測(cè)原理_第1頁](http://file4.renrendoc.com/view/aa860740005f18a4568ff53f70368cbc/aa860740005f18a4568ff53f70368cbc1.gif)
![人臉檢測(cè)原理_第2頁](http://file4.renrendoc.com/view/aa860740005f18a4568ff53f70368cbc/aa860740005f18a4568ff53f70368cbc2.gif)
![人臉檢測(cè)原理_第3頁](http://file4.renrendoc.com/view/aa860740005f18a4568ff53f70368cbc/aa860740005f18a4568ff53f70368cbc3.gif)
![人臉檢測(cè)原理_第4頁](http://file4.renrendoc.com/view/aa860740005f18a4568ff53f70368cbc/aa860740005f18a4568ff53f70368cbc4.gif)
![人臉檢測(cè)原理_第5頁](http://file4.renrendoc.com/view/aa860740005f18a4568ff53f70368cbc/aa860740005f18a4568ff53f70368cbc5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、前言關(guān)于opencvOpenCV是Intel開源計(jì)算機(jī)視覺庫(ComputerVersion)。它由一系列C函數(shù)和少量C+類構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。OpenCV擁有包括300多個(gè)C函數(shù)的跨平臺(tái)的中、高層API。它不依賴于其它的外部庫盡管也可以使用某些外部庫。OpenCV對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用都是免費(fèi)的。同時(shí)OpenCV提供了對(duì)硬件的訪問,可以直接訪問攝像頭,并且opencv還提供了一個(gè)簡(jiǎn)單的GUI(graphicsuserinterface)系統(tǒng):highgui。我們就通過OpenCV提供的一些方法來構(gòu)造出這個(gè)人臉檢測(cè)(facedetection)程序來。openc
2、v的python包裝OpenCV本身是有C/C+編寫的,如果要在其他語言中使用,我們可以通過對(duì)其動(dòng)態(tài)鏈接庫文件進(jìn)行包裝即可,幸運(yùn)的是,Python下有很多個(gè)這樣的包裝,本文中使用的是Cvtypes。事實(shí)上,在Python中很多的包都是來自第三方的,比如PIL(PythonImageLibrary)即為C語言實(shí)現(xiàn)的一個(gè)圖形處理包,被包裝到了Python中,這些包裝可以讓你像使用Python的內(nèi)建函數(shù)一樣的使用這些API。人臉檢測(cè)原理人臉檢測(cè)屬于目標(biāo)檢測(cè)(objectdetection)的一部分,主要涉及兩個(gè)方面先對(duì)要檢測(cè)的目標(biāo)對(duì)象進(jìn)行概率統(tǒng)計(jì),從而知道待檢測(cè)對(duì)象的一些特征,建立起目標(biāo)檢測(cè)模型。用
3、得到的模型來匹配輸入的圖像,如果有匹配則輸出匹配的區(qū)域,否則什么也不做。計(jì)算機(jī)視覺計(jì)算機(jī)的視覺系統(tǒng),跟人的眼睛是大不相同的,但是其中也有類似之處。人眼之能夠看到物體,是通過物體上反射出來的光線刺激人眼的感光細(xì)胞,然后視覺神經(jīng)在大腦中形成物體的像。計(jì)算機(jī)通過攝像頭看到的東西要簡(jiǎn)單的多,簡(jiǎn)單來說,就是一堆由數(shù)字組成的矩陣。這些數(shù)字表明了物體發(fā)出的光的強(qiáng)弱,攝像頭的光敏元件將光信號(hào)轉(zhuǎn)化成數(shù)字信號(hào),將其量化為矩陣。如何從這些數(shù)字中得出:這是一個(gè)人臉的結(jié)論,是一個(gè)比較復(fù)雜的事情。物理世界是彩色的,一般來說,計(jì)算機(jī)中的彩色圖片都是由若干個(gè)色彩通道累積出來的,比如RGB模式的圖片,有紅色通道(Red),綠色
4、通道(Green)和藍(lán)色通道(Blue),這三個(gè)通道都是灰度圖,比如一個(gè)點(diǎn)由8位來表示,則一個(gè)通道可以表示2人8=256個(gè)灰度。那樣三個(gè)通道進(jìn)行疊加以后可以表3*8=24位種色彩,也就是我們常說的24位真彩。對(duì)這樣的圖片做處理,無疑是一件很復(fù)雜的事,所以有必要先將彩色圖轉(zhuǎn)為灰度圖,那樣可以減少數(shù)據(jù)量(比如RGB模式,可以減少到原圖片的1/3),同時(shí)可以去掉一些噪聲信號(hào)。先將圖片轉(zhuǎn)化為灰度圖,然后將這個(gè)灰度圖的對(duì)比度增高,這樣可以使得圖片本來暗的地方更暗,亮的地方更亮一些。這樣處理以后,圖片就更容易被算法設(shè)別出來了。Harr特征級(jí)聯(lián)表OpenCV在物體檢測(cè)上使用的是haar特征的級(jí)聯(lián)表,這個(gè)級(jí)聯(lián)
5、表中包含的是boost的分類器。首先,人們采用樣本的haar特征進(jìn)行分類器的訓(xùn)練,從而得到一個(gè)級(jí)聯(lián)的boost分類器。訓(xùn)練的方式包含兩方面:正例樣本,即待檢測(cè)目標(biāo)樣本反例樣本,其他任意的圖片首先將這些圖片統(tǒng)一成相同的尺寸,這個(gè)過程被稱為歸一化,然后進(jìn)行統(tǒng)計(jì)。一旦分類器建立完成,就可以用來檢測(cè)輸入圖片中的感興趣區(qū)域的檢測(cè)了,一般來說,輸入的圖片會(huì)大于樣本,那樣,需要移動(dòng)搜索窗口,為了檢索出不同大小的目標(biāo),分類器可以按比例的改變自己的尺寸,這樣可能要對(duì)輸入圖片進(jìn)行多次的掃描。什么是級(jí)聯(lián)的分類器呢?級(jí)聯(lián)分類器是由若干個(gè)簡(jiǎn)單分類器級(jí)聯(lián)成的一個(gè)大的分類器,被檢測(cè)的窗口依次通過每一個(gè)分類器,可以通過所有分
6、類器的窗口即可判定為目標(biāo)區(qū)域。同時(shí),為了考慮效率問題,可以將最嚴(yán)格的分類器放在整個(gè)級(jí)聯(lián)分類器的最頂端,那樣可以減少匹配次數(shù)?;A(chǔ)分類器以haar特征為輸入,以0/1為輸出,0表示未匹配,1表示匹配。Haar特征JaIljcleallires.incIcalureslbmSB(b)(cl)工ciiLcr-sinroLiiidlealures邊界特征,包含四種線性特征,包含8種中心圍繞特征,包含兩種在掃描待檢測(cè)圖片的時(shí)候,以邊界特征中的(a)為例,正如前面提到的那樣,計(jì)算機(jī)中的圖片是一個(gè)數(shù)字組成的矩陣,程序先計(jì)算整個(gè)窗口中的灰度值x,然后計(jì)算矩形框中的黑色灰度值y,然后計(jì)算(x-2y)的值,得到的
7、數(shù)值與x做比較,如果這個(gè)比值在某一個(gè)范圍內(nèi),則表示待檢測(cè)圖片的當(dāng)前掃描區(qū)域符合邊界特征(a),然后繼續(xù)掃描。關(guān)于這個(gè)算法的更詳細(xì)描述已經(jīng)超出了本文的范圍,可以在參考資源中獲得更多的信息。非固定大小目標(biāo)檢測(cè)因?yàn)槭腔谝曨l流的目標(biāo)檢測(cè),我們事先不太可能知道要檢測(cè)的目標(biāo)的大小,這就要求我們的級(jí)聯(lián)表中的分類器具有按比例增大(或者縮小)的能力,這樣,當(dāng)小的窗口移動(dòng)完整個(gè)待檢測(cè)圖片沒有發(fā)現(xiàn)目標(biāo)時(shí),我們可以調(diào)整分類器的大小,然后繼續(xù)檢測(cè),直到檢測(cè)到目標(biāo)或者窗口與待檢測(cè)圖片的大小相當(dāng)為止。步驟一:圖片預(yù)處理在從攝像頭中獲得一個(gè)幀(一張圖片)后,我們需要先對(duì)這張圖片進(jìn)行一些預(yù)處理:將圖片從RGB模式轉(zhuǎn)為灰度圖將
8、灰度圖進(jìn)行灰度圖直方圖均衡化操作這兩個(gè)步驟在OpenCV中是非常簡(jiǎn)單的:Python代碼Hi!image_size=cv.cvGetSize(image)#獲取原始圖像尺寸2.grayscale=cv.cvCreateImage(image_size,8,1)#建立一個(gè)空的灰度圖cv.cvCvtColor(image,grayscale,cv.CV_BGR2GRAY)#轉(zhuǎn)換5.storage=cv.cvCreateMemStorage(0)#新建一塊存儲(chǔ)區(qū),以備后用cv.cvClearMemStorage(storage)8.9.cv.cvEqualizeHist(grayscale,gray
9、scale)#灰度圖直方圖均衡化步驟二:檢測(cè)并標(biāo)記目標(biāo)OpenCV中,對(duì)于人臉檢測(cè)的模型已經(jīng)建立為一個(gè)XML文件,其中包含了上面提到的harr特征的分類器的訓(xùn)練結(jié)果,我們可以通過加載這個(gè)文件而省略掉自己建立級(jí)聯(lián)表的過程。有了級(jí)聯(lián)表,我們只需要將待檢測(cè)圖片和級(jí)聯(lián)表一同傳遞給OpenCV的目標(biāo)檢測(cè)算法即可得到一個(gè)檢測(cè)到的人臉的集合。Python代碼苗#detectobjectscascade=cv.cvLoadHaarClassifierCascade(haarcascade_frontalface_alt.xmlIcv.cvSize(1,1)faces=cv.cvHaarDetectObject
10、s(grayscale,cascade,storage,1.2,2,CV.CV_HAAR_DO_CANNY_PRUNING,cv.cvSize(50,50)#設(shè)置最小的人臉為50*50像素7.iffaces:printfacedetectedhere,cv.cvGetSize(grayscale)foriinfaces:cv.cvRectangle(image,cv.cvPoint(int(i.x),int(i.y),cv.cvPoint(int(i.x+i.width),int(i.y+i.height),cv.CV_RGB(0,255,0),1,8,0)#畫一個(gè)綠色的矩形框步驟三:用hig
11、hgui畫出視頻窗口Python代碼*highgui.cvNamedWindow(camera,highgui.CV_WINDOW_AUTOSIZE)highgui.cvMoveWindow(camera,50,50)3.highgui.cvShowImage(camera,detimg)可以看到,OpenCV的API相當(dāng)清晰,使用Python的包裝,可以使得代碼非常小。好了,我們可以看看程序的運(yùn)行結(jié)果:ffl屜5laplaceIOfaces-NetBeansJDE6.5.1printsrroEwhilecreatecapture,checkyoudevice(camera)ays.exit(
12、1)while1:frame=highgui.cvQueryFrame(capture)iffraziEiaNone:breakt_img=cv.cvCLoneImage(frame)highgui.cvConvertImage(framert_imgrhighgui.CV_CVTIMG_FLIP)frainE=t_i_ing#detectAndMark(frame)detectfaces#frajne=1aplacetrangfcn?mation(frame)facedetectedherecv.CvSize;pt-dztof;莊1;才八心出際生lni曹,尸,T&nnm豐EHtifi-n|圍
13、油-文件舊普妳EL”,已fitfXli壬陽r,.;CamerafacesS8氐ESSS|氐豆s88iaczsESfacEsSS氐ESSSI氐空曙faces88可Camera?v!回回sJi-JgrayscaleAjecjualizerJlaplace由于視頻流是動(dòng)態(tài)的,所以我們可以在程序的入口中使用一個(gè)無限循環(huán),在循環(huán)中,每次從視頻中讀入一個(gè)幀,將這個(gè)幀傳輸給人臉檢測(cè)模塊,檢測(cè)模塊在這個(gè)幀上進(jìn)行標(biāo)記(如果有人臉的話),然后返回這個(gè)幀主程序拿到這個(gè)幀后,更新顯示窗口。opencv的其他特性拉普拉斯邊緣檢測(cè)Python代碼韜deflaplaceTransform(image):laplace=No
14、necolorlaplace=None4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.planes=None,None,Noneimage_size=cv.cvGetSize(image)ifnotlaplace:foriinrange(len(planes):planesi=cv.cvCreateImage(image_size,8,1)laplace=cv.cvCreateImage(image_size,cv.IPL_DEPTH_16S,1)colorlaplace=cv.cvCreateImage(image_size,8,3)cv.cvSplit(image,planes0,planes1,planes2,None)forplaneinplanes:cv.cvLaplace(plane,laplace,3)cv.cvConvertScaleAbs(laplace,plane,1,0)cv.cvMerge(planes0,planes1,planes2,None,colorlaplace)colorlaplace.origin=image.originretu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)用拖拉機(jī)品牌代理轉(zhuǎn)讓合同
- 2025年度新型高新技術(shù)企業(yè)員工勞動(dòng)合同書范本
- 2025年度新能源項(xiàng)目資料員技能培訓(xùn)合同
- 2025年度新型混凝土材料研發(fā)與應(yīng)用合作合同
- 2025年度醫(yī)療廢物焚燒處理設(shè)備供應(yīng)合同
- 2025年度快遞行業(yè)服務(wù)質(zhì)量保障合同
- 2025年度城市綜合體物業(yè)管理勞務(wù)派遣服務(wù)合同范本
- 2025年度實(shí)習(xí)生實(shí)習(xí)期間安全教育與安全知識(shí)競(jìng)賽合同
- 學(xué)徒轉(zhuǎn)正申請(qǐng)書
- 2025年度月餅節(jié)日促銷活動(dòng)策劃與執(zhí)行合同-@-1
- 《消防檢查指導(dǎo)手冊(cè)》(2024版)
- 粵教粵科版三年級(jí)下冊(cè)科學(xué)全冊(cè)課時(shí)練(同步練習(xí))
- 小學(xué)開學(xué)第一課禁毒安全
- 《婚戀觀教育》課件
- 10以內(nèi)除法口算練習(xí)題100套(十)
- 中醫(yī)小兒常見皮膚病
- 《醫(yī)療機(jī)構(gòu)環(huán)境表面清潔與消毒管理規(guī)范》-華西醫(yī)院案例
- 第45屆世界技能大賽餐廳服務(wù)項(xiàng)目全國(guó)選拔賽技術(shù)工作文件
- 個(gè)人保證無糾紛承諾保證書
- DB51T10009-2024DB50T10009-2024康養(yǎng)度假氣候類型劃分
- 九年級(jí)道德與法治下冊(cè)時(shí)政熱點(diǎn)專題新人教版
評(píng)論
0/150
提交評(píng)論