人臉檢測與識別軟體包
Wikipedia,自由的百科全书
目錄 |
[編輯]
人臉檢測嵌入式演算法(ARM, TI DSP)軟體包
Haar+AdaBoost是目前最為成熟的人臉檢測演算法,OpenCV提供的Cascade Classifier為浮點運算,無法在不支持硬體浮點的嵌入式設備上實現實時人臉檢測。本人臉檢測軟體包有如下優點:
- 定點運算
- 可在嵌入式設備上實現實時人臉檢測(ARM9 400MHz,320x240圖像,每秒可處理3-4幀;在TI DSP上通過並行運算,可達到25FPS)。
- 代碼簡煉
- 去除了OpenCV中所有跟人臉檢測無關的所有代碼,並對代碼進行了優化。
- API與OpenCV相容
- 函數名也為cvHaarDetectObjects,參數基本相同。
- 級聯分類器與OpenCV相容
- 軟體包提供了API,能自動將OpenCV格式(XML格式)的浮點級聯分類器轉為定點分類器。
- 通過使用其他分類器,可以實現人眼檢測,側臉檢測等其他物體檢測
- 使用網上的開源分類器(XML文件),或者自己訓練的分類器來檢測各種物體。
[編輯]
人臉檢測API
CvSeq* cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, int scale_factor32x =36, int min_neighbors = 3, int flags = 0, CvSize min_size =cvSize(0,0) );
[編輯]
人臉識別演算法軟體包
演算法原理:採用人臉紋理統計特征對人臉進行識別。
- 用戶可選用PC(浮點)版本或嵌入式(定點)版本
- 用戶可根據自己的需求選擇
- 人眼定位的關鍵步驟“人眼檢測”的分類器已經提交到OpenCV
- 如果用戶僅僅對人眼檢測(粗定位)感興趣,可不必購買軟體包,直接下載左眼和右眼的分類器使用OpenCV調用則可:左眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_lefteye_2splits.xml 右眼 http://opencvlibrary.svn.sourceforge.net/viewvc/opencvlibrary/trunk/opencv/data/haarcascades/haarcascade_righteye_2splits.xml
[編輯]
人臉識別軟體包API
class CFaceRecogn { public: /* false: 不在臉上畫矩形框 true: 在臉上畫矩形框 */ bool m_bShowRectOnFace; //default value is false; /* sDBDir會直接傳給LoadFaceDB()函數,此參數的說明請參考LoadFaceDB()函數 */ CFaceRecogn(char * sDBDir=NULL); ~CFaceRecogn(); /* 重新從硬碟裝載人臉數據,裝載前會自動釋放上次裝載的數據, 本函數會在構造函數中調用,所以只有在重新註冊了新數據後,才有必要調用此函數 如果sDBDIR的值為NULL,那麼則會使用預設目錄:當前目錄下的"facedb"目錄; 否則從指定人臉庫目錄下裝載數據; 支持相對路徑和絕對路徑。 ************classifier目錄必須跟facedb目錄併列,位於同一目錄下************ 返回值是成功裝載的人數(非特征樣本總數,特征樣本數大於人數) */ int LoadFaceDB(char * sDBDir=NULL); /* 獲取當前人臉資料庫所在目錄 */ const char * GetFaceDBDir(); /* 從pImage里檢測人臉的位置,並將此人臉註冊,註冊的名字為sName 如果圖像中不存在人臉(或未檢測到符合標準的臉),返回值為{0,0,0,0} 如果存在>=1副人臉,不註冊,切返回值為{-n,-n,-n,-n},n是圖像中臉的個數 pImage: BGR圖像,輸入 sName: 最大長度為128位元組,輸入 sFaceFile: 保存在硬碟上的人臉小圖片文件名,為輸出變數 */ CvRect DetectRegisterFace(IplImage *pImage, char * sName, char * sOriFaceFile=NULL); /* 從pImage里檢測人臉的位置,並識別此人臉,人臉的名字返回到sName中 如果圖像中不存在人臉(或未檢測到符合標準的臉),返回值{0,0,0,0} 如果存在>=1副人臉,隨機選擇一副識別並返回臉的位置 pImage: BGR image sName: buffer,此變數存儲人名。如果圖像中無臉,或有臉但無法識別,則返回空字元串 返回值:如果有>=1副人臉,則從中選擇認識的人臉並返回該臉位置,如果無認識的臉則返回{0,0,0,0} 如果沒有人臉,則返回{0,0,0,0} */ CvRect RecognizeFace(IplImage *pImage, char *sName); };
[編輯]
軟體包提供方式
本軟體包以有償方式提供。為滿足不同用戶的需求,軟體包以如下三種方式提供。
| 提供方式 | 允許拷貝份數 | 價格 | 備註 |
|---|---|---|---|
| 有限使用的二進位庫 | 200,超過200份拷貝需要額外付費 | 低(約 X萬元) | 適合產品的前期開發 |
| 無限使用的二進位庫 | 無限 | 中(約 1x萬元) | 適合在大量產品中使用 |
| 全部源代碼(C語言) | 無限 | 高(約 XX萬元) | 擁有無限制複製,並修改源代碼的權力。 |
[編輯]
聯繫方式
- 單位:中科院深圳先進技術研究院(http://www.siat.ac.cn)
- 聯繫人email:sq.yu (at) siat.ac.cn (請將前面的(at)替換為@)


