方華++郭靜++田敬北
摘 要:文章以ARM Cortex-A8 (S5PV210)為核心,構建了一種基于OpenCV的嵌入式圖像處理平臺,提出在主流的Ubuntu操作系統上交叉編譯Qt和OpenCV后將其移植到嵌入式Linux操作系統中,為嵌入式平臺下復雜圖像處理算法的設計和實現提供了一條有效途徑,降低了開發難度。在此平臺上進行的在線人臉識別實驗結果表明該平臺運行可靠,功能正常。
關鍵詞:OpenCV;嵌入式;圖像處理平臺;Qt
與基于PC機和圖像處理卡等的傳統圖像處理系統相比,采用嵌入式系統可以開發出具有便攜性、實時性、成本更低以及可靠性更佳的圖像處理平臺,但也存在軟件設計難度大,開發周期長、代碼效率主要依賴設計人員經驗等問題。為此,文章提出一種基于OpenCV的嵌入式圖像處理平臺,在宿主機上采用Ubuntu操作系統,安裝OpenCV以實現圖像處理和計算機視覺方面的通用算法,降低開發難度,縮短軟件開發周期[1],同時OpenCV中大部分函數都進行了匯編優化,有效提高了程序的運行效率。基于OpenCV的開源特性也降低了產品的成本。
1 構建平臺所用的軟硬件配備
1.1 宿主機配置和源代碼預備
宿主機主要是用來開發和調試嵌入式系統應用程序的計算機系統。宿主機硬件可以用PC機,配置Linux操作系統。在構建本嵌入式圖像處理平臺的過程中需要準備如下源代碼:用于生成目標系統的編譯器gcc源代碼、用于圖形界面顯示的Qt源代碼以及用于圖像處理的OpenCV源代碼。
1.2 建立rootfs目錄
將下載的得到的文件解壓,使用如下命令建立相關目錄:
$sudo mkdir rootfs
$cd rootfs
$sudo mkdir root home lib dev sbin mnt sys proc tmp var etc usr
1.3 權限環境變量的設置
正確的權限設置是保證正常創建編譯環境的重要條件,編譯環境設置權限的基本原則是,保證用戶對所有操作目錄及目錄下的文件擁有讀寫的權限[2]。具體設置如下:
sudo chown –R root:root rootfs/
sudo chown –R 755 root rootfs/
2 嵌入式圖像處理平臺的構建
2.1 嵌入式圖像處理平臺硬件結構
文章以友善之臂公司生產的Smart210開發板作為硬件平臺,以三星公司的S5PV210嵌入式中央處理器作為核心部件。該款處理器采用了ARM Cortex?-A8內核,ARM V7指令集,主頻可達1GHZ,具有2000DMIPS的高性能運算能力,已經被廣泛應用于手機和平板等移動多媒體設備上。
2.2 軟件平臺搭建
軟件平臺的搭建主要分為操作系統移植、移植Qt和移植OpenCV三個部分。在圖像處理開發工具上選擇了廣泛應用的OpenCV,利用該視覺庫可以很方便地實現數字圖像處理。在顯示方面,選擇以支持多平臺而著稱的Qt圖形界面設計工具,其優點在于一次編寫,隨處編譯,已成為圖像處理領域強有力的輔助工具。
2.2.1 操作系統移植
嵌入式圖像處理平臺的搭建的首要步驟為操作系統的選擇和移植。嵌入式Linux操作系統作為嵌入式主流操作系統,其最大的特點是源碼公開并且遵循GPL協議。由于嵌入式Linux操作系統支持廣泛的硬件、融合了各種強大的應用軟件及完善的設備驅動和開發工具,因此文章選用了嵌入式Linux操作系統進行移植,其關鍵在于正確制作根文件系統以啟動Linux內核。制作根文件系統的流程,如圖 1所示。
2.2.2 圖形界面庫Qt的移植步驟
Step1:編譯Qt-4.8.4,方法如下:
tar xfvz qt-everywhere-opensource-src-4.8.5.tar.gz
cd qt-everywhere-opensource-src-4.8.5
./configure -opensource -embedded arm -xplatform -prefix /opt/qt-4.8.5 -I /tslib/include -L /tslib/lib
Step2:把/opt/qt-4.8.5/lib下的所有文件放入開發板文件系統中。
Step3:修改etc/profile文件,添加Qt庫的環境變量。
2.2.3 計算機開源視覺庫OpenCV的移植步驟
在進行OpenCV的移植時文章提出改用Qt編寫圖形接口部分,而不使用OpenCV的HighGUI庫。其原因在于OpenCV中的HighGUI模塊中的函數是基于GTK+的,主要為了將圖像顯示在GTK+窗體上,由于移植GTK+比較復雜,需要的依賴庫比較多,移植相當繁瑣,容易出錯。在嵌入式圖像處理開發平臺中,應用程序的開發與GTK+相關性不大,因此調用OpenCV函數編寫圖像處理程序時,不采用HighGUI中的庫函數會使界面的編寫更簡單。
具體移植步驟如下:
Step1:下載源碼并解壓。
Step2:安裝cmake以及cmake-gui。
Step3:配置OpenCV。
Step4:配置cmake和cmake-gui。
Step5:make和make install。
Step6:將lib文件夾下的所有文件拷貝到開發板。
Step7:設置環境變量。
3 嵌入式圖像處理平臺應用
為了驗證嵌入式圖像處理平臺是否構建成功,文章設計了人臉識別應用程序進行驗證。人臉識別是通過對攝像頭獲取的視頻流數據進行圖像處理中的檢測定位和特征提取,從而識別出人臉的具體位置,并進行在線跟蹤。實驗中采用基于OpenCV的人臉識別分類器,通過接入的USB攝像頭實時監測人臉。
3.1 人臉識別算法
OpenCV人臉識別分類器利用Haar-like特征來表示人臉特征[3],采用積分圖作為加速器的方法高效計算人臉特征,再由AdaBoost迭代學習算法進行特征選擇和分類器的訓練,最終實現人臉圖像的跟蹤識別。對于每一個特征,Adaboost算法根據訓練樣本的特征值排序,并計算樣本權重,求得分類誤差后得出最優弱分類器,經過多次循環特征選擇能夠得到更多的最優弱分類器,再組合最優弱分類器得到強分類器,相當于按照弱分類器的錯誤率加權投票的方式將弱分類器構造為一個強分類器;然后,將強分類器強強聯手串聯成一個級聯分類器。
3.2 實驗結果
實驗分為標識人臉和跟蹤人臉兩方面,當單個或者多個人臉出現在攝像頭前,顯示屏上均能顯示并標識人臉,當人臉從中間分別向兩邊移動時,能夠實時跟蹤人臉。同時,在本嵌入式圖像處理平臺上,檢測出人臉的平均時間為300ms,而在普通的PC機上,編寫同樣的算法,運行也需要150ms的檢測時間。在相同的代碼下,本嵌入式平臺和普通PC機平臺主要參數不同。由該實驗可看出,在本嵌入式平臺下,能夠準確的檢測到攝像頭所拍攝到的人臉,人臉識別的測試運行也證明了嵌入式圖像處理平臺的可行性和穩定性。
[參考文獻]
[1]賈小軍,喻擎蒼.基于開源計算機視覺庫OpenCV的圖像處理[J].計算機應用與軟件,2008(4):276-278.
[2]宋凱,嚴麗平,甘嵐.嵌入式圖像處理系統的設計與實現[J].計算機工程與設計,2009(19):4368-4370+4377.
[3]劉曉克,孫燮華,周永霞.基于新Haar-like特征的多角度人臉檢測[J].計算機工程,2009(19):195-197.