国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于OpenCV 的視頻人臉檢測

2019-10-15 06:55沈娟安慶職業(yè)技術(shù)學(xué)院徐英君安慶市公安局
數(shù)碼世界 2019年10期
關(guān)鍵詞:級聯(lián)檢測器算子

沈娟 安慶職業(yè)技術(shù)學(xué)院 徐英君 安慶市公安局

隨著互聯(lián)網(wǎng)的普及,以及移動網(wǎng)絡(luò)網(wǎng)的大踏步發(fā)展,互聯(lián)網(wǎng)滲透到人們生活的每一個角落。人臉識別也得到了更廣泛的應(yīng)用如人臉解鎖、人臉付款、人臉追蹤等。人臉識別的第一步通常是篩選和定位出圖片或視頻中的人臉,也就是人臉檢測。人臉檢測是指對于任意一幅給定的圖像,采用一定的策略對其進行搜索以確定其中是否含有人臉,如果是則返回人臉的位置、大小和姿態(tài)。

OpenCV(Open Source Computer Vision Library)由 Intel公司開發(fā),是開源的視覺算法庫,由C 和 C++ 函數(shù)組成。本文借助OpenCV 的人臉檢測程序采用了統(tǒng)計模型方法中的的Viola & Jones人臉檢測方法,與Adaboost 算法相結(jié)合,Adaboost 算法的循環(huán)中,首先利用各種弱分類器對訓(xùn)練圖片庫進行分類,準確度最高的弱分類器保留下來,同時提高判斷錯誤圖片的權(quán)重,進入下一個循環(huán)最終將每次的循環(huán)所保留的弱分類組合起來,成為一個準確的人臉檢測器稱為強分類器。

1 OpenCV 人臉檢測原理

OpenCV 的人臉檢測程序采用了統(tǒng)計模型方法中的的Viola &Jones 人臉檢測方法,Viola & Jones 人臉檢測方法是由Viola 和Jones于2001 年左右提出。

Viola & Jones 人臉檢測方法原理

該方法中幾個關(guān)鍵性概念:

1.1 Haar-like 特征

Haar-like 型特征是Viola 等人提出的一種簡單矩形特征,因為類似Haar 小波而得名。Haar 型特征的定義是黑色矩形和白色矩形在圖像子窗口中對應(yīng)的區(qū)域的權(quán)重灰度級總和之差。上圖顯示了兩種最簡單的特征算子。在上述圖中,可以看到,在人臉特定結(jié)構(gòu)處,算子計算得到較大的值。

1.2 積分圖

算子數(shù)量龐大時上述計算量會太大,Viola 等人發(fā)明了積分圖方法,使得計算速度大大加快。積分圖如上所示,點1 處的值為A 區(qū)域的像素積分,點2 處的值為AB 區(qū)域的像素積分。對整張圖片進行一次積分操作,便可以方便的計算出任一區(qū)域D 像素積分值為4+1-2-3.

1.3 Adaboost 訓(xùn)練算法

在離散Adaboot 算法中,Haar-like 特征算子計算結(jié)果減去某閾值,便可視為一個人臉檢測器。因為準確率不高,稱為弱分類器。Adaboost算法的循環(huán)中,首先利用各種弱分類器對訓(xùn)練圖片庫進行分類,準確度最高的弱分類器保留下來,同時提高判斷錯誤圖片的權(quán)重,進入下一個循環(huán)最終將每次的循環(huán)所保留的弱分類組合起來,成為一個準確的人臉檢測器稱為強分類器。

1.4 瀑布型級聯(lián)檢測器

瀑布型級聯(lián)檢測器是針對人臉檢測速度問題提出的一種檢測結(jié)構(gòu)。瀑布的每一層是一個由Adaboost 算法訓(xùn)練得到的強分類器。設(shè)置每層的閾,能夠使大多數(shù)人臉通過,在此基礎(chǔ)上盡可拋棄反例。位置越靠后的層越復(fù)雜,具有越強的分類能力。

瀑布型級聯(lián)檢測器結(jié)構(gòu)就像一系列的篩孔大小遞減的篩子,每一步都能篩除一些漏下反例,最終通過所有篩子的樣本被接受為人臉。

2 開發(fā)環(huán)境OpenCV

OpenCV是一個基于BSD 許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android 和Mac OS 操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB 等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。

3 基于OpenCV 的Python 的人臉檢測的實現(xiàn)

