韓 進 秦宏超 楊穎超 劉文武
(山東科技大學信息科學與工程學院,山東 青島 266590)
基于OpenCV的嵌入式智能門禁系統設計
韓 進 秦宏超 楊穎超 劉文武
(山東科技大學信息科學與工程學院,山東 青島 266590)
基于智能家居安防系統中安全性的需求,以三星S3C6410嵌入式核心芯片為平臺,以OpenCV技術為核心,設計實現了具有人臉識別功能的智能安防門禁系統。本智能門禁系統首先將授權人的人臉信息進行灰度化、降維及計算特征值等處理,再進行準備訓練,得到授權人的相關信息。然后對攝像頭采集到的人臉信息進行處理。將授權人的人臉信息與采集到的人臉信息進行比對,判定門禁系統是否開放。經過測試,該智能門禁系統較好的完成了人臉識別功能,實現了門禁系統的設計要求。本設計已成功應用于智能家居安防系統中。
OpenCV;人臉識別;門禁系統;嵌入式
由于現代家居理念越來越追求高效化、便捷化、智能化,使得人們對于將住宅有了更高的要求,如:高度安全、舒適、方便及可以完成住戶基本要求等。智能家居成為強烈的消費需求,家居智能化大勢所趨。而在智能家居系統中,最重要的一點就是高度的安全性。要保證智能家居系統的高度安全性,首先需要的就是一個安全可靠的門禁系統。本文以三星S3C6410嵌入式核心芯片為基礎,以OpenCV技術為核心,設計實現了一套具有高度安全性的帶有智能人臉識別功能的智能門禁系統。
門禁安防系統作為智能家居系統的重要組成部分,以保證智能家居的高度安全性為目的。以OpenCV為核心技術的帶有人臉識別功能的智能門禁系統,在保證授權的家庭成員通過門禁系統的同時,保證未授權的人員不能通過門禁系統,有效的減少了家居生活中非法闖入的發生。
1.1 硬件設計
本設計采用三星S3C6410嵌入式核心芯片為平臺,采用S3C6410X高性能嵌入式處理器,主頻可以達到667MHz。S3C6410芯片搭載的內存為256M Mobile DDR。閃存為128M Nandflash以及8M Norflash。而且S3C6410處理器內置OpenGL 2D/3D圖形硬件加速器、編解碼器等。
系統的硬件組成如圖1所示:

圖1 硬件組成框圖
1.2 OpenCV算法
此次基于OpenCV為核心所設計的智能門禁系統,完成以智能人臉檢測為目標的功能,使得門禁系統對授權用戶開放,而對未授權用戶,門禁系統則不予開放。
為實現人臉檢測功能,筆者采用OpenCV的Viola-Jones算法進行人臉檢測的操作。Viola-Jones算法是在AdaBoost算法[1]的基礎上發展起來的。
AdaBoost算法是一種將同一訓練集訓練不同弱分類器集合起來構成一個更強的強分類器的迭代算法。該算法是通過改變數據分布實現的,其根據每次訓練集中樣本的準確率來確定樣本的權值,而后將權值新數據傳送給下層分類器,將訓練后的分類器結合起來,成為一個強分類器。
AdaBoost算法本質上是一個弱分類器提升的過程,整個過程具體如下:
通過對多個訓練樣本學習得到第一個弱分類器;
將分錯的樣本與新數據構成新訓練樣本,通過學習得到第二個弱分類器;
重復步驟二的過程,得到多個弱分類器;
最終經過提升得到一個強分類器。
Viola-Jones算法[2]是在AdaBoost算法基礎上利用Haar-like小波特征[3]和積分圖進行人臉檢測的算法。Viola-Jones算法方法框架可以分為以下3部分。
(1)使用Haar-like特征表示人臉,使用“積分圖”實現特征數值的快速計算;
(2)使用Adaboost算法挑選出一些最能代表人臉的矩形特征(弱分類器);
(3)按照加權投票的方式將弱分類器構造為一個強分類器;將訓練得到的若干強分類器串聯組成一個級聯結構的層疊分類器。
該算法設計了針對人臉檢測更有效的特征,并且對AdaBoost訓練出來的強分類器進行了級聯,提高了人臉檢測的效率,可謂人臉檢測史上的一個里程碑。
Viola-Jones算法的主要特點是在訓練分類器的同時進行特征選擇。它使得每個特征對應于一個弱分類器,弱分類器的數目是與矩形特征數目相等。訓練過程中從大量的弱分類器作為本輪訓練結果,這樣經過T次迭代,選擇出了T個特征(弱分類器),最終按照加權投票的方式組合成一個強分類器。
定義X表示樣本空間,Y={0,1}表示樣本類別標識集合,1和0分別對應樣本的正(人臉)和負(非人臉);假定共有K個矩形特征;εt表示第t輪循環第i個樣本的權重;訓練強分類器具體算法描述如下:
(1)給定一系列訓練樣本(x1,y1),…,(xn,yn),其中x∈X,yi∈y,假設樣本集中共有l個正樣本,m個負樣本,l+m=n;
(3)Fort=1,…,T(T為循環次數)
Viola-Jones算法直接導致了OpenCV中Haar分類器算法的形成。
Haar分類器算法由Haar-like特征、積分圖方法、Adaboost算法與級聯組成。Haar-like特征其實就是不同區域內所有像素和的差值。Haar-like特征分為:邊緣特征、線性特征與中心特征和對角線特征。邊緣特征主要用來檢測圖像的水平、垂直、45°和135°邊緣;線性特征主要用來檢測水平、垂直、45°和135°方向不同粗細的直線特征;中心特征和對角線特征主要用來檢測圖像孤立點及對角特性。
在此基于OpenCV的智能門禁系統中,筆者檢測的人臉圖像為灰度圖像,所以,筆者把人臉特征值定義為矩形人臉區域中,白色區域像素和與黑色區域像素和的差值。人臉特征值是用于區分人臉與非人臉的標準。
利用OpenCV進行人臉識別檢測的算法思路框圖如圖2所示:

圖2 OpenCV算法思路框圖
2.1 OpenCV項目配置及文件說明
2.1.1 項目配置
利用Qt軟件來制作基于OpenCV的智能門禁系統的UI界面。在使用Qt進行項目配置時,Build configuration選擇Release模式,Qt version選擇ARM 4.6.1。在使用Qt的過程中采用相關的Net功能,并且指定該基于OpenCV的智能門禁系統用于完成人臉檢測功能所需要的OpenCV頭文件目錄、OpenCV庫文件目錄及JPEG庫文件目錄。
2.1.2 項目文件說明
Forms目錄下的mainwidget.ui為UI界面主文件。Headers/server目錄下的zigbeetopo.h為Zigbee服務器文件。Sources/server目錄下的facedetect.cpp為人臉檢測主文件,facerecognize.cpp為人臉識別主文件,facewidget.cpp為人臉顯示主文件,lwwthread.cpp為控制人臉識別線程的主文件。文件項目目錄如圖3所示:

圖3 文件項目目錄
2.1.3 UI界面的相關設置
在UI人機交互界面上添加人臉顯示區域、顯示系統中存入人臉圖像的區域及對系統中的存儲的人臉信息進行相關操作的按鍵,如:加入、刪除、上移、下移等。
2.1.4 相關代碼的編寫
本論文設計的智能識別人臉門禁系統中的人臉識別功能是以采集到的授權人的人臉信息為基石來完成的[4]。編碼過程中最核心的部分為添加及刪除授權人的人臉信息的相關代碼的編寫。
添加人臉按鍵及刪除人臉按鍵事件的代碼如下:
void MainWidget::on_pushButton_Up_clicked()
{
QListWidgetItem*item=listWidget->currentItem();
if(item)
{
int id=item->text().toInt();
if(id==1) return;
QFile::rename(QString("data/%1.pgm").arg(id),QSt ring("data/tmp.pgm"));
QFile::rename(QString("data/%1.pgm").arg(id-1),QStri ng("data/%1.pgm").arg(id));
QFile::rename(QString("data/tmp.pgm"),QString("data/ %1.pgm").arg(id-1));
fresh();
}
}
void MainWidget::on_pushButton_Down_clicked() {
QListWidgetItem *item= listWidget->currentItem();
if(item)
{
int id=item->text().toInt();
if(id==faceNum) return;
QFile::rename(QString("data/%1.pgm").arg(id),QString ("data/tmp.pgm"));
QFile::rename(QString("data/%1.pgm").arg(id+1),QStri ng("data/%1.pgm").arg(id));
QFile::rename(QString("data/tmp.pgm"),QString("data/ %1.pgm").arg(id+1));
fresh();
}
}
2.2 OpenCV在ARM的移植步驟
在ARM上移植OpenCV需要執行以下步驟[5]。OpenCV的移植環境為:PC機系統Ubuntu10.10。交叉編譯工具為:arm-linux-gcc 4.5.1。
(1)解壓OpenCV 2.0.0。tar xvf OpenCV-2.0.0.tar.bz2
(2)轉到OpenCV目錄。cd OpenCV-2.0.0
(3)./configure --host=arm-linux --without-gtk --without-carbon
--without-quicktime--without-1394libs--without-ffmpeg
--without-python --without-swig --enable-static --enable-shared
--disable-apps CXX=arm-linux-g++ CPPFLAGS= -I/opt/FriendlyARM/too
lschain/4.5.1/arm-none-linux-gnueabi/include LDFLAGS=-L/opt/Frie
ndlyARM/toolschain/4.5.1/arm-none-linux-gnueab i/lib --with-v4l2
--prefix=/opt/arm-2.0.0/opencv
(4)make編譯。make
(5)編譯安裝。make install
(6)移植庫文件到ARM11開發板上。將/opt/arm/ opencv/lib中的libcvaux.so.4.0.0 libcv.so.4.0.0 libcxcore.so.4.0.0 libhighgui.so.4.0.0 libml.so.4.0.0全部重命名為*.so.4將這些文件拷貝到ARM11板子的/lib目錄下
(7)測試是否移植成功。
OpenCV在開發板上移植成功后即可完成利用攝像頭進行人臉檢測識別的功能。
經過在相關嵌入式芯片三星S3C6410平臺上進行智能人臉識別門禁系統的移植及外圍電路的搭建。對搭建完成的人臉智能識別門禁系統進行功能測試,人臉智能識別門禁系統測試結果如圖4,5所示:
人臉識別通過時,智能家居相關功能激活,激活界面如圖4所示。

