日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

OpenCV&Qt學(xué)習(xí)之四

 牛人的尾巴 2014-09-30

OpenCV&Qt學(xué)習(xí)之四——OpenCV 實現(xiàn)人臉檢測與相關(guān)知識整理

開發(fā)配置

OpenCV的例程中已經(jīng)帶有了人臉檢測的例程,位置在:OpenCV\samples\facedetect.cpp文件,OpenCV的安裝與這個例子的測試可以參考我之前的博文Linux 下編譯安裝OpenCV。

網(wǎng)上能夠找到關(guān)于OpenCV人臉檢測的例子也比較多,大多也都是基于這個例程來更改,只是多數(shù)使用的是OpenCV 1.0的版本,而OpenCV2.0以后由于模塊結(jié)構(gòu)的更改,很多人并沒有將例程運(yùn)行起來。如果是新版的OpenCV跑舊的例程,編譯運(yùn)行出錯的話,需要確保:

  1. #include "opencv2/objdetect/objdetect.hpp" 頭文件被引用,老的頭文件包含可能會提示找不到定義
  2. libopencv_objdetect243.dll.a 庫需要加入鏈接

之前找了幾個例程,不盡如人意,于是決定還是改自帶的例程更靠譜,更多的信息,已經(jīng)在程序中添加注釋,參見程序吧。

pro文件的工程配置,具體路徑按照安裝路徑更改,Linux下也一樣。

人臉檢測基礎(chǔ)知識整理

下面整理下人臉檢測的相關(guān)知識。

人臉檢測從整體來看分為四個部分:

1、Face detection 人臉識別,即識別出這是人的臉,而不管他是誰的。

2、Face preprocessing 面部預(yù)處理,即提取出臉部圖像。

3、Collect and learn faces 臉部的特征采集和學(xué)習(xí)

4、Face recognition 臉部識別,找出最相近的相近臉部圖像。

“基于知識的方法主要利用先驗知識將人臉看作器官特征的組合,根據(jù)眼睛、眉毛、嘴巴、鼻子等器官的特征以及相互之間的幾何位置關(guān)系來檢測人臉?;诮y(tǒng)計的方法則將人臉看作一個整體的模式——二維像素矩陣,從統(tǒng)計的觀點(diǎn)通過大量人臉圖像樣本構(gòu)造人臉模式空間,根據(jù)相似度量來判斷人臉是否存在。在這兩種框架之下,發(fā)展了許多方法。目前隨著各種方法的不斷提出和應(yīng)用條件的變化,將知識模型與統(tǒng)計模型相結(jié)合的綜合系統(tǒng)將成為未來的研究趨勢。”(來自論文《基于Adaboost的人臉檢測方法及眼睛定位算法研究》)

人臉檢測算法的可靠性很大程度上依賴于分類器的設(shè)計,在2001年,Viola和Jones兩位大牛發(fā)表了經(jīng)典的《Rapid Object Detection using a Boosted Cascade of Simple Features》【1】和《Robust Real-Time Face Detection》【2】,在AdaBoost算法的基礎(chǔ)上,使用Haar-like小波特征和積分圖方法進(jìn)行人臉檢測,他倆不是最早使用提出小波特征的,但是他們設(shè)計了針對人臉檢測更有效的特征,并對AdaBoost訓(xùn)練出的強(qiáng)分類器進(jìn)行級聯(lián)。這可以說是人臉檢測史上里程碑式的一筆了,也因此當(dāng)時提出的這個算法被稱為Viola-Jones檢測器。又過了一段時間,Rainer Lienhart和Jochen Maydt兩位大牛將這個檢測器進(jìn)行了擴(kuò)展【3】,最終形成了OpenCV現(xiàn)在的Haar分類器。在OpenCV2.0中又?jǐn)U充了基于LBP特征的人臉檢測器,某些情況下LBP特征比Haar來的更為快速。

在進(jìn)行識別時首先通過大量的具有比較明顯的haar特征(矩形)的物體圖像用模式識別的方法訓(xùn)練出分類器,分類器是個級聯(lián)的,每級都以大概相同的識別率保留進(jìn)入下一級的具有物體特征的候選物體,而每一級的子分類器則由許多haar特征構(gòu)成(由積分圖像計算得到,并保存下位置),有水平的、豎直的、傾斜的,并且每個特征帶一個閾值和兩個分支值,每級子分類器帶一個總的閾值。識別物體的時候,同樣計算積分圖像為后面計算haar特征做準(zhǔn)備,然后采用與訓(xùn)練的時候有物體的窗口同樣大小的窗口遍歷整幅圖像,以后逐漸放大窗口,同樣做遍歷搜索物體;每當(dāng)窗口移動到一個位置,即計算該窗口內(nèi)的haar特征,加權(quán)后與分類器中haar特征的閾值比較從而選擇左或者右分支值,累加一個級的分支值與相應(yīng)級的閾值比較,大于該閾值才可以通過進(jìn)入下一輪篩選。當(dāng)通過分類器所有級的時候說明這個物體以大概率被識別。

程序設(shè)計

如果單純是對功能進(jìn)行實現(xiàn),有了官方自帶的例程做參考,移植實現(xiàn)并不是很難,幾乎不用費(fèi)太大的功夫,自帶例程對照著OpenCV參考手冊還是比較好理解,這部分例程已經(jīng)成功在Linux(Ubuntu和嵌入式Linux)以及Windows下實現(xiàn),后面實驗室基于Qt設(shè)計的實驗軟件,也整合了進(jìn)去。

程序參考本文后面給出的參考程序,當(dāng)然最權(quán)威的還是軟件自帶例程,實現(xiàn)人臉檢測的另外一個關(guān)鍵就是訓(xùn)練文件,基于Haar和LBP特征的人臉檢測可以自動的對大量數(shù)據(jù)圖片進(jìn)行訓(xùn)練,訓(xùn)練結(jié)果存儲在XML文件中以供使用,這些級聯(lián)分類器一般需要訓(xùn)練上千幅人臉圖片和上萬幅非人臉圖片,這些訓(xùn)練過程往往需要很長的時間(LBP特征需要幾個小時,Harr特征可能甚至需要一個星期)不過OpenCV已經(jīng)提供了不同種類的訓(xùn)練好的文件,因此我們可以方便的通過載入這些訓(xùn)練好的級聯(lián)分類器XML文件來實現(xiàn)人臉、眼睛、鼻子等檢測。

OpenCV的訓(xùn)練文件在源碼目錄的data文件夾下,里面包含haarcascades、hogcascades、lbpcascades,在haarcascades文件下包含大量的針對不同目標(biāo)的訓(xùn)練文件,如下圖所示:

image

文件名已經(jīng)體現(xiàn)了文件的功能,因此只需要載入對應(yīng)的文件即可。

到這里還只是進(jìn)行了一個非常初步的研究,下一步的學(xué)習(xí)和識別還需要多多積累。

實驗

根據(jù)自帶例程,將人臉檢測算法加入我所做的實驗軟件中,分別選擇不同的分類器進(jìn)行實驗,下圖為實驗結(jié)果。

image

人臉檢測實驗

imageimage

實現(xiàn)特定的器官檢測右眼、鼻子等檢測

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多