人臉識別 畢業(yè)論文.doc_第1頁
人臉識別 畢業(yè)論文.doc_第2頁
人臉識別 畢業(yè)論文.doc_第3頁
人臉識別 畢業(yè)論文.doc_第4頁
人臉識別 畢業(yè)論文.doc_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 姓名:陳冠君 畢業(yè)設計(論文)題目:基于逐成分分析(PCA)的人臉識別門進軟件開發(fā) 畢業(yè)設計(論文) 題目名稱:基于主成分分析(PCA)的人臉識別門禁軟件開發(fā) -人臉識別 院系名稱:計算機學院 班 級:計科092班 學 號:200900814214 學生姓名:陳冠君 指導教師:陸筱霞 2013 年 6 月II論文編號:200900814214基于主成分分析(PCA)的人臉識別門禁軟件開發(fā) -人臉識別Face recognition access control software development based on principal component analysis(PCA) -

2、Face Recognition院系名稱:計算機學院班 級:計科092班學 號:200900814214學生姓名:陳冠君指導教師:陸筱霞 2013 年 6 月中文摘要 隨著安全入口控制需求的快速增長,生物統(tǒng)計識別技術得到了新的重視。由于人臉的易采集、非接觸等優(yōu)點使得人臉特征作為人生物特征應用受到越來越多的關注,其中最主要就是人臉識別。本文主要介紹一個人臉識別門禁系統(tǒng)的核心功能模塊。本文的設計是基于OpenCV庫的,以VS2012軟件作為開發(fā)工具,主要從需求分析,系統(tǒng)概要設計,關鍵技術、詳細設計和實現(xiàn)幾方面來介紹開發(fā)過程,最后進行運行測試。在人臉檢測基礎上,提取人臉進行識別。在人臉識別方法上,本

3、軟件主要采用主成分分析法(PCA)。將大數(shù)據(jù)維度進行降維,投影到低維空間,利用歐氏距離計算置信度,達到閥值的訓練數(shù)據(jù)作為判定識別標準。關鍵詞:人臉檢測;人臉識別;主成分分析法(PCA);Abstract With the rapid growth of security access control, biometric identification technology has been a new emphasis. Easy acquisition of the face, the non-contact, etc. makes facial feature as biometric a

4、pplications are more and more attention, of which the most important is face recognition. This paper describes a face recognition access control system is the core functional modules. This design is based on the OpenCV library to VS2012 software as a development tool, mainly from the needs analysis,

5、 outline design, key technologies, detailed design and implementation aspects to introduce the development process, and finally run the test. On the basis of face detection, the extraction of face identification. Face recognition methods, the software using principal component analysis (PCA). The di

6、mensions of the big data dimensionality reduction, projected to low-dimensional space using the Euclidean distance to calculate the confidence to reach the threshold of training data as the decision to identify standards.Key words: Face Detection;Face recognition; principal component analysis(PCA);目

7、錄中文摘要3Abstract4目錄I第一章 緒論11.1 前言11.2課題應用背景與研究意義11.3 人臉識別類軟件的發(fā)展現(xiàn)狀21.4 系統(tǒng)可行性研究21.4.1 為什么選用OpenCV21.4.2 開發(fā)環(huán)境的配置21.5 本畢業(yè)設計工作和論文結構安排31.5.1 本畢業(yè)設計工作31.5.2 論文結構安排4第二章 系統(tǒng)需求分析42.1 功能需求42.2非功能需求52.2.1系統(tǒng)的易用性52.2.2系統(tǒng)可靠性52.2.3 系統(tǒng)可擴展性5第三章 系統(tǒng)概要設計53.1 設計思想53.1.1 人臉數(shù)據(jù)獲取方式53.1.2 人臉訓練識別方式63.1.3 添加功能提示63.2 系統(tǒng)功能結構設計6第四章 系

8、統(tǒng)詳細設計64.1 OpenCV主要函數(shù)介紹64.2 關鍵功能部分函數(shù)設計實現(xiàn)94.2.1攝像頭操作:94.1.2人臉檢測功能:94.1.3圖像特征訓練提?。?04.1.4訓練圖像保存:104.1.5身份識別驗證功能:10第五章 系統(tǒng)運行測試115.1 人臉識別系統(tǒng)模塊測試115.2 運行效果圖125.3 測試效率測評16第六章 小結18附 錄19附錄A:主要源程序19附錄B: 軟件使用說明書30附錄C: 光盤31第一章 緒論1.1 前言 人類進入世紀,隨著計算機和網(wǎng)絡技術的日漸發(fā)達,信息安全的隱患日益突出,自之后,各國越來越重視社會公共安全,信息識別和檢測顯得前所未有的重要。現(xiàn)今社會中主要采