OpenCV 中對于人臉檢測的模型已經(jīng)建立了一個XML 文件,其中包含了上面面提到的harr 特征的分類器訓(xùn)練結(jié)果,我們可以通過加載這個文件而省略掉自己建立級聯(lián)表過程。有了級聯(lián)表,我們只需要將待檢測圖片和和級聯(lián)表一同傳遞給OpenCV 的目標(biāo)檢測算法即可得到一個檢測到人臉的集合。

3.1 配置軟件環(huán)境

(1) 下載Python2.73,安裝,并配置Python 環(huán)境變量:"C:Program FilesPython27;"(這里我們安裝在C 盤下,亦可以安裝在其他位置)

(2)下載OpenCV2.46,安裝,并配置OpenCV 環(huán)境變量:"D:Program Filesopencvuildx86vc10in";(這里我們安裝在d盤下,亦可以安裝在其他位置

(3) 下 載NumPy1.62,安 裝,版 本:numpy-1.6.2-win32-superpack-python2.7;(注意:要與Python 版本必須兼容,即文件名需含有“python2.7”)

(4) 把OpenCV 目 錄 "D:Program Filesopencvuildpython2.7" 下的文件 "cv2.pyd"

復(fù)制 到Python 目錄 "c:Program FilesPython27Libsitepackages"下。

3.2 代碼實現(xiàn)

步驟一:獲取幀及圖片預(yù)處理

讀取視頻中一個幀(一張圖片),然后對這張圖片進行一些預(yù)處理:

讀取視頻中的幀(一張圖片)

將圖片從RGB 模式轉(zhuǎn)為灰度圖

進行灰度圖直方圖均衡化操作

Python 代碼:

步驟二:檢測并標(biāo)記目標(biāo)

OpenCV 中的XML 文件已包含harr 特征的分類器的訓(xùn)練結(jié)果,這里我們直接加載這個文件而不是自建立級聯(lián)表。接下來我們只需要將待檢測的圖片和級聯(lián)表一同傳遞給OpenCV 的目標(biāo)檢測算法,就可得到一個檢測發(fā)現(xiàn)到的人臉的集合。

Python 代碼:

#detect 函數(shù)是參照級聯(lián)表cascade 對圖片imge 進行檢測,返回人臉的集合

步驟三:保存含有人臉的幀(圖片)到指定的地址

如果幀中(圖片)中存在人臉,將此幀保存到指定的文件中。

Python 代碼:

效果圖1:

經(jīng)試驗測試,本程序可以完成大部分人臉的檢測,但在角度、光照、遮擋等因素的影響下,任有部分人臉不能正確檢測。

4 結(jié)論

本文介紹了如何使用OpenCV 來實現(xiàn)對視頻文件進行人臉檢測,從而幫助視頻偵查時減輕肉眼檢測視頻的勞動強度。相對于功能強大的OpenCV 及大量的算法實現(xiàn)來說,文中涉及到的內(nèi)容只是計算機視覺中很小的一部分。讀者可以考慮將其應(yīng)用到更為廣泛的領(lǐng)域中,如將其應(yīng)用到視屏監(jiān)控的實時檢測記錄中以及遠程監(jiān)控中,使得其在視頻偵查中得到更為廣泛的應(yīng)用。

猜你喜歡
級聯(lián)檢測器算子
鈾濃縮廠級聯(lián)系統(tǒng)核安全分析
有界線性算子及其函數(shù)的(R)性質(zhì)
參數(shù)可調(diào)的聯(lián)合子空間目標(biāo)檢測方法 *
基于交通誘導(dǎo)的高速公路交通檢測器布設(shè)方案研究
Domestication or Foreignization:A Cultural Choice
基于均勻性判定規(guī)則的統(tǒng)計MIMO雷達多通道融合檢測技術(shù)
QK空間上的疊加算子
否定選擇算法中高性能檢測器的生成
整體級聯(lián)式增壓空氣冷卻器的進氣模塊
一種改進的脈沖級聯(lián)分離中間組分
眉山市| 靖宇县| 堆龙德庆县| 巴彦县| 海林市| 故城县| 琼海市| 满洲里市| 昌都县| 仪征市| 修文县| 饶河县| 揭东县| 三亚市| 旬阳县| 龙南县| 布拖县| 西林县| 钦州市| 烟台市| 中阳县| 内丘县| 吴忠市| 开阳县| 恩平市| 南开区| 沂水县| 大荔县| 青冈县| 冕宁县| 黑山县| 银川市| 苍山县| 宽城| 额尔古纳市| 建水县| 淮安市| 凌云县| 武汉市| 广德县| 巴彦县|