摘要:本文以ARM9系列處理器中的S3C2440為硬件平臺,搭載嵌入式Linux操作系統(tǒng),完成了該操作系統(tǒng)的剪裁、制作和移植,并結(jié)合Opencv開源庫設(shè)計并實現(xiàn)了人臉檢測的功能。
關(guān)鍵詞:ARM;嵌入式Linux;人臉檢測
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1674-7712(2012)20-0025-01
人臉檢測的研究來源于人臉識別[1],但是其應用范圍又大大超過了人臉識別,其在數(shù)字視頻處理、可視化通信和視覺檢測方面都有巨大的應用價值。隨著科技的進步,人臉檢測技術(shù)朝向小型化、便攜性方向發(fā)展,ARM處理器擁有低功耗、小成本和高性能等功能[2],適合做人臉檢測技術(shù)的嵌入式開發(fā)。本文以ARM9為平臺,搭載嵌入式Linux系統(tǒng),設(shè)計并實現(xiàn)了人臉檢測的功能。
一、系統(tǒng)硬件平臺介紹
本系統(tǒng)采用了Samsung公司推出的S3C2440處理器,它采用了ARM920T內(nèi)核,為了提高和馮諾依曼體系結(jié)構(gòu)的兼容性,采用了哈佛Cache結(jié)構(gòu)[3]。本系統(tǒng)圖像采集使用的是采用320芯片組的USB攝像頭,交叉編譯平臺則是主頻為2.7G Hz奔騰處理器的PC機。
二、嵌入式Linux系統(tǒng)的開發(fā)
由于嵌入式Linux系統(tǒng)具有開源、低成本、可移植性好等特點,所以近些年來發(fā)展強勁,得到了廣泛的應用。嵌入式Linux系統(tǒng)開發(fā)需要在Linux操作系統(tǒng)下安裝arm的交叉編譯器,用交叉編譯器對各部分進行交叉編譯然后移植到開發(fā)板上去。
嵌入式Linux系統(tǒng)最基本的三部分,第一是Bootloader,這個類似于Windows操作系統(tǒng)啟動時的引導程序,第二是Linux內(nèi)核,就是為應用程序提供對計算機硬件安全訪問的一部分軟件。第三是文件系統(tǒng),是用于明確磁盤或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu)。本文結(jié)合這三個部分的源代碼進行具體的修改和配置然后交叉編譯來完成了系統(tǒng)的移植。
三、人臉檢測應用程序的開發(fā)
(一)USB攝像頭驅(qū)動的開發(fā)
驅(qū)動程序包含有關(guān)硬件設(shè)備的信息,計算機可以通過驅(qū)動與設(shè)備進行通信。由于本系統(tǒng)采用了USB攝像頭,所以要在系統(tǒng)內(nèi)核中的USB Device選項中選擇USB support選項,然后添加進本系統(tǒng)所采用的USB攝像頭驅(qū)動。
(二)基于V4L標準通過攝像頭獲取圖片
V4L標準是Linux系統(tǒng)下的音視頻流采集標準,它為我們開發(fā)應用程序提供了一個內(nèi)核、驅(qū)動交流的API接口,目前的驅(qū)動和應用程序都提供該標準的支持。我們通過V4L模塊提供的編程接口,從USB攝像頭設(shè)備中獲取所捕獲的圖像幀,將圖像以保存為圖片格式以供后續(xù)處理。
(三)基于Opencv的人臉檢測程序開發(fā)
Opencv是由Intel公司開發(fā)可以免費獲取的開源函數(shù)庫,其用來實現(xiàn)一些常用的圖像處理和計算機視覺算法。由于我們需要在ARM平臺下使用,所以需要用交叉編譯器先在Linux系統(tǒng)下編譯出嵌入式系統(tǒng)需要的主要動態(tài)庫和靜態(tài)庫文件,然后我們將編譯好的文件移植到嵌入式Linux的文件系統(tǒng)中,就可以在ARM平臺下調(diào)用Opencv庫中的相關(guān)函數(shù)了。
人臉檢測人臉識別前期最重要的一個環(huán)節(jié)。利用Opencv提供的庫函數(shù),我們可以方便的完成復雜的算法。Adaboost算法是一種分類器算法,其基本原理是利用大量的分類能力一般的弱分類器疊加起來,從而構(gòu)成一個分類能力強的強分類器[4],分類器所采用的特征是Haar特征。在該系統(tǒng)中應用到的最重要的一個函數(shù)是cvHaarDetectObjects,本系統(tǒng)中首先對得到的包含人臉的圖片進行一系列預處理,然后調(diào)用該函數(shù)檢測出人臉的位置。
由于Opencv在不同的操作平臺下使用的庫文件是有差異的,所以我們需要獲取ARM平臺下的嵌入式Linux庫文件,首先從Opencv的官方網(wǎng)站獲取Opencv源碼,然后修改Opencv的Makefile文件,主要將CXX設(shè)置為arm-linux-g++,host設(shè)置為arm-linux,其他根據(jù)自己的需要進行配置,編譯即可生成我們所需要的庫文件。
(四)圖形用戶界面的開發(fā)
在嵌入式系統(tǒng)開發(fā)中,圖形界面的支持和數(shù)據(jù)保存的管理備受開發(fā)者關(guān)注。一個成功合格的嵌入式系統(tǒng),需要良好的圖形用戶界面支持。
QT是跨平臺的C++圖形用戶界面應用程序開發(fā)框架,支持多種操作系統(tǒng),QT/Embedded是QT的嵌入式Linux端口,完整的包含C++GUI和基于Linux的嵌入式開發(fā)工具。其不僅具有基本的可視化控件編程功能,而且提供了豐富的類庫,包含繪圖、數(shù)據(jù)庫、多媒體等等。
本系統(tǒng)以QT開發(fā)出人臉檢測圖像的顯示界面,在QT中使用Opencv庫需要在.pro文件中添加已編譯出的arm平臺下Opencv文件路徑,即可將QT和Opencv結(jié)合起來使用。
四、實驗結(jié)果與總結(jié)
如圖1所示,本系統(tǒng)能夠良好的人臉檢測功能,并且識別率在95%左右。
本文設(shè)計并實現(xiàn)了基于ARM平臺的人臉檢測系統(tǒng),經(jīng)檢測該系統(tǒng)識別率高。雖然檢測速度和PC有一定的差距,相信隨著當今嵌入式科技的飛速發(fā)展,ARM處理器的速度會更快功能也更加強大,能夠得到更廣泛的應用。
參考文獻:
[1]王映輝.人臉識別——原理、方法與技術(shù)[M].北京:科學出版社,2010.
[2]王仕民.基于ARM的嵌入式人臉識別算法的研究[D].江西:江西師范大學,2011.
[3]關(guān)鵬.基于ARM的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)若干關(guān)鍵技術(shù)研究[D].江蘇:南京郵電大學,2011.
[4]王志良,孟秀艷.人臉工程學[M].北京:機械工業(yè)出版社,2008.