9、用號碼、磁卡和口令等識別方法,隨著技術的發(fā)展,這些傳統(tǒng)的身份識別方法已受到越來越多的挑戰(zhàn),存在的易丟失、易偽造、易遺忘等諸多問題,可靠性也大為降低,生物體征作為每個人獨一無二的特征,進入人們眼界,成為新的信息識別和檢測技術的載體,從而指紋、虹膜以及人臉等作為主要依據(jù),得以發(fā)展。相對于其它的人體生物特征,人臉存在易采集、非接觸、靜態(tài)等優(yōu)點,比較容易被接受。在科技發(fā)展的時代,得到很大程度的發(fā)展,應用也越來越廣泛。尤其在國家安全、軍事安全和公共安全領域發(fā)揮重要作用,典型代表就是智能門禁、海關身份驗證、智能視頻監(jiān)控等應用。 近年來,隨著計算機性能提高和算法的不斷成熟,人臉識別技術得到很大發(fā)展,在證件驗

10、證、出入口安全監(jiān)控、信息安全、視頻監(jiān)控等許多應用都和人臉識別技術密切相關。1.2課題應用背景與研究意義 本課題根據(jù)學校要求,選用實際公司項目研究,在對人臉識別技術研究分析的基礎上,選定該題目。人類進入21世紀,隨著計算機和網(wǎng)絡技術的日漸發(fā)達,信息安全的隱患日益突出,自911之后,各國越來越重視社會公共安全,信息識別和檢測顯得前所未有的重要?,F(xiàn)今社會中主要采用號碼、磁卡和口令等識別方法,隨著技術的發(fā)展,這些傳統(tǒng)的身份識別方法已受到越來越多的挑戰(zhàn),存在的易丟失、易偽造、易遺忘等諸多問題,可靠性也大為降低,生物體征作為每個人獨一無二的特征,進入人們眼界,成為新的信息識別和檢測技術的載體,從而指紋、虹

11、膜以及人臉等作為主要依據(jù),得以發(fā)展。相對于其它的人體生物特征,人臉存在易采集、非接觸、靜態(tài)等優(yōu)點,比較容易被接受。在科技發(fā)展的時代,得到很大程度的發(fā)展,應用也越來越廣泛。本課題主要關注就是人臉識別,主要內容包括:圖像獲取及人臉檢測提取,人臉特征提取,人臉識別。實現(xiàn)方面,可以使用C+實現(xiàn)相關算法,也可以利用現(xiàn)有的函數(shù)庫。本課題主要是基于OpenCV開發(fā)的人臉識別門禁軟件。1.3 人臉識別類軟件的發(fā)展現(xiàn)狀 人臉識別系統(tǒng)的研究開始于20世紀60年代。其優(yōu)勢在于其自然性和不被被測試個體察覺的特點。人臉識別就是通過觀察比較人臉來區(qū)分和確定人的身份的。不被察覺的特點會使識別方法不令人反感,而且不容易引起人

12、注意故而不易被欺騙。相對指紋識別而言,人臉識別的非接觸特點,使得其更加友好,自然,被人們接受。隨著科技的發(fā)展和安全需求的增加,人臉識別技術應用已經(jīng)受到重視。 在公安刑偵領域,人臉識別技術應用十分廣泛,目前還逐漸向民用市場推廣,離人們的生活越來越近。發(fā)展前景不可限量,隨著數(shù)字化、信息化社會的到來,人們對人臉識別技術的了解和認識越來越多,人臉識別技術也越將越來越來成熟和完善。1.4 系統(tǒng)可行性研究 可行性研究是為了對問題進行研究,以最小代價在最短時間確定問題是否可解。經(jīng)過對項目詳細研究,初擬系統(tǒng)實現(xiàn)報告,對可能將要遇到的問題及解決方案進行設計和安排,明確開發(fā)風險和效益。1.4.1 為什么選用Ope

13、nCV近年來,大數(shù)據(jù)量,時勢性圖像處理廣泛應用于各個領域。各種各樣的圖像處理軟件包圍圖像分析和處理提供便利的同時也存在許多問題。英特爾公司提供的OpenCV類庫在VC+環(huán)境下進行圖像處理和計算機視覺編程的方法、和免費試用的優(yōu)勢,縮短相關程序開發(fā)周期,具有強大的實用價值,是指在相關軟件包中占據(jù)領先,成為一種流行的圖像處理軟件。選用OpenCV主要因為里面封裝的類庫可以直接使用,非常方便。它不依賴與其它的外部庫,擁有400多個免費的圖像處理函數(shù),涉及領域涵蓋了機器視覺的大多應用。1.4.2 開發(fā)環(huán)境的配置 對于OpenCV的配置,可以使用CMake編譯生成針對編輯器的工程,產(chǎn)生符合編譯器的庫。也可

