摘 要:本論文以OpenCV圖像處理庫為基礎,采用QT作為圖形界面開發,具有人臉采集,圖片訓練,數據庫管理及人臉識別等功能,并且使用光線補償等方式提高識別率。
關鍵詞:OpenCV QT 人臉檢測 人臉識別
中圖分類號:TP31 文獻標識碼:A 文章編號:1672-3791(2013)07(b)-0004-02
近年來計算機視覺技術在視覺領域中取得了飛速的發展,并在其他領域中得到了廣泛的應用,人臉識別在圖像處理與視頻檢索、視頻監控、視頻顯示等方面占據著重要的位置。本文提出了基于OpenCV圖像處理庫的人臉檢測與識別系統,通過分析人臉檢測與識別的原理及方法設計了人臉檢測與識別系統,該系統具有人臉采集,圖片訓練,數據庫管理及人臉識別等功能,并且使用了光線補償等方式更好的進行圖像的處理和后期的識別。
1 系統的運行流程圖
該人臉檢測與識別系統的處理流程如圖1。
2 系統詳細設計及實現
2.1 人臉定位模塊
基于OpenCV的人臉檢測中,先進行圖像的采集,然后建立自適應模型并將該模型進行訓練,使用XML文件保存該訓練模型數據,有了這個模型后我們就可以從新使用新的模型來進行圖片的對比,把當前的圖片與該模型進行匹配得出的結果使用矩形進行標記,并在QT界面上畫出該目標區域。
2.2 人臉識別模塊
人臉識別的流程為,從攝像頭采集圖片后對圖片進行灰度化處理,分配PCA存儲空間,再使用級聯分類檢測器對圖片進行特征提取訓練。提取出采集的人臉圖片的特征,保存數據到facedata.xml文件。人臉識別的具體實現步驟和函數如下。
(1)得到一個32位的浮動圖像。
IplImage* convertFloatImage ToUcharImage(const IplImage *srcImg)
(2)保存源圖片的所有特征向量。
void FaceRec::storeEigenfaceImages()
(3)下載需要訓練的數據,并將訓練好的數據保存到xml文件中。
void FaceRec::learn()
{ szFileTrain = "40.txt"; //訓練數據的路徑
doPCA(); //為人臉訓練分配PCA空間
storeTrainingData(); //將訓練好的數據保存到xml文件中
if (SAVE_EIGENFACE_IMAGES)
{storeEigenfaceImages(); //保存這些訓練圖片為一張位圖 }
(4)從攝像頭中獲取一幀圖片。
int FaceRec::recFromFrame(IplImage *faceImage)
(5)從facedata.xml下載訓練好的數據。
int FaceRec::loadTrainingData(CvMat ** pTrainPersonNumMat)
(6)為圖片分配PCA空間。
void FaceRec::doPCA()
2.3 光線補償的模塊
從攝像頭對圖像進行采集會受到設備的干擾及環境因素的影響,從而會使圖像的色彩向某個固定的方向移動,例如色彩偏黃、變藍、變黑等。系統為了消除圖像的色彩偏差,需要對圖像的RGB三個分量值進行線性調整。使用檢測圖像中亮度在前10%的像素(參考白),按公式計算出調整值。整幅圖像的其他像素點的色彩值也都按這一調整尺度進行交換,通過這種技術可以更好的進行圖像的處理和后期的識別。
在QT下通過增加菜單欄,在其頂部添加一子目錄,將命名為“預處理”,并在其下方的屬性欄中命名為“彈出”菜單,右擊預處理則該選項會自動生成一個子菜單項,屬性名為“光線補償”,并在右下面的屬性中把ID號設置為ID_READY_LIG HTERGTHNSATE,對應文件FaceDetect.Cpp中的函數recognize()實現,并在recFromFrame(IplImage *faceImage)中添加如下代碼:
hDIBTempp = gDib.CopyHandle(hDIB);
gDib.LightingComper(hDIB);
GlobalUnlock(hDIB);
Invalidate();
光線補償通過對圖像的RGB進行轉換而使圖片的光線變亮或變暗,函數LightingComper()是類facerecognize的一個目標函數。
2.4 測試
3 結語
基于OpenCV圖像處理庫的人臉檢測與識別具有人臉采集,圖片訓練,數據庫管理及人臉識別等功能,系統采用Linux作為開發工具,利用QT作為圖形界面開發,使用面向對象的思想來編寫圖像處理模塊,并把該模塊的各個功能進行獨立出來,建立各個獨立的類,從而減少了程序之間的耦合性,增加了代碼的可重用性和可移植性,系統運行流暢,有廣泛的使用前景。
參考文獻
[1] 張惠發.人臉識別的關鍵問題研究[D].吉林大學,2012.
[2]李友坤.BP神經網絡的研究分析及改進應用[D].安徽理工大學,2012.
[3]褚勤.基于小波分析和支持向量機的人臉識別方法研究[D].華南理工大學, 2012.
[4]廖文軍.基于連續Adaboost算法的多角度人臉檢測技術研究與實現[D].南京郵電大學,2012.
[5]趙曉輝.基于改進的分塊LBP人臉識別算法研究[D].昆明理工大學,2012.