圖4 智能家居功能激活界面
人臉識別未通過時,智能家居的相關功能未激活,界面如圖5所示。

圖5 智能家居功能未激活界面
經過測試,該基于OpenCV的智能門禁系統能夠較好的完成既定的智能人臉識別的功能,提高了家居生活的安全性,可以使人們的家居生活更加舒適安全。
論文對基于OpenCV的人臉識別算法進行了分析,并基于S3C6410芯片完成了ARM的移植,成功應用于智能門禁系統中。經過測試證明,該具有人臉識別檢測功能的門禁系統可以有效的減少非法闖入事件的發生,確保了智能家居的安全性。論文設計的基于OpenCV的智能門禁系統具有硬件配置簡單,系統占用資源較少等優勢,此系統在智能家居上的應用中具有良好的發展前景。
[1] 盧湖川.人臉識別中幾個關鍵算法研究[D].大連:大連理工大學,2008.
[2] P.Viola and M.Jones.Rapid object detection using a boosted cascade of simple features[J].Computer Vision and pattern Recgnition,2001,(1):511-518.
[3] R.Lienhart and J.Maydt. An Extended Set of Haar-like Features for Rapid Object Detection[J].IEEE ICTP, 2002, (1):900-903.
[4] 王進德.嵌入式LINUX程序設計與應用案例[M].北京:中國電力出版社,2007.
[5] 韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008.
OpenCV-based design of embedded intelligent access control system
Smart Home Security System based on security requirements to Samsung S3C6410 embedded core chip as a platform to OpenCV technology as the core, designed and implemented with face recognition features intelligent security access control system. The intelligent access control system will first donor's human face Gray, dimensionality reduction and eigenvalue calculations and other processing, and then prepare training to be authorized in the relevant information. Then the camera to capture the information processing of the human face. The donor's human face to face with the collected information for comparison to determine whether the open access system. After testing, the intelligent access control system completed a face recognition function better, to achieve the access control system design requirements. The design has been successfully applied to smart home security system.
OpenCV; face recognition; access control systems; embedd
TP33
A
1008-1151(2015)03-0001-04
2015-02-11
國家自然科學基金(No:41072212);青島經濟技術開發區重點科技發展計劃項目(2013-1-62);山東科技大學研究生教育創新計劃(KDYC13012)資助。
韓進,山東科技大學信息科學與工程學院教授,博士,碩士生導師,從事電子電路、計算機應用技術的教學和科研工作;秦宏超,山東科技大學信息科學與工程學院在讀碩士, 研究方向為嵌入式應用,專用集成電路設計;楊穎超, 山東科技大學信息科學與工程學院在讀碩士,研究方向為嵌入式應用;劉文武,山東科技大學信息科學與工程學院本科生,研究方向為專業電子信息科學與技術。