14、以直接使用源碼中本身帶有的編譯好的庫。在這里我們使用自帶的庫文件 。1) 安裝OpenCV :將獲取的安裝文件安裝到D:opencv2.4.4opencv,并將對應使用的bin目錄D:opencv2.4.4opencvbuildx86vc11bin添加到環(huán)境變量PATH中;2) 配置VS2012 “項目”-“屬性”-“VC+目錄”中配置 包含目錄:添加D:opencv2.4.4opencvbuildinclude 庫目錄:添加D:opencv2.4.4opencvbuildx86vc11lib 對于依賴項配置有兩種方法,一種在項目屬性頁中“鏈接器”-“輸入” 中附加依賴項中添加需要用到的.li

15、b文件。第二種方法是在程序中加載,也就是本系統(tǒng)中使用的方法。#ifdef WIN32#ifdef _DEBUG#pragma comment(lib,opencv_highgui244d.lib)#pragma comment(lib,opencv_core244d.lib)#pragma comment(lib,opencv_imgproc244d.lib)#pragma comment(lib,opencv_video244d.lib)#pragma comment(lib,opencv_calib3d244d.lib)#pragma comment(lib,opencv_objdetec

16、t244d.lib)#pragma comment(lib,opencv_legacy244d.lib)#else#pragma comment(lib,opencv_highgui244.lib)#pragma comment(lib,opencv_core244.lib)#pragma comment(lib,opencv_imgproc244.lib)#pragma comment(lib,opencv_video244.lib)#pragma comment(lib,opencv_calib3d244.lib)#pragma comment(lib,opencv_objdetect24

17、4.lib)#pragma comment(lib,opencv_legacy244.lib)#endif#endif系統(tǒng)主要實現(xiàn)三大功能,人臉檢測,特征提取和人臉識別,輔助一些功能。具有開發(fā)可行性,因此可以開發(fā)該系統(tǒng)。1.5 本畢業(yè)設計工作和論文結構安排1.5.1 本畢業(yè)設計工作 本次畢業(yè)設計課題主要工作是在VS2012環(huán)境下通過OpenCV庫完成人臉檢測和人臉識別功能設計。 第一階段,搜索需求技術知識,配置系統(tǒng)開發(fā)環(huán)及功能這一階段主要是準備工作。主要是搜集圖像處理人臉識別的相關資料,了解OpenCV庫的相關知識,詳細了解了相關函數(shù),制定開發(fā)框架。系統(tǒng)在PC上搭建開發(fā)平臺。這里我們開發(fā)平臺選

18、擇Win7操作系統(tǒng)平臺,在VS2012環(huán)境下配置使用OpenCV庫。第二階段,實現(xiàn)各個功能在開發(fā)期間,主要實現(xiàn)一下功能:1) 從攝像頭獲取圖像并對圖像進行一定預處理;2) 從獲取圖像中檢測提取人臉區(qū)域;3) 提取人臉圖像并保存,同時寫入文件;4) 讀取文件,讀取圖像進行訓練得到特征信息;5) 保存的得到的特征信息至xml文件;6) 讀取xml文件,得到特征信息;7) 識別人臉,并計算置信度。8) 輔助功能實現(xiàn),包擴添加用戶,重置數(shù)據(jù),輸出特征圖像、平均圖像等。9) 從人臉數(shù)據(jù)庫中子集讀取人臉數(shù)據(jù)進行訓練,提取特征,并選取另一子 集人臉圖像進行識別測試。10) 查看生成的平均人臉圖像和特征人臉。

19、 最后完成開發(fā)測試,測試運行良好。1.5.2 論文結構安排 第一章:緒論:包括前言、應用背景與研究意義、人臉檢測定位及跟蹤發(fā)展現(xiàn)狀、系統(tǒng)可行性研究以及本文主要內容; 第二章:系統(tǒng)需求分析:包括功能需求、性能需求、運行需求; 第三章:系統(tǒng)概要設計:包括設計思想、系統(tǒng)功能結構圖; 第四章:系統(tǒng)詳細設計:功能模塊設計、各模塊的主要函數(shù)功能; 第二章 系統(tǒng)需求分析 隨著安全要求的不斷提高,人臉識別技術逐漸應用于各種場合,如門禁系統(tǒng),人臉簽到,人臉密碼等等,因此設計一個人臉識別軟件對于門禁系統(tǒng)可以擴展人臉識別技術的應用。對于人臉識別門禁系統(tǒng),有如下目標:1、操作簡單;2、識別精確度。 考慮到軟件應用場合

20、及主要功能,設計出操作簡單快捷的軟件,使得軟件簡單實用,符合大眾需求。2.1 功能需求 系統(tǒng)主要實現(xiàn)人身份識別,功能包括以下幾個方面:攝像頭操作:包括攝像頭打開與關閉,從攝像頭讀取圖像并顯示到界面上。檢測操作:從攝像頭畫面中檢測提取人臉。圖像保存功能:提取的人臉圖像保存為pgm圖片。文件讀寫功能:讀寫txt文件,保存提取人臉圖像信息;讀寫xml文件,保存讀取人臉特征等信息。添加用戶重訓練功能:添加用戶,重新訓練得到特征臉和人臉特征,并保存。人臉識別功能:識別顯示當前人臉身份。重置數(shù)據(jù)功能:清除原有訓練數(shù)據(jù),便于重新訓練。2.2非功能需求2.2.1系統(tǒng)的易用性由于此系統(tǒng)是面向非專業(yè)操作人員的實用

