陸愿基++張龍
DOI:10.16660/j.cnki.1674-098X.2017.14.209
摘 要:我國智能設(shè)備正處于發(fā)展的初級階段,嵌入式平臺在傳統(tǒng)的硬件設(shè)施上的應(yīng)用還有很大的發(fā)展空間。由于嵌入式系統(tǒng)擁有可靠、便攜等特點,因此可以應(yīng)用于家庭監(jiān)控、智能交通等各個方面,而且近年隨著ARM芯片性能的不斷提高和計算機視覺算法的突破,使得圖像分析技術(shù)應(yīng)用到嵌入式平臺。該次主要針對應(yīng)用于傳統(tǒng)視頻的高速公路的車輛目標跟蹤系統(tǒng)的研究與開發(fā)。主要研究內(nèi)容及工作有:(1)高速公路的車輛目標檢測跟蹤系統(tǒng)的總體設(shè)計及軟硬件平臺的搭建。根據(jù)對嵌入式平臺的性能和成本考慮,最后選擇tiny210作為開發(fā)板,攝像頭采用羅技C210,通過裁剪和移植Android系統(tǒng)使其適用于開發(fā)板。系統(tǒng)的軟件框架主要分為驅(qū)動層、驅(qū)動服務(wù)層、圖像分析層、應(yīng)用層。利用NDK包結(jié)合C/C++和Java進行混合開發(fā),以C/C++高性能貼近硬件的特點去寫驅(qū)動層、驅(qū)動服務(wù)層、圖像分析層。應(yīng)用層主要使用Android的UI框架。(2)高速公路的車輛目標檢測跟蹤的理論基礎(chǔ)與相關(guān)算法的實現(xiàn)。針對硬件平臺的特性和應(yīng)用在高速公路的情景下,我們采用存儲空間小、計算量小、實時性好的vibe檢測算法并詳細介紹運動目標跟蹤框架,在最后,對vibe檢測算法實現(xiàn)并分析結(jié)果。
關(guān)鍵詞:嵌入式 目標跟蹤與檢測 vibe算法 高速公路
中圖分類號:TP39 文獻標識碼:A 文章編號:1674-098X(2017)05(b)-0209-07
Based on Embedded in the Research and Implementation of Moving Object Detection and Tracking
Lu Yuanji Zhang Long
(The College of Computer and Information Engineering of Tianjin Agriculture University,Tianjin, 300384,China)
Abstract:Smart devices in our country is in the primary stage of development, the embedded platform application in the traditional hardware also has the very big development space.Due to the characteristics of embedded system with reliable, portable, so can be applied to many aspects, such as family monitoring, intelligent transportation, and in recent years, with the constant improvement of the performance of ARM chips and computer vision algorithm, makes the image analysis technology is applied to embedded platform.This mainly aimed at the application of traditional video of highway vehicle tracking systems research and development.The main research contents and work are: (1)Highway vehicle target detection tracking systems overall design and construction of the hardware and software platform. Based on embedded platform of performance and cost considerations, the final choice tiny210 as development board, the camera USES the logitech C210, by cutting and transplant the Android system is suitable for the development board. Software of the system framework consists of: driver layer, service layer, the image analysis layer, application layer. Using the NDK package of mixed with C/C + + and Java development, with high performance close to the hardware characteristics of C/C + + to write driver layer, service layer and image analysis. The application layer mainly using Android UI framework. (2) the highway vehicle target detection tracking theoretical basis and related implementation of the algorithm. According to the characteristics of hardware platform and application in highway scenario, we use storage space is small, small amount of calculation, good vibe real-time detection algorithm and detailed movement target tracking framework. (3) highway vehicle target detection analysis of the results of tracking system. After the results of vehicle target detection and tracking of the vehicle trajectory error analysis.
Key Words:The embedded; Target tracking and detection; Vibe algorithm; The highway
當今社會,隨著車輛增多,交通安全已經(jīng)成為了必不可少的需要關(guān)注的問題。雖然傳統(tǒng)的視頻監(jiān)控通過攝像頭采集視頻信息,但需要大量人工檢測和分析其中的內(nèi)容。為此人們希望能有自動檢測目標并跟蹤目標、智能云存儲視頻信息、隨時抓拍違規(guī)行為、并對異常情況能自動報警的智能監(jiān)控系統(tǒng)的實現(xiàn)。嵌入式目標檢測與跟蹤系統(tǒng)需要完成對視頻的實時采集、背景建模、前景檢測與跟蹤算法的實現(xiàn)。精確性高,實時性強的目標檢測與跟蹤系統(tǒng)可以應(yīng)用于很多方面,例如智能交通系統(tǒng)需要對車輛進行檢測與跟蹤,識別車牌號碼,判斷有無超速、闖紅燈等違法行為的發(fā)生,并根據(jù)前方道路擁堵情況給出正確的交通誘導信號。
該文采用嵌入式圖像分析技術(shù),將圖像分析技術(shù)和嵌入式開發(fā)板相結(jié)合,提出了基于嵌入式的運動目標檢測與跟蹤的系統(tǒng),原因是嵌入式開發(fā)版有實用性強、便攜帶、性能穩(wěn)定等特點。由于圖像分析技術(shù)計算量大,需要的存儲空間大,所以如果是分析高清實時性差、運行攝像頭移動的情況下,要做到背景建模迅速,分析實時性好。為完成以上功能,要求嵌入式設(shè)備需要有支持攝像頭讀取、顯示視頻信息、圖像處理等功能。Cortex A8嵌入式處理器滿足上述要求,故該文選擇Cortex A8嵌入式作為系統(tǒng)的載體。
1 系統(tǒng)的總體設(shè)計
1.1 系統(tǒng)總體框架
基于嵌入式的目標跟蹤系統(tǒng)總體框架如圖1所示,系統(tǒng)包括由視頻采集、目標跟蹤與檢測算法,應(yīng)用程序與android操作系統(tǒng)構(gòu)成的軟件層和基于Cortex A8架構(gòu)的友善之臂公司tiny210開發(fā)板與羅技c210USB攝像頭構(gòu)成的硬件層兩部分組成,Cortex A8嵌入式處理器具有多個 USB接口、一個顯示模塊、并且支持多個操作系統(tǒng)、處理運算速度較快的特點。
1.2 硬件層構(gòu)成
硬件層由羅技c210USB攝像頭與Tiny210開發(fā)板兩部分構(gòu)成。USB攝像頭獲取實時的視頻信息,并將視頻傳輸給處理器處理。由友善之臂開發(fā)的Tiny210采用三星S5PV210作為處理器,運行主頻可達1GHz,S5PV210內(nèi)部集成PowerVR SGX540高性能圖形引擎,并且可以流暢運行Android,Linux和WINCE6等高級操作系統(tǒng),非常適合開發(fā)高端物聯(lián)網(wǎng)終端,智能家居,智能監(jiān)控等??梢酝瓿蓪σ曨l的采集以及目標跟蹤結(jié)果的顯示。
1.3 軟件層構(gòu)成
軟件層的操作系統(tǒng)需要支持多用戶、多任務(wù)、多線程編程以及具有可裁剪、可定制、可移植的操作系統(tǒng),所以采用基于Linux內(nèi)核的android系統(tǒng),一方面能完美使用android開發(fā)包的UI庫并且能夠完成對系統(tǒng)資源的統(tǒng)一管理,為用戶編程提供統(tǒng)一的API接口等功能。軟件層的應(yīng)用程序為完成視頻圖像采集與目標跟蹤的功能,引入基于OpenCv視覺庫的圖像編程方法,其中OpenCv視覺庫具有跨平臺與可移植性的優(yōu)點,為視頻圖像編程提供了統(tǒng)一API編程接口,方便用戶直接調(diào)用。通過對系統(tǒng)的主要功能分析以及軟硬件層構(gòu)成介紹,可知系統(tǒng)的工作流程為:羅技c210攝像頭采集視頻圖像,tiny210開發(fā)板中的處理器實時讀取USB接口中的視頻信息,并由軟件層中ViBe算法進行前景檢測并使用團塊跟蹤算法完成對目標的跟蹤處理,然后生成軌跡,將處理后的結(jié)果顯示到LCD顯示屏中。
2 目標檢測與跟蹤系統(tǒng)的平臺搭建及算法的實現(xiàn)
2.1 軟硬件平臺的搭建
該文打算將嵌入式技術(shù)與圖像分析技術(shù)相結(jié)合,提出了基于嵌入式的目標檢測跟蹤系統(tǒng)研究,為了能使計算機視覺技術(shù)這種計算量大的算法在嵌入式開發(fā)板上進行運算。為此該結(jié)合了系統(tǒng)的功能需求,先詳細地敘述設(shè)計出系統(tǒng)的總體框架,在后面分別敘述能夠?qū)崿F(xiàn)的系統(tǒng)框架軟硬件平臺,并且詳細介紹系統(tǒng)軟硬件平臺的搭建與把OPEN CV庫移植到tiny210上。
2.2 系統(tǒng)硬件平臺
2.2.1 處理器選擇
雖然嵌入式處理器種類很多,但各自有特點與適用場合。Cortex-8處理器具有體積小、成本低等特點。該文的研究對智能交通系統(tǒng)中部分功能能夠?qū)崿F(xiàn)。對開發(fā)板的定位為:安裝方便、功耗小、運行速度快、支持圖像處理操作、實時性與穩(wěn)定性較好、并且價格便宜。
該文選擇基于Cortex-A8架構(gòu)的Tiny210開發(fā)板作為系統(tǒng)的硬件平臺,開發(fā)板上已經(jīng)集成了除微處理器之外的存儲系統(tǒng)、總線接口以及常用的外圍設(shè)備。Tiny210由Samsung S3C2440微處理器、LCD顯示屏、以及多種外圍設(shè)備構(gòu)成。同時它具有支持萬能USB攝像頭、支持USB燒寫更新Linux系統(tǒng)的優(yōu)點,這將大大地縮短開發(fā)人員的學習與開發(fā)周期。開發(fā)板硬件配置與接口外觀如圖2所示。
2.2.2 存儲系統(tǒng)
Tiny210開發(fā)板的存儲系統(tǒng)分為兩部分:一部分由兩塊大小為32M bytes的芯片組成SDRAM存儲系統(tǒng)(內(nèi)存);另一部分為FLASH存儲系統(tǒng),分為NOR FLASH與NANDFLASH,Tiny210支持這兩種Flash啟動系統(tǒng),通過撥動開關(guān)S2,可以選擇從NOR還是從NAND啟動系統(tǒng)。NAND Flash型號為K9F1G08,大小為128M。
2.2.3 USB 攝像頭
該系統(tǒng)的車輛追蹤功能需求中要求對圖像進行采集,將采集后的圖像傳處理器處理,從而完成對目標的跟蹤與顯示。Tiny210開發(fā)板支持萬能USB攝像頭,相比于其他支持拍攝效果極差的中星微攝像頭的開發(fā)板,性價比要高很多。該文的圖像采集單元,選擇具備自帶完整驅(qū)動程序的ZC0301PL攝像頭作為解決方案。攝像頭內(nèi)部芯片集圖像采集壓縮、傳輸、JPEG譯碼等功能于一體,為用戶提供流暢、清晰的視頻圖像信息;同時支持15幀/sVGA和30幀/sCIF/SIF視頻顯示。
2.3 系統(tǒng)軟件平臺
2.3.1 操作系統(tǒng)選擇
在確定采用基于Cortex-8架構(gòu)的tiny210開發(fā)板作為硬件平臺的載體后,需要在開發(fā)板上移植一個能對硬件資源進行管理、具備提供給開發(fā)人員操作底層驅(qū)動的API接口以及可以通過加載或者卸載模塊的操作方式實現(xiàn)系統(tǒng)的擴展功能的嵌入式操作系統(tǒng)。
嵌入式操作系統(tǒng)可分為實時與非實時操作系統(tǒng),在操作系統(tǒng)的選擇過程中,我們應(yīng)綜合考慮操作系統(tǒng)的兼容性與穩(wěn)定性,版權(quán)費用與軟件開發(fā)難易程度等幾個問題。因此需選擇實時性操作系統(tǒng),下面對幾種常見的實時操作系統(tǒng)進行介紹。
(1)Windows CE操作系統(tǒng):主要應(yīng)用于智能手機、PAD 等電子設(shè)備中。但該操作系統(tǒng)具有版權(quán)許可,其源碼并未公開,不方便對其進行二次開發(fā)。
(2)linux操作系統(tǒng):由一批操作系統(tǒng)編程愛好者自由編寫而成的。具有源碼公開性、免費使用、對硬件平臺依賴較小、內(nèi)核可裁剪定制等優(yōu)點。具有支持多用戶、多任務(wù)、多線程和多CPU的功能。廣泛應(yīng)用于嵌入式領(lǐng)域,在開發(fā)成功的嵌入式系統(tǒng)中,其市場占有率約達50%,這使其成為主流的嵌入式操作系統(tǒng)。
(3)Android操作系統(tǒng)是基于linux內(nèi)核,等于uboot+ linux kernel+android(包含文件系統(tǒng),虛擬機,UI),所以使用android系統(tǒng)就站在了linux這個巨人的肩膀上,通過使用HAL,JNI實現(xiàn)底層的開發(fā),使用android的SDK做程序的應(yīng)用。
2.3.2 Opencv的使用
該文中的目標跟蹤算法等應(yīng)用程序都從頭開始編寫代碼,則無法滿足軟件開發(fā)敏捷思維與快速迭代思想的要求。所以該文決定采用OpenCv圖像處理開源庫,里面封裝了很多常用的處理圖像的函數(shù)和數(shù)據(jù)結(jié)構(gòu),包括圖像變換,輪廓的匹配,圖像矩陣數(shù)據(jù)類型等,極大地提高了開發(fā)人員的效率,使得開發(fā)人員按照理論依據(jù)使用庫函數(shù)即可實現(xiàn)圖像處理算法。但為了適應(yīng)選擇的硬件平臺和操作系統(tǒng),需要將庫移植到平臺上,使用交叉編譯可將庫在平臺上進行編譯。
2.4 相關(guān)理論
嵌入式目標檢測與跟蹤的核心基礎(chǔ)在于如何定義運動對象,然后記錄對象的軌跡。只有完整、精確地提取了運動物體的前景圖像并對行為與軌跡進行記錄,才能進行更高級的語義分析及行為判斷,應(yīng)用于更多場景。所以,敘述系統(tǒng)采用運動檢測跟蹤框架的各個部分組成,然后對核心的前景提取算法進行研究和分析。
2.4.1 運動目標檢測與跟蹤框架
完整的運動檢測與跟蹤系統(tǒng)大致流程可以分為:前景提取、團塊檢測、團塊跟蹤、軌跡生成。流程圖如圖3所示。
2.4.2 前景檢測模塊
前景檢測模塊輸入的數(shù)據(jù)為當前幀,輸出的數(shù)據(jù)為與視頻幀具有相同大小的二值圖,將當前幀與已經(jīng)建立好的背景進行比較,得出的運動前景將置像素點為1,其余為0。
前景檢測算法主要分為幀差法,平均背景法,光流法,前景建模法,背景非參數(shù)估計,背景建模法等,運動目標檢測的算法依照目標與攝像機之間的關(guān)系可以分為靜態(tài)背景下運動檢測和動態(tài)背景下運動檢測。先簡單從視頻中的背景類型來討論。
靜態(tài)背景下的目標檢測,就是從序列圖像中將實際的變化區(qū)域和背景區(qū)分開了。在背景靜止的大前提下進行運動目標檢測的方法有很多,這些方法比較側(cè)重于背景擾動小噪聲的消除,如:
(1)背景差分法。
(2)幀間差分法。
(3)光流法。
(4)混合高斯模型(GMM)。
(5)碼本(codebook)。
運動背景下的目標檢測,相對于靜態(tài)背景而言,算法的思路就有所區(qū)別了,一般會更加側(cè)重于匹配,需要進行圖像的全局運動估計與補償。因為在目標和背景同時運動的情況下,是無法簡單根據(jù)運動來判斷的。運動背景下的運動目標檢測算法也有很多,如:
(1)塊匹配。
(2)光流估計。
但該文希望結(jié)合嵌入式開發(fā)板,決定采用使用存儲空間少,計算量少的ViBe算法。
ViBe是一種像素級視頻背景建模或前景檢測的算法,效果優(yōu)于所熟知的幾種算法,對硬件內(nèi)存占用也少,很簡單。該算法將在下一小節(jié)進行討論。
2.4.3 團塊檢測模塊
團塊檢測模塊的作用是檢測前景提取出來的團塊,監(jiān)控它們的位置和大小,并且處理噪點和篩選不符合規(guī)定的團塊。模塊的輸入是當前幀的前景圖像,輸出的結(jié)果是檢測到的團塊列表,簡要的處理流程為:首先從前景幀進行掃描,記錄像素點為1的點,最后把有連續(xù)像素點為1的團塊保存下來,然后再將較小的模塊和已經(jīng)被跟蹤記錄有重疊的團塊丟棄,并對剩下的團塊進行排序,最后利用特定規(guī)則篩選掉不符合的團塊,將真正的團塊保存到列表里。
2.4.4 團塊跟蹤模塊
該模塊的作用就是對檢測出來的團塊進行跟蹤,此模塊的輸入為當前幀的前景圖像和團塊列表。首先提取出所有的團塊,計算團塊的質(zhì)心,高度和寬度。然后對每一個已被跟蹤的軌跡,利用kalman算法預測該軌跡在當前幀的團塊位置和大小,最后對每個跟蹤的軌跡進行處理,尋找離上一幀里團塊最近的當前幀模塊,將次團塊加入到跟蹤軌跡。
為了講述如何預測軌跡,下面是對卡爾曼濾波的理論進行探討:
對于一個動態(tài)系統(tǒng),我們首先定義一組狀態(tài)空間方程
狀態(tài)方程:
測量方程:
xk是狀態(tài)向量,zk是測量向量,Ak是狀態(tài)轉(zhuǎn)移矩陣,uk是控制向量,Bk是控制矩陣,wk是系統(tǒng)誤差(噪聲),Hk是測量矩陣,vk是測量誤差(噪聲)。wk和vk都是高斯噪聲,即:
整個卡爾曼濾波的過程就是個遞推計算的過程,不斷地“預測——更新——預測——更新……”
預測:
預測狀態(tài)值:
預測最小均方誤差:
更新:
測量誤差:
測量協(xié)方差:
最優(yōu)卡爾曼增益:
修正狀態(tài)值:
修正最小均方誤差:
2.4.5 軌跡生成模塊
該模塊的作用是將團塊的軌跡數(shù)據(jù)本地化,以特定的形式保存下來。該模塊的輸入為當前幀各個運動目標的團塊,輸出結(jié)果是存儲特定位置下的軌跡文件。它主要負責收集所有團塊的軌跡和特征,在每個團塊結(jié)束運行軌跡時保存。
2.5 ViBe前景檢測算法
ViBe是一種基于隨機像素級視頻背景建模的算法,效果不弱于基于概率密度的背景建模算法,具體的思想就是采用鄰域像素來創(chuàng)建背景模型,通過比對背景模型和當前輸入像素值來檢測前景,然后將每一個新的像素值和樣本集進行比較來判斷是否屬于背景點。這樣對硬件內(nèi)存占用也少,非常適用與嵌入式開發(fā)。
2.5.1 背景模型的初始化
初始化就是建立背景模型的過程。常見的檢測算法的初始化需要一定長度的視頻序列來完成,這樣就造成了一定程序的延遲性,而ViBe的初始化只通過一幀圖像。ViBe初始化就是填充像素的樣本集的過程但是由于在一幀圖像中不可能包含像素點的時空分布信息,我們利用了相近像素點擁有相近的時空分布特性,具體來講就是:對于一個像素點,隨機選擇它的鄰居點的像素值作為它的模型樣本值。M0(x)={v0(y|y∈NG(x))},t=0初始時刻,NG(x)即為鄰居點。每一個像素模型都可以用其鄰域中的像素來表示。為了保證背景模型符合統(tǒng)計學規(guī)律,鄰域的范圍要足夠大。當輸入第一幀圖像時,即t=0時,像素的背景模型為:其中,表示空域上相鄰的像素值,表示當前點的像素值。在N次的初始化的過程中,中的像素點被選中的可能次數(shù)為L=1,2,3,…,N。
2.5.2 背景模型的更新策略
背景模型的更新就是使得背景模型能夠適應(yīng)背景的不斷變化,比如光照的變化,背景物體的變更等等。Vibe采用的是隨機的子采樣,在更新在時間和空間上都具有隨機性。具體的更新方法。
(1)時間上的隨機性:在多個背景模型中隨機抽取一副圖像N,圖4表示了圖像N的x位置及其八鄰域內(nèi)的像素。當我們得到新的一幀圖像T時,如果圖像T中的x位置對應(yīng)的像素被判斷為背景,則需要被更新。這個抽取的過程體現(xiàn)了時間上的隨機性。
(2)空間上的隨機性:在Nx的八鄰域中隨機抽取一個像素NR,用的來替換掉Tx。隨機選取一個樣本值進行更新,這樣可以保證樣本值的平滑的生命周期由于是隨機的更新。
ViBe實驗效果如圖5所示。
3 應(yīng)用
該文將嵌入式目標檢測與跟蹤系統(tǒng)應(yīng)用于高速公路上目標車輛的路徑跟蹤和大小檢測以及車速跟道路路況相關(guān)數(shù)據(jù)的準確記錄,如圖6所示。
在輸入車輛視頻的位置輸入3個視頻檢測,點擊開始檢測即可實現(xiàn)對視頻中單個視頻攝像頭視野下斷面實時車速、每兩個視頻攝像頭為“路段”的最小單元,分別計算每個路段的平均車速、以及正確識別大車和小車(小于6 m為小車,大于等于6 m為大車),并按上下行車道分別對大小車進行計數(shù)等功能,準確數(shù)據(jù),如圖6所示。
4 結(jié)語
該平臺在整個運動目標檢測與跟蹤的核心在于檢測前景團塊,只要實時性好,檢測精確度高,并且計算量少,那么后續(xù)進行團塊跟蹤的差錯率就會降低。傳統(tǒng)的基于概率密度的背景建模算法計算量太多,實時性差,并不適用于嵌入式目標跟蹤。所以該文采用了背靜差算法—ViBe。首先,它只需要一幀圖像即可完成初始化,而其他的算法通常需要等待數(shù)秒去完成初始化,而且它的更新策略是隨機采樣點建模,將ViBe算法使用在嵌入式目標檢測與跟蹤系統(tǒng)中具有計算量小、內(nèi)存占用少、處理速度快、檢測效果好等特點。很好解決了嵌入式開發(fā)板性能不足的問題,又能實時地進行區(qū)域的監(jiān)控,并且適應(yīng)環(huán)境的變化,可以運用在不同的場合,比如具有相同原理的圖像分析體系里,可以運用到更好的系統(tǒng)檢測中,不僅是軌跡分析中,動態(tài)分析亦是如此,此處為該平臺最大優(yōu)勢。該文僅運用在高速公路的場景舉例,為新一代智能交通提供有力充分支持,現(xiàn)實中的圖像識別更多是動態(tài)的,只有把運動目標更準確地檢測出來并且進行跟蹤和提取特征,那么才能為動態(tài)的圖像分析提供有力的支撐,下一步將不斷嘗試不同領(lǐng)域的開發(fā)和測試。
參考文獻
[1] GARY BRADSKI.學習opencv[M].北京:清華大學出版社,2009.
[2] TCP/IP網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2014.
[3] C++Primer中文版[M].北京:人民郵電出版社,2006.
[4] VisualC++數(shù)字圖像處理技術(shù)詳解[Z].2013.
[5] 倪旭翔,計春雷.ARM嵌入式開發(fā)與實踐[M].北京:中國水利水電出版社,2011.
[6] Background Subtraction:Experiments and Improvements for ViBe, M.Van Droogenbroeck and O. Paquot. In Change Detection Workshop (CDW), Providence, Rhode Island[Z].2012.
[7] Background Subtraction: Experiments and Improvements for ViBe. In Change Detection Workshop (CDW), Providence, Rhode Island[Z].2012.