版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機視覺實驗報告學校:班級:實驗名稱:小組成員:任課教師:華僑大學10級計算機科學與技術(2)班基于opencv的人臉識別姓名:王佳麗學號:1019213017姓名:郭丹萍學號:姓名:陳嘉學號:鐘必能Opencv簡介OpenCV于1999年由Intel建立,如今由WillowGarage提供支持。OpenCV是一個基于(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和MacOS操作系統(tǒng)上。它輕量級而且高效一由一系列C函數(shù)和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。最新版本是2.4.7。OpenCV擁有包括500多個C函數(shù)的跨平臺的中、高層API。它不依賴于其它的外部庫一盡管也可以使用某些外部庫。OpenCV為Intel?IntegratedPerformancePrimitives(IPP)提供了透明接口。這意味著如果有為特定處理器優(yōu)化的的IPP庫,OpenCV將在運行時自動加載這些庫。OpenCV提供的視覺處理算法非常豐富,并且它部分以C語言編寫,加上其開源的特性,處理得當,不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,所以很多人用它來做算法的移植,OpenCV的代碼經過適當改寫可以正常的運行在DSP系統(tǒng)和單片機系統(tǒng)中,這種移植在大學中經常作為相關專業(yè)本科生畢業(yè)設計或者研究生課題的選題。Opencv具有其自身優(yōu)勢,主要體現(xiàn)在:OpenCV致力于真實世界的實時應用,通過優(yōu)化的C代碼的編寫對其執(zhí)行速度帶來了可觀的提升,并且可以通過購買Intel的IPP高性能多媒體函數(shù)庫(IntegratedPerformancePrimitives)得到更快的處理速度。右圖為OpenCV與當前其他主流視覺函數(shù)庫的性能比較。Opencv的應用領域很廣,包括、人機互動、物體識別、圖象分割、人臉識別、動作識別、運動跟蹤、機器人、運動分析、機器視覺、結構分析二.人臉識別簡介人臉識別,是北京中研眾力科技有限公司基于人的臉部特征信息進行身份識別的一種生物識別技術。用攝像機或攝像頭采集含有人臉的圖像或視頻流,并自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部的一系列相關技術,通常也叫做人像識別、面部識別。人臉與人體的其它生物特征(指紋、虹膜等)一樣與生俱來,它的唯一性和不易被復制的良好特性為身份鑒別提供了必要的前提,與其它類型的生物識別比較人臉識別具有如下特點.八、、:非強制性:用戶不需要專門配合人臉采集設備,幾乎可以在無意識的狀態(tài)下就可獲取人臉圖像,這樣的取樣方式沒有“強制性”;非接觸性:用戶不需要和設備直接接觸就能獲取人臉圖像;并發(fā)性:在實際應用場景下可以進行多個人臉的分揀、判斷及識別;除此之外,還符合視覺特性:“以貌識人”的特性,以及操作簡單、結果直觀、隱蔽性好等特點。人臉識別系統(tǒng)主要包括四個組成部分,分別為:人臉圖像采集及檢測、人臉圖像預處理、人臉圖像特征提取以及匹配與識別。人臉識別主要用于身份識別。由于視頻監(jiān)控正在快速普及,眾多的視頻監(jiān)控應用迫切需要一種遠距離、用戶非配合狀態(tài)下的快速身份識別技術,以求遠距離快速確認人員身份,實現(xiàn)智能預警。人臉識別技術無疑是最佳的選擇,采用快速人臉檢測技術可以從監(jiān)控視頻圖象中實時查找人臉,并與人臉數(shù)據(jù)庫進行實時比對,從而實現(xiàn)快速身份識別。人臉識別的主要產品有人臉識別門禁是基于先進的人臉識別技術,結合成熟的ID卡和指紋識別技術而推出的安全實用的門禁產品。產品采用分體式設計,人臉、指紋和ID卡信息的采集和生物信息識別及門禁控制內外分離,實用性高、安全可靠。系統(tǒng)采用網(wǎng)絡信息加密傳輸,支持遠程進行控制和管理,可廣泛應用于銀行、軍隊、公檢法、智能樓宇等重點區(qū)域的門禁安全控制。一般來說,人臉識別系統(tǒng)包括圖像攝取、人臉定位、圖像預處理、以及人臉識別(身份確認或者身份查找)。系統(tǒng)輸入一般是一張或者一系列含有未確定身份的人臉圖像,以及人臉數(shù)據(jù)庫中的若干已知身份的人臉圖象或者相應的編碼,而其輸出則是一系列相似度得分,表明待識別的人臉的身份。人臉識別算法分類基于人臉特征點的識別算法(Feature-basedrecognitionalgorithms)?;谡四槇D像的識別算法(Appearance-basedrecognitionalgorithms)?;谀0宓淖R別算法(Template-basedrecognitionalgorithms)。利用神經網(wǎng)絡進行識別的算法(Recognitionalgorithmsusingneuralnetwork)?;诠庹展烙嬆P屠碚撎岢隽嘶贕amma灰度矯正的光照預處理方法,并且在光照估計模型的基礎上,進行相應的光照補償和光照平衡策略。優(yōu)化的形變統(tǒng)計校正理論基于統(tǒng)計形變的校正理論,優(yōu)化人臉姿態(tài);強化迭代理論強化迭代理論是對DLFA人臉檢測算法的有效擴展;獨創(chuàng)的實時特征識別理論該理論側重于人臉實時數(shù)據(jù)的中間值處理,從而可以在識別速率和識別效能之間,達到最佳的匹配效果人臉識別的優(yōu)勢在于其自然性和不被被測個體察覺的特點。所謂自然性,是指該識別方式同人類(甚至其他生物)進行個體識別時所利用的生物特征相同。例如人臉識別,人類也是通過觀察比較人臉區(qū)分和確認身份的,另外具有自然性的識別還有語音識別、體形識別等,而指紋識別、虹膜識別等都不具有自然性,因為人類或者其他生物并不通過此類生物特征區(qū)別個體。不被察覺的特點對于一種識別方法也很重要,這會使該識別方法不令人反感,并且因為不容易引起人的注意而不容易被欺騙。人臉識別具有這方面的特點,它完全利用可見光獲取人臉圖像信息,而不同于指紋識別或者虹膜識別,需要利用電子壓力傳感器采集指紋,或者利用紅外線采集虹膜圖像,這些特殊的采集方式很容易被人察覺,從而更有可能被偽裝欺騙。人臉識別被認為是生物特征識別領域甚至人工智能領域最困難的研究課題之一。人臉識別的困難主要是人臉作為生物特征的特點所帶來的。比如相似性:不同個體之間的區(qū)別不大,所有的人臉的結構都相似,甚至人臉器官的結構外形都很相似。這樣的特點對于利用人臉進行定位是有利的,但是對于利用人臉區(qū)分人類個體是不利的。易變性:人臉的外形很不穩(wěn)定,人可以通過臉部的變化產生很多表情,而在不同觀察角度,人臉的視覺圖像也相差很大,另外,人臉識別還受光照條件(例如白天和夜晚,室內和室外等)、人臉的很多遮蓋物(例如口罩、墨鏡、頭發(fā)、胡須等)、年齡等多方面因素的影響。在人臉識別中,第一類的變化是應該放大而作為區(qū)分個體的標準的,而第二類的變化應該消除,因為它們可以代表同一個個體。通常稱第一類變化為類間變化(inter-classdifference),而稱第二類變化為類內變化(intra-classdifference)。對于人臉,類內變化往往大于類間變化,從而使在受類內變化干擾的情況下利用類間變化區(qū)分個體變得異常困難。隨著技術的進一步成熟和社會認同度的提高,人臉識別技術將應用在更多的領域。包括刑偵破案、門禁系統(tǒng)、攝像監(jiān)視、網(wǎng)絡應用、身份識別、信息安全、娛樂應用等。
三.Opencv實現(xiàn)人臉識別實驗過程1.opencv環(huán)境配置(win7+vs2010+opencv2.3.1)①下載OpenCV2.3.11.從/index.php/Download下載OpenCVforWindows(也即OpenCV-2.3.1-2.將OpenCV-231-win-superpack.exe解壓并放到某個路徑目錄下,例如D:\OpenCV2.3.1。其目錄結構*計算"?Program(D:)?OpenCV2.3.1>點*新Jfct快密*所3rdparty20:android20:方問的位置build20:data20:doc20:include20:modules20:samples20:cmake_uninsta1Lcmake.in20:CMakeList5.txt20:_cvconfig.h,cmake20:I\index.rst20:OpenCV,mk.in20:奎?ope-n.cv.pt,cmake.in20:ram(Dr)0penCVAndroidProjectxmake20.i(E:).OpenCVConfig.cmake.in20:VCnrifin-w*rs;iriH.rfTiij?LF.in②配置環(huán)境變量右擊“我的電腦”選“屬性”,點“高級系統(tǒng)屬性”,點“環(huán)境變量”,在用戶變量中新建兩個用戶變量,PATHD:\OpenCV2.3.1\buildOPENCVD:\OpenCV231\build\x86\vc10\bin如下圖所示。
③配置VS2010“其在“工具”-〉“選項”-〉“項目與解決方案”->“VC++目錄”中選擇“視圖”他窗口”——“屬性管理器”,如下圖所示“其雙擊Debug|Win32下的“Microsoft.Cpp.Win32.user”,如下圖所示。融典^M;crcrsofLCpp.』哩也|H-3CaichVidtoaDebugjWin32£2^Mkrp5Qf^.Cpp.</ir^2.usgrjr!Appiicationf.jUnicodeSupportDynamicLiiMitoMFC■Release1Win32jMicDtt.Cpp.^u1;r2^er|*,Whole^rcgrainOptimsution土jUnicodeSupportf-iDynamicLnktoMFC在彈出的配置框中配置,選擇“VC++目錄”。1、在“包含目錄”中的結尾處(若結尾處無英文狀態(tài)下的“;”則需自行添加“;”,下同)加入以下內容$(opencv)\include\opencv;$(opencv)\include\opencv2;$(opencv)\include;2、在庫目錄中的結尾處加入以下內容添加:$(opencv)\x86\vc10\lib;注:$(opencv)\include\opencv是告訴VC去“opencv”這個變量中的文件夾下的\include\opencv路徑中如下圖所示。在“鏈接器”-“輸入”-“附加依賴選項”中的結尾處加入以下內容:$(opencv)\x86\vc10\lib\opencv_core231d.lib;$(opencv)\x86\vc10\lib\opencv_highgui231d.lib;$(opencv如下圖所示
點擊確定,至此OpenCV的配置完成四.Opencv人臉識別步驟1、訓練分類器目前人臉檢測分類器大都是基于haar特征利用Adaboost學習算法訓練的。目標檢測方法最初由PaulViola[Viola01]提出,并由RainerLienhart[Lienhart02]對這一方法進行了改善.首先,利用樣本(大約幾百幅樣本圖片)的harr特征進行分類器訓練,得到一個級聯(lián)的boosted分類器。訓練樣本分為正例樣本和反例樣本,其中正例樣本是指待檢目標樣本(例如人臉或汽車等),反例樣本指其它任意圖片,所有的樣本圖片都被歸一化為同樣的尺寸大小(例如,20x20)。分類器訓練完以后,就可以應用于輸入圖像中的感興趣區(qū)域(與訓練樣本相同的尺寸)的檢測。檢測到目標區(qū)域汽車或人臉)分類器輸出為1,否則輸出為0。為了檢測整副圖像,可以在圖像中移動搜索窗口,檢測每一個位置來確定可能的目標。為了搜索不同大小的目標物體,分類器被設計為可以進行尺寸改變,這樣比改變待檢圖像的尺寸大小更為有效。所以,為了在圖像中檢測未知大小的目標物體,掃描程序通常需要用不同比例大小的搜索窗口對圖片進行幾次掃描。分類器中的“級聯(lián)”是指最終的分類器是由幾個簡單分類器級聯(lián)組成。在圖像檢測中,被檢窗口依次通過每一級分類器,這樣在前面幾層的檢測中大部分的候選區(qū)域就被排除了,全部通過每一級分類器檢測的區(qū)域即為目標區(qū)域。目前支持這種分類器的boosting技術有四種:DiscreteAdaboost,RealAdaboost,GentleAdaboostandLogitboost"boosted"即指級聯(lián)分類器的每一層都可以從中選取一個boosting算法(權重投票),并利用基礎分類器的自我訓練得到?;A分類器是至少有兩個葉結點的決策樹分類器。Haar特征是基礎分類器的輸入,主要描述如下。目前的算法主要利用下面的Harr特征。2、利用分類器進行檢測對于分類器的使用大致要經過三個階段,從文件中加載分類器、利用分類器進行檢測、檢測完成后釋放分類器。這三個階段對應三個函數(shù),cvLoadHaarClassifierCascade、cvHaarDetectObjects、cvReleaseHaarClassifierCascade。這三個函數(shù)包含在庫文件opencv_objdetect231d.lib中,級聯(lián)分類器訓練中采用的檢測目標的尺寸。這個信息在分類器中沒有存儲,因此要單獨指出。函數(shù)cvLoadHaarClassifierCascade用于從文件中裝載訓練好的利用哈爾特征的級聯(lián)分類器,或者從OpenCV中嵌入的分類器數(shù)據(jù)庫中導入。分類器的訓練可以應用函數(shù)haartraining(詳細察看opencv/apps/haartraining)這個數(shù)值是在訓練分類器時就確定好的,修改它并不能改變檢測的范圍或精度。從文件中導入分類器,可以使用函數(shù)cvLoad。b、CvSeq*cvHaarDetectObjects(constCvArr*image,CvHaarClassifierCascade*cascade,CvMemStorage*storage,doublescale_factor=1.1,intmin_neighbors=3,intflags=0,CvSizemin_size=cvSize(0,0));image被檢圖像cascadeharr分類器級聯(lián)的內部標識形式storage用來存儲檢測到的一序列候選目標矩形框的內存區(qū)域。scale_factor在前后兩次相繼的掃描中,搜索窗口的比例系數(shù)。例如1.1指將搜索窗口依次擴大10%。min_neighbors構成檢測目標的相鄰矩形的最小個數(shù)(缺省一1)。如果組成檢測目標的小矩形的個數(shù)和小于min_neighbors-1都會被排除。如果min_neighbors為0,則函數(shù)不做任何操作就返回所有的被檢候選矩形框,這種設定值一般用在用戶自定義對檢測結果的組合程序上。操作方式。當前唯一可以定義的操作方式是CV_HAAR_DO_CANNY_PRUNING。如果被設定,函數(shù)利用Canny邊緣檢測器排除一些邊緣很少或者很多的圖像區(qū)域,因為這樣的區(qū)域一般不含被檢目標。人臉檢測中通過設定閾值使用了這種方法,并因此提高了檢測速度。檢測窗口的最小尺寸。缺省的情況下被設為分類器訓練時采用的樣本尺寸(人臉檢測中缺省大小是~20x20)。函數(shù)cvHaarDetectObjects使用針對某目標物體訓練的級聯(lián)分類器在圖像中找到包含目標物體的矩形區(qū)域,并且將這些區(qū)域作為一序列的矩形框返回。函數(shù)以不同比例大小的掃描窗口對圖像進行幾次搜索(察看cvSetImagesForHaarClassifierCascade)。每次都要對圖像中的這些重疊區(qū)域利用cvRunHaarClassifierCascade進行檢測。有時候也會利用某些繼承(heuristics)技術以減少分析的候選區(qū)域,例如利用Canny裁減(prunning)方法。函數(shù)在處理和收集到候選的方框(全部通過級聯(lián)分類器各層的區(qū)域)之后,接著對這些區(qū)域進行組合并且返回一系列各個足夠大的組合中的平均矩形。調節(jié)程序中的缺省參數(shù)(scale_factor=1.1,min_neighbors=3,flags=0)用于對目標進行更精確同時也是耗時較長的進一步檢測。為了能對視頻圖像進行更快的實時檢測,參數(shù)設置通常是:scale_factor=1.2,min_neighbors=2,flags=CV_HAAR_DO_CANNY_PRUNING,min_size=<minimumpossiblefacesize>五.代碼#include"opencv2/objdetect/objdetect.hpp#include"opencv2/highgui/highgui.hpp"#include"opencv2/imgproc/imgproc.hpp"#include<iostream>#include<stdio.h>usingnamespacestd;usingnamespacecv;/**函數(shù)聲明*voiddetectAndDisplay(Matframe);/**全局變量*stringface_cascade_name="haarcascade_frontalface_alt.xml";stringeyes_cascade_name="haarcascade_eye_tree_eyeglasses.xml";CascadeClassifierface_cascade;CascadeClassifiereyes_cascade;stringwindow_name="Capture-Facedetection";RNGrng(12345);/**@主函數(shù)*intmain(intargc,constchar**argv){CvCapture*capture;Matframe;//--1.加載級聯(lián)分類器文件if(!face_cascade.load(face_cascade_name)){printf("--(!)Errorloading\n");return-1;};if(!eyes_cascade.load(eyes_cascade_name)){printf("--(!)Errorloading\n");return-1;};〃--2.打開內置攝像頭視頻流capture=cvCaptureFromCAM(-1);if(capture){while(true){frame=cvQueryFrame(capture);〃--3.對當前幀使用分類器進行檢測if(!frame.empty()){detectAndDisplay(frame);}Else{printf("--(!)Nocapturedframe--Break!");break;}intc=waitKey(10);if((char)c=='c')(break;}}}return0;}/**@函數(shù)detectAndDisplay*/voiddetectAn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年幼兒園大班上學期工作計劃標準模板(八篇)
- 二零二五年度大型園林工程苗木供應及種植勞務合同4篇
- 年度井下多功能測振儀產業(yè)分析報告
- 2025年度大型體育賽事策劃與執(zhí)行個人雇傭合同4篇
- 二零二五年度仿古面磚采購及修復服務合同4篇
- 2025年路燈安裝工程環(huán)境保護及污染防治合同3篇
- 船舶貨運技術課程設計
- 二零二五年度高空作業(yè)風險評估免責協(xié)議3篇
- 班級文化建設【共享-】
- 油松植苗施工方案
- 全國醫(yī)學博士英語統(tǒng)一考試詞匯表(10000詞全) - 打印版
- 最新《會計職業(yè)道德》課件
- 廣東省湛江市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細
- DB64∕T 1776-2021 水土保持生態(tài)監(jiān)測站點建設與監(jiān)測技術規(guī)范
- ?中醫(yī)院醫(yī)院等級復評實施方案
- 數(shù)學-九宮數(shù)獨100題(附答案)
- 理正深基坑之鋼板樁受力計算
- 學校年級組管理經驗
- 10KV高壓環(huán)網(wǎng)柜(交接)試驗
- 未來水電工程建設抽水蓄能電站BIM項目解決方案
- 房屋出租家具電器清單
評論
0/150
提交評論