21、性程序,因此要求此系統(tǒng)具有易用性。2.2.2系統(tǒng)可靠性要求系統(tǒng)發(fā)生錯誤時,通知用戶錯誤信息,以保證系統(tǒng)可靠性。2.2.3 系統(tǒng)可擴展性軟件可擴展性是評價軟件性能一個重要指標。為了是系統(tǒng)具有一定可擴展性,設計過程中盡量使各個模塊相對獨立,為擴展留余地。第三章 系統(tǒng)概要設計 在人臉識別門禁軟件需求分析階段中,已經(jīng)將系統(tǒng)需求做了詳細闡述,本階段在此需求分析基礎上,對其做概要設計,意在解決實現(xiàn)該系統(tǒng)需求的模塊設計問題。3.1 設計思想3.1.1 人臉數(shù)據(jù)獲取方式 考慮到要進行人臉識別,首先要獲取人臉圖像數(shù)據(jù),要測試識別算法,需要大量數(shù)據(jù),因此我們采用公開的人臉圖像庫進行靜態(tài)圖像測試,再進而使用攝像頭獲

22、取人臉實現(xiàn)系統(tǒng)功能,故人臉數(shù)據(jù)獲取方式有兩種,一種是直接從人臉數(shù)據(jù)庫中獲取,另一種從攝像頭數(shù)據(jù)中檢測提取得到。3.1.2 人臉訓練識別方式 為保障可以添加用戶,實現(xiàn)多用戶使用識別,需要添加用戶功能,這樣就需要動態(tài)訓練人臉數(shù)據(jù),識別確認。訓練識別方法采用PCA算法處理,添加新用戶時重新對新的建立的數(shù)據(jù)庫進行訓練得到訓練數(shù)據(jù)。3.1.3 添加功能提示 為了使模塊功能清晰表現(xiàn),便于用戶操作,添加功能提示信息引導。3.2 系統(tǒng)功能結構設計本軟件設計實現(xiàn)主要兩部分:靜態(tài)人臉數(shù)據(jù)庫測試驗證部分和實時攝像頭中提取數(shù)據(jù)實際功能實現(xiàn)部分。第四章 系統(tǒng)詳細設計 此章節(jié)對人臉識別門禁系統(tǒng)實現(xiàn)功能實現(xiàn)進行詳細分析和設

23、計。4.1 OpenCV主要函數(shù)介紹 1) cvLoadImage 從文件中讀取圖像 IplImage* cvLoadImage(const char* filename,int flags=CV_LOAD_IMAGE_COLOR ); 函數(shù)cvLoadImage從指定文件讀入圖像,返回讀入圖像的指針。 其中filename是要被讀入的文件的文件名;flags指定讀入圖像的顏色和深度。 2)cvSaveImage 保存圖像到文件 int cvSaveImage( const char* filename, const CvArr* image ); 函數(shù)cvSaveImage保存圖像到指定文件

24、。其中filename保存文件名。image要保存的圖像。 圖像格式的的選擇依賴于filename的擴展名,只有8位單通道或者3通道(通道順序為BGR )可以使用這個函數(shù)保存。3)cvQueryFrame從攝像頭或者文件中抓取并返回一幀 IplImage* cvQueryFrame( CvCapture* capture );函數(shù)cvQueryFrame從攝像頭或者文件中抓取一幀,然后解壓并返回這一幀。這個函數(shù)僅僅是函數(shù)cvGrabFrame和函數(shù)cvRetrieveFrame在一起調用的組合。返回的圖像不可以被用戶釋放或者修改。其中capture視頻獲取結構。4)cvCaptureFromC

25、AM 初始化攝像頭CvCapture* cvCaptureFromCAM( int index );函數(shù)cvCaptureFromCAM給從攝像頭的視頻流分配和初始化CvCapture結構。其中index要使用的攝像頭索引。如果只有一個攝像頭或者用哪個攝像頭也無所謂,那使用參數(shù)-1應該便可以。5)cvHaarDetectObjects 用來檢測圖像中的人臉區(qū)域CVAPI(CvSeq*) cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double

26、scale_factor CV_DEFAULT(1.1), int min_neighbors CV_DEFAULT(3), int flags CV_DEFAULT(0), CvSize min_size CV_DEFAULT(cvSize(0,0), CvSize max_size CV_DEFAULT(cvSize(0,0);用于快速檢測人臉區(qū)域 ,便于提取得到人臉數(shù)據(jù)。其中image 為被檢圖像,cascade為 haar分類器級聯(lián)的內部標識形式,storage 為用來存儲檢測到的一序列候選目標矩形框的內存區(qū)域,scale_factor 在前后兩次相繼的掃描中,搜索窗口的比例系數(shù),例如

27、1.1指將搜索窗口依次擴大10%,min_neighbors 為構成檢測目標的相鄰矩形的最小個數(shù)(缺省1),flags 為操作方式,min_size 為檢測窗口的最小尺寸。缺省的情況下被設為分類器訓練時采用的樣本尺寸(人臉檢測中缺省大小是2020)。6)cvRectangle 繪制矩形 CVAPI(void) cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness CV_DEFAULT(1), int line_type CV_DEFAULT(8), int shift CV_DEFAUL

28、T(0);繪制出檢測到人臉區(qū)域并顯示,便于使用者觀看是否檢測出人臉,。其中img 為圖像,pt1 - 矩形的一個頂點,pt2 - 矩形對角線上的另一個頂點,color - 線條顏色 (RGB) 或亮度(灰度圖像 )(grayscale image),thickness - 組成矩形的線條的粗細程度,取負值時(如 CV_FILLED)函數(shù)繪制填充了色彩的矩形,line_type - 線條的類型。見cvLine的描述,shift - 坐標點的小數(shù)點位數(shù)。7)cvResize 重置圖像大小CVAPI(void) cvResize( const CvArr* src, CvArr* dst, int

29、interpolation CV_DEFAULT( CV_INTER_LINEAR );重置圖像大小,使圖像歸一到同樣大小。interpolation 插值方式:選擇用線性插值(CV_INTER_LINEAR)和區(qū)域插值(CV_INTER_AREA)。8)cvOpenFileStorage 打開存在或創(chuàng)建新的文件CVAPI(CvFileStorage*) cvOpenFileStorage( const char* filename, CvMemStorage* memstorage, int flags, const char* encoding CV_DEFAULT(NULL) );把訓練

30、數(shù)據(jù)保存至xml文件,通過此函數(shù)打開文件便于進行讀寫。flag有10種,這里用到其中讀和寫二種:CV_STORAGE_READ (打開文件讀數(shù)據(jù))和 CV_STORAGE_WRITE(打開文件寫數(shù)據(jù))。文件打開后 有寫操作和讀操作函數(shù):cvWrite();cvWriteInt();cvReadByName();cvReadIntByName()。9)cvCalcEigenObjects 計算引入矩陣的eigen vector(特征向量)、eigen value(特征根)、image average(影像平均值) 。 CVAPI(void) cvCalcEigenObjects( int nOb

31、jects, void* input, void* output,int ioFlags, int ioBufSize, void* userData, CvTermCriteria* calcLimit, IplImage* avg,float* eigVals );OpenCV 已經(jīng)實現(xiàn)PCA關鍵算法之一,計算出傳入圖像陣列的特征值、特征向量和平均值。其中nObjects為樣本個數(shù),input 為輸入的影響矩陣,output 為特征矩陣,calcLimit為回調結束條件,avg 為平均值,eigVals 特征根。10)cvEigenDecomposite 透過eigen vector和原始

32、影像集來解析每張圖片降維后對應的系數(shù)coefficients。CVAPI(void) cvEigenDecomposite( IplImage* obj, int nEigObjs, void* eigInput, int ioFlags, void* userData, IplImage* avg, float* coeffs );OpenCV 已經(jīng)實現(xiàn)PCA關鍵算法之一,對輸入圖像投影到子空間,計算投影各維度系數(shù),以此表示圖像。其中obj為輸入目標圖像,nEigObjs為選取的特征維數(shù),eigInput為向量組成的變換矩陣,數(shù)據(jù)結構屬于IplImage隊列,或者根據(jù)ioFlag參數(shù)值變化的

33、回調函數(shù),avg為平均值,coeffs 為輸入圖像對應的投影。11)cvConvertScale 使用線性變換轉換數(shù)組,得到可以保存顯示的圖像CVAPI(void) cvConvertScale( const CvArr* src,CvArr* dst, double scale CV_DEFAULT(1), double shift CV_DEFAULT(0) );OpenCV要保存顯示圖像,圖像數(shù)據(jù)必須是uchar格式,因此對于非uchar數(shù)據(jù)需要轉換。其中src 為輸入數(shù)組,dst 為輸出數(shù)組 ,scale 為比例因子,shift 為該加數(shù)被加到輸入數(shù)組元素按比例縮放后得到的元素上,采用

34、公式dst(I)=src(I)*scale + (shift,shift,.) 進行轉換。4.2 關鍵功能部分函數(shù)設計實現(xiàn) 4.2.1攝像頭操作:要實現(xiàn)系統(tǒng)功能,首要先從攝像頭中讀取數(shù)據(jù),為此,需要保證攝像頭開啟,為保證獲取畫面統(tǒng)一便于管理,通過cvSetCaptureProperty()函數(shù)設置攝像頭分辨率為常用值(320*240),讀取攝像頭數(shù)據(jù),返回 IplImage圖像數(shù)據(jù),該部分需要實現(xiàn)的是打開攝像頭、設置攝像頭分辨率屬性、讀取攝像頭圖像,還有使用完后釋放攝像頭資源操作。軟件啟動后若選擇不從文件中讀取信息,自動啟動攝像頭獲取圖片。按“ESC”鍵退出系統(tǒng)時自動回收資源,關閉攝像頭,釋放

35、攝像頭資源。4.1.2人臉檢測功能: 要實現(xiàn)人臉識別,首要先檢測出人臉。實現(xiàn)該功能,接收攝像頭中獲取的圖像數(shù)據(jù),進行灰度化等操作,利用Haar特征,使用強級聯(lián)分類器,搜索檢測人臉區(qū)域,提取出可能的最大臉,為防止誤檢,進一步在提取出的區(qū)域再次對人眼進行檢測,過濾掉檢測不到人眼的區(qū)域,從而有效地降低了人臉區(qū)域誤檢率,獲取真正需要的人臉區(qū)域。人臉區(qū)域獲取后,進一步提取出人臉圖像,為了訓練需要,還須對提取的圖像進行大小歸一化,使得得到的圖像大小統(tǒng)一,為了進一步提高后續(xù)識別效率,對圖像進行直方圖均衡化,最后得到所需圖像用于訓練和識別。4.1.3圖像特征訓練提?。豪弥鞒煞址治龇ǎ≒CA)算法對收集到的用

36、戶圖像進行降維訓練,提取人臉特征值。主成分分析法實現(xiàn)主要分為幾步完成: 1、去均值 2、計算協(xié)方差矩陣及其特征值和特征向量 3、計算協(xié)方差矩陣的特征值大于閾值的個數(shù) 4、降序排列特征值 5、去掉較小的特征值 6、去掉較大的特征值(可有可無) 7、合并選擇的特征值 8、選擇相應的特征值和特征向量 9、計算白化矩陣 10、提取主分量。讀取人臉訓練集,利用PCA算法得到特征人臉和平均人臉,在此基礎上把每張訓練人臉投影到特征臉空間中得到投影數(shù)據(jù)作為每幅人臉的特征臉。滿足系統(tǒng)要求,可能需要能夠識別多人身份,因此需要能夠添加用戶。系統(tǒng)啟動后,識別過程中,設置按下n鍵,進入添加用戶模式,輸入用戶名開始自動采

37、集用戶臉部圖像,開始訓練提取特征數(shù)據(jù)。4.1.4訓練圖像保存: PCA算法過程中會計算出人臉的平均臉信息,和特征臉信息,但得到的這些信息是無法直接顯示到屏幕上的,想要看到這些圖像,就需要把其加以轉換,得到可以直接顯示的格式。在這一階段,計算出其最大值和最小值,對于超出數(shù)值范圍和非數(shù)值的值進行過濾修改,然后利用cvConvertScale函數(shù)將float類型的值轉化為需要的uchar類型,然后調用cvshowImage進行保存。訓練數(shù)據(jù)保存與加載:對于利用PCA得到的訓練數(shù)據(jù)要在識別時使用,所以首先需要保存起來,在識別時讀取并當前數(shù)據(jù)匹配。這個階段主要涉及到文件的操作,包括文件的打開、關閉,寫數(shù)

38、據(jù)和讀數(shù)據(jù)。4.1.5身份識別驗證功能: 整個系統(tǒng)中最關鍵重要的就是身份識別功能,之前實現(xiàn)人臉檢測提取出當前用戶的臉部信息,PCA數(shù)據(jù)訓練得到平均人臉和人臉子空間等數(shù)據(jù)提供了基礎,在此基礎上,將當前用戶臉部圖像投影到人臉子空間中,然后找出與投影臉歐式距離最近的訓練人臉,計算距離與可信相似度,并與設置的閥值比較,當大于閥值時可以認為確認身份成功。當閥值設置過大時會使識別很困難,效率降低;而若閥值設置過小,容易把人臉識別錯誤,使得系統(tǒng)實用性降低,因此,選擇一個合適的閥值非常重要,而閥值的選取有沒有一個科學的準確依據(jù),因此使得確定合適閥值比較困難。 第五章 系統(tǒng)運行測試 一個軟件系統(tǒng)的功能實現(xiàn),首先

39、要設計好功能流程布局,然后根據(jù)軟件系統(tǒng)的要求編寫代碼,然后就是調試程序,最后完善總結。 其中最重要的也最關鍵的就是中間這兩部分。編寫代碼按部就班,照著流程走,一步步完善,最難的部分其實就是調試了,軟件編寫過程中, 尤其是比較大的軟件系統(tǒng)中,一次性編寫無誤,不需調試是不可能的。在此次畢業(yè)設計中印象最深的就是調試了。在調試過程中曾遇到了不少的問題,不過經(jīng)過查資料,不斷分析可能的情況,一點點找到出問題的地方,進而找到解決方法。整個系統(tǒng)開發(fā)調試測試結果如下:5.1 人臉識別系統(tǒng)模塊測試 表1: 攝像頭操作功能操作步驟操作描述期望結果實際結果測 試狀 態(tài)1啟動,進入視頻識別模式攝像頭被打開,窗口顯示畫面

40、攝像頭被打開,視頻顯示到窗口界面中通過2ESC系統(tǒng)退出攝像頭被關閉攝像頭被關閉通過結論:攝像頭操作功能運行正確。 表2: 基于人臉數(shù)據(jù)庫文件識別操作功能操作步驟操作描述期望結果實際結果測 試狀 態(tài)1輸入“train”進入測試訓練模式從人臉數(shù)據(jù)庫中讀取人臉提取特征,保存平均臉,特征臉,和投影臉等信息根據(jù)文件中提供的文件路徑讀取圖像訓練,得到并保存了平均臉,特征臉,和投影臉等信息通過2輸入“test”進入測試識別模式讀取測試人臉圖像,進行投影識別,并計算相似置信值,輸出結果根據(jù)文件中提供的路徑讀取測試人臉圖像,進行投影識別,并計算相似置信值,輸出了結果通過結論:基于人臉數(shù)據(jù)庫文件識別操作功能運行正

41、確。 表3: 基于攝像頭人臉識別部分操作功能操作步驟操作描述期望結果實際結果測 試狀 態(tài)1進入視頻識別模式檢測并標出攝像頭捕獲畫面中的人臉區(qū)域,識別用戶身份,輸出識別出的身份及置信度可以檢測并標出攝像頭捕獲畫面中的人臉區(qū)域,識別用戶身份,輸出識別出的身份及置信度通過2按f鍵,調整修改閥值在線調整修改閥值,控制識別結果閥值得到修改,識別結果同時得到控制通過3ESC系統(tǒng)退出窗口關閉,系統(tǒng)退出窗口關閉,系統(tǒng)退出通過結論:基于攝像頭人臉識別部分操作功能運行正確。 表4: 其它操作部分功能操作步驟操作描述期望結果實際結果測 試狀 態(tài)1保存圖像訓練過程自動保存平均臉和特征臉圖像平均臉和特征臉圖像得到保存通

42、過2按n鍵 ,添加用戶輸入用戶名,采集用戶臉部信息,重新在線訓練數(shù)據(jù)并保存輸入用戶名后,采集了用戶臉部信息,并重新在線訓練數(shù)據(jù)和保存所需數(shù)據(jù)通過4按e鍵,重置數(shù)據(jù)清除訓練數(shù)據(jù),便于重新設置數(shù)據(jù)清除了以前訓練的數(shù)據(jù) 通過 結論:測試運行正確。5.2 運行效果圖 1、基于人臉數(shù)據(jù)庫文件識別操作功能 按y鍵進入人臉圖像庫識別模式,在此模式下有train和test兩種操作: A):train 操作,讀取文件進行訓練,得到訓練數(shù)據(jù),并顯示平均臉和特征臉圖像。測試通過,結果如下圖: 圖5-1:讀取圖片集訓練數(shù)據(jù) 圖5-2:顯示平均人臉圖像圖5-3:顯示特征臉圖像,此為部分截圖 B):test操作,讀取測試

43、人臉集,識別身份,計算置信度。測試通過。結果如下圖5-4。 圖5-4 讀取測試人臉集,顯示識別信息2、 基于人臉數(shù)據(jù)庫文件識別操作功能 按n鍵進入攝像頭識別模式,顯示操作功能鍵介紹,自動打開攝像頭,如圖5-5圖5-5 攝像頭識別模式 在此模式下,n鍵添加用戶重新在線訓練數(shù)據(jù),測試通過,結果如圖5-6 圖5-6 添加用戶重訓練 圖5-7 人臉身份識別f鍵,修改調整閥值,輸入新的閥值,開始重新識別,測試通過,結果如圖5-8和圖5-9。 圖5-8 重新設置新閥值 圖5-9 新閥值下身份識別結果 5.3 測試效率測評 對于系統(tǒng)可靠性測試,測試其算法效率,采用從人臉圖像數(shù)據(jù)庫一個子集中讀取數(shù)據(jù)并從另一個

44、子集中身份識別,結果評定可以看出對同樣的測試數(shù)據(jù),每個人選5張圖片進行訓練時,雖訓練集的擴大,測試結果正確率越高,還可以看出對于已訓練的人測試時識別率是比較高的,達70%以上。通過增加每個人的人臉圖片數(shù),每人選10張圖片時,測試效率進一步提高。為了提高效率,在 攝像頭識別過程中,添加用戶時,每個人采集20張圖片進行訓練,并設置閥值,進一步過濾可能識別錯誤的結果。使得識別準確性得到較大提高,但同時影響識別速度,造成識別速度有所減慢,如果人臉正面至于攝像頭前,在1到2秒可以識別,還在可接受范圍內。圖5-10 4個人的每人5張臉訓練,測試結果圖5-11 6個人的每人5張臉訓練,測試結果圖5-12 8

45、個人的每人5張臉訓練,測試結果圖5-13 10個人的每人5張臉訓練,測試結果圖5-14 6個人的每人10張臉訓練,測試結果第六章 小結在這個學期的畢業(yè)設計中,學到了很多。學會了利用網(wǎng)絡、書籍詢問等各種方法查找獲取所需的信息,深刻體會到了課堂所學知識的不足,明白了學習是沒有止境的,自己的接觸面可得以再次擴寬,學到了很多新知識,并將這些知識應用到實際項目工作中來,理論和實踐相結合,學以致用。在整個畢業(yè)設計期間也曾遇到不少問題,不過在老師指導下和查找資料還是完成了工作,同時也學到了很多的新知識。在此人臉識別系統(tǒng)設計完成過程中,不僅熟練了學到的知識,而且學到了很多新知識,接觸到了opencv計算機視覺

46、這個相對全新的領域,更重要的是學會和強化了解決問題的能力,起初通過查找資料自己思考解決一部分問題,發(fā)現(xiàn)一些問題還是解決不了,然后學會了問老師,問同學,然后再思考測試驗證,問題一個個解決。通過此,明白了做事不能僅僅靠自己,雖然有時自己一個人單打也可以解決問題,但可能會浪費很多時間,相對效率會低很多,有些時間是完全沒有必要浪費的,學會與人合作,提高自己團隊意識和團隊協(xié)作能力,這個社會如今沒有團隊意識,只知一味單干是沒有出路的;當然,也不能完全依賴他人,這樣自己是得不到提高,一樣會被社會淘汰的。 致謝 在畢業(yè)設計這個過程中,遇到了很多困難,最大的困難就是新技術的學習和運用。在學習opencv和PCA

47、算法時候,通過網(wǎng)上查找相關文獻資料,論壇中尋找具體解析、去圖書館查閱資料,還有就是向他人求助,最終熟悉了它的使用,順利地完成了畢設設計的開發(fā)。在此,我對幫助過我的同學表示深深的感謝。 我非常感謝我的指導老師陸筱霞,還有另一位對我影響幫助很大的老師王璐,感覺他們對我的教導指導和幫助。王老師帶著我接觸了程序設計競賽,學習數(shù)據(jù)結構和算法設計,并抽時間給我們講算法,奠定了算法基礎。陸老師在畢業(yè)設計期間,嚴格要求我們,及時提出在項目開發(fā)中的不足和問題,使我少走了很多彎路,保證項目按時完成。 參考文獻:【1】 田印中, 董志學, 黃建偉, 基于PCA 的人臉識別算法研究及實現(xiàn). 2010.03.【2】李華

48、勝, 楊樺,袁保宗. 人臉識別系統(tǒng)中的特征提取. 2001,06.【3】 張翠平, 蘇光大.人臉識別技術綜述. 2000, 05.【4】 M.A. Turk and A.P. Pentland, “運用本征臉的人臉識別”, IEEE Conf. on Computer Vision【5】何東風,凌捷人臉識別技術綜述J微機發(fā)展,2003 【6】謝永林 PCA算法及其在人臉識別中的應用 2009 第6期【7】劉艷麗,趙躍龍人臉識別技術研究進展 J計算機工程,2005【8】何國輝 甘俊英 PCA類內平均臉法在人臉識別中的應用研究 2006 第3期【9】尹飛 馮大政 計算機技術與發(fā)展 基于PCA算法的

49、人臉識別 2008 第10期附 錄附錄A:主要源程序攝像頭人臉識別實現(xiàn)void recognizeFromCam(void)int i;CvMat * trainPersonNumMat; / the person numbers during trainingfloat * projectedTestFace;double timeFaceRecognizeStart;double tallyFaceRecognizeTime;CvHaarClassifierCascade* faceCascade;CvHaarClassifierCascade* eyeCascade;char cstr2

50、56;BOOL saveNextFaces = FALSE;char newPersonName256;int newPersonFaces;trainPersonNumMat = 0; / the person numbers during trainingprojectedTestFace = 0;saveNextFaces = FALSE;newPersonFaces = 0;printf(Recognizing person in the camera .n);/ Load the previously saved training dataif( loadTrainingData(

51、&trainPersonNumMat ) ) faceWidth = pAvgTrainImg-width;faceHeight = pAvgTrainImg-height;else printf(Couldnt load the training data,please first hit nto add the person.n);/ Project the test images onto the PCA subspaceprojectedTestFace = (float *)cvAlloc( nEigens*sizeof(float) );/ Create a window for the user to see the camera image./cvNamedWindow(FaceReconize, CV_WINDOW_AUTOSIZE);/ Make sure there is a data folder, for storing the new person.mkdir(data);/ Load the HaarCascade classifier for face detection.faceCascade = (CvHaarClassifierCascade*)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論