一種嵌入式圖像算法的加速優(yōu)化方法
方思敏,王亞剛
(上海理工大學(xué) 光電信息與計算機工程學(xué)院,上海200093)
摘要為滿足嵌入式圖像處理的需求,提出了嵌入式圖像處理的程序移植方法。以O(shè)PENCV中的混合高斯背景建模函數(shù)為例,基于TI的達(dá)芬奇DM3730硬件平臺,闡述了在不影響程序結(jié)果的基礎(chǔ)上,對算法進行移植加速的方法。主要包括程序主體的處理,以及定點化等,在DM3730目標(biāo)平臺上實現(xiàn)了混合高斯模型事實實現(xiàn)動態(tài)提取的方法。結(jié)果表明,該方法可滿足基本應(yīng)用需求,能使用該方法對浮點算法進行定點DSP移植,并可廣泛應(yīng)用于各種圖像處理算法之中。
關(guān)鍵詞達(dá)芬奇;嵌入式;圖像算法;優(yōu)化;移植;DSP
收稿日期:2015-04-01
作者簡介:方思敏(1990—),男,碩士研究生。研究方向:嵌入式應(yīng)用。E-mail:709178587@qq.com
doi:10.16180/j.cnki.issn1007-7820.2015.12.007
中圖分類號TP301.6文獻標(biāo)識碼A
Acceleration of Image Processing Algorithm Based on Embedded System
FANG Simin,WANG Yagang
(School of Optical-Electrical and Computer Engineering,University of Shanghai for
Science and Technology,Shanghai 200093,China)
AbstractA transplant method is proposed for timely image processing.A successful mixed Gauss background modeling in OPENCV and the TI DAVINCE DM3730 platform is given to show how to transplant and accelerate the algorithm without affecting the result,covering the fixed point of the algorithm and dealing with the code structure.The experimental results illustrate that this method can satisfy the need of application,and can be used in the floating to fixed point transplantation and in most of the image processing algorithm.
Keywordsdavinci;embedded image algorithm;optimize;transplant;DSP
嵌入式圖像處理應(yīng)用于一些限制設(shè)備大小以及數(shù)據(jù)傳輸速度的特殊領(lǐng)域,其中最有代表性的就是視頻監(jiān)控,以及智能機器人領(lǐng)域。
當(dāng)前嵌入式圖像處理還處于發(fā)展階段,大部分圖像處理技術(shù)仍運行在計算機上。移植到嵌入式平臺的算法相較于現(xiàn)有計算機平臺的算法相對較少。計算機相對于嵌入式平臺有壓倒性的性能優(yōu)勢,在計算機上使用的庫,最常見的是OpenCV,其大部分算法都進行了多層的引用嵌套。其優(yōu)勢主要在于易用,同時犧牲了處理效率。由于計算機平臺,即Windows平臺上有大部分已完成的算法,因此對算法的移植,效率的優(yōu)化也是現(xiàn)在嵌入式圖像處理領(lǐng)域的一大課題。
多數(shù)圖像處理算法都具有較高的運算頻率,信息量較大,同時對實時性有較高的要求。而從移植的角度來看,嵌入式系統(tǒng)的主頻,運算器數(shù)量等,對算法的效率也起到了至關(guān)重要的作用。因此嵌入式移植除了程序優(yōu)化外,同時也需要對使用的芯片進行擇優(yōu)。諸如使用ARM的高頻率進行流程處理,使用DSP的多運算單元進行大量的算法運算等。
1DM3730微處理器
DM3730是美國德州儀器公司推出的由1 GHz的ARM Ccotex-A8 Core和 800 MHz的TM320C64X+DSP Core兩個處理器組成,同時集成了視頻加速器,3D圖形處理器,USB2.0,串口等。本文所使用的開發(fā)版為Beagle推出的BeagleBoard-xm ver.C,全硬件開源。基于Linux2.6.32以及TI的Codec-engine框架對程序性能進行評估。
1.1Codec-engine雙核框架
Codec-engine雙核框架是TI提出,能夠縮短程序開發(fā)周期所使用的框架。其將DSP端算法打包,隱藏了ARM-DSP的通訊過程,同時將DSP端的程序打包提供一個標(biāo)準(zhǔn)接口供ARM端調(diào)用,軟件構(gòu)架如圖1所示。
圖1 達(dá)芬奇雙核通信框架
使用這種構(gòu)架的優(yōu)點是能快速的對開發(fā)目標(biāo)進行分割,分別開發(fā)系統(tǒng)級應(yīng)用以及圖像,信號等處理的算法包。同時可不關(guān)心底層ARM和DSP的通信過程,使開發(fā)變得高效。
1.2TI TMS320C64x+Fixed-point DSP core
TMS320C64x+[1]是TI推出的定點DSP處理單元。定點處理單元相對于師出同門的浮點處理單元C67X有更高的運算速度。C67X的處理速度為1 200~2 400 MI·s-1(機每秒鐘執(zhí)行的百萬指令數(shù)),而C64X系列的處理速度則達(dá)到了4 000~8 000 MI·s-1[2]。在適當(dāng)?shù)乃惴▋?yōu)化情況下,C64X+的算法運行效率更高。同時定點處理單元有更低廉的價格。
2混合高斯背景建模
混合高斯背景建模[3]是OpenCV[4]自帶的函數(shù)庫之一,是一個重要的動態(tài)背景建模方法。混合高斯背景建?;谙袼貥颖窘y(tǒng)計信息的背景建模方法,利用長時間內(nèi)大量樣本的概率密度等統(tǒng)計信息來表示背景,然后使用統(tǒng)計差分對目標(biāo)像素進行判斷。
在混合高斯建模中,將圖像的顏色信息分別進行處理,對各像素點的處理也是獨立的。高斯模型將一個像素的單種顏色看作是一個值在圖像序列中隨機產(chǎn)生的過程。然后將其規(guī)律用高斯分布來描述。
混合高斯模型使用多個權(quán)值不同的高斯模型疊加來描述一個像素點。每種高斯分部對應(yīng)一種像素顏色可能產(chǎn)生的狀態(tài),各個高斯分部的權(quán)值和分部參數(shù)都隨時間更新。
借助哪吒的傳說,我將哪吒與現(xiàn)代輪滑相結(jié)合,發(fā)明設(shè)計出一款現(xiàn)代“風(fēng)火輪”。它不僅具有傳統(tǒng)輪滑在地面滑行的功能,還能帶著我們自由滑翔在空中。你不用擔(dān)心平衡和重力問題,它能根據(jù)使用者的體重、身形以及風(fēng)速等條件自動及時調(diào)控飛行的速度、方向等,從而帶給使用者飛翔的樂趣。
混合高斯模型的概率密度是由幾個概率密度的加權(quán)和構(gòu)成。
(1)
(2)
(3)
η(xt,μi,t,τi,t)為時刻的第i個高斯分部;n為一個像素點的高斯分布的個數(shù);μ為均值;τ為協(xié)方差矩陣;δ為方差;w為其權(quán)重。
3高斯背景建模的加速
首先可從OpenCV庫中找到相關(guān)函數(shù)類BackgroundSubStractorMOG2,將這個類從OpenCV庫中獨立出來,重新進行相關(guān)的宏定義等。
高斯背景建模對每個像素的每個顏色分量分別進行運算,因此為了加速程序,將原本進行彩圖運算的部分去除,使用灰度圖進行計算,可使算法運行速度變?yōu)樵瓉淼?/3,如圖2所示。高斯背景建模中,高斯模型數(shù)據(jù)的存儲也耗費大量的空間。因此,使用灰度圖在加速的同時也可減少大量的內(nèi)存耗費。
在去除彩圖部分定義,以及將彩圖數(shù)據(jù)的存儲數(shù)組改成存儲灰度圖數(shù)據(jù)的單一變量后,對程序結(jié)構(gòu)進行改變。C語言級別的優(yōu)化應(yīng)遵循以下幾點[5]:(1)單幅圖片像素循環(huán)中應(yīng)盡量減少函數(shù)調(diào)用;(2)將能在循環(huán)外的進行判斷條件分支移至循環(huán)體外;(3)減少數(shù)組形式的調(diào)用,應(yīng)使用指針隨循環(huán)控制變量改變;(4)盡量使用位移指令來代替乘法和除法;(5)使用C64X+的內(nèi)聯(lián)函數(shù)進行一些特定函數(shù)的替換[6]。
圖2 彩圖轉(zhuǎn)灰度圖后算法處理過程的簡化
其中,(5)是由于C64X+編譯器提供的專門函數(shù)與嵌入式的匯編指令相對應(yīng),能夠快速的優(yōu)化源程序。
最后需要對程序中的浮點運算進行定點化。定點化處理過程中,需要首先對各個變量變化范圍進行度量,在一段較長的時間內(nèi)對其最大值和最小值進行統(tǒng)計來確定其變化范圍[7-8]。
在定點化過程中需要將浮點值乘以2n然后取整來進行。考慮到有較多乘法運算是由整數(shù)相乘然后右移相應(yīng)位來進行的,因此在int的32位范圍內(nèi),一個不大于1的數(shù)值最多只能使用16位,防止運算后溢出。由此得出,為了便于處理應(yīng)該將程序內(nèi)范圍在0~1之間的變量進行16位的左移操作來進行定點化。并且在每次運算后對原本帶有小數(shù)部分的變量逐一進行位對齊調(diào)整。
圖3 檢測前景結(jié)果
4結(jié)束語
這次DSP優(yōu)化過程中,代碼結(jié)構(gòu)的優(yōu)化是在PC平臺上完成的,由于PC平臺強大的硬件性能支持,定點以及浮點運算的速度區(qū)分并不明顯,因此定點化工作在DM3730芯片上完成調(diào)試及實驗。實驗結(jié)果如表1所示??梢姶藘?yōu)化方法在不影響算法結(jié)果的情況下,在嵌入式平臺上對OpenCV的高斯背景檢測算法進行了較好的移植,并對程序的加速卓有成效[9]。
本文在OpenCV混合高斯背景提取的基礎(chǔ)上,對其進行了嵌入式移植,調(diào)整其程序結(jié)構(gòu),降低由函數(shù)調(diào)用,條件分支等造成的資源損耗。并借由定點化使高斯背景建模能適應(yīng)于嵌入式平臺,滿足實時處理的效果。該移植方法實現(xiàn)簡單、適應(yīng)性強,能廣泛應(yīng)用于各種需要嵌入式系統(tǒng)運行的算法及函數(shù)。但該結(jié)果還有進一步上升空間,根據(jù)C64X+的取指令特性,存儲器特點,對匯編語言優(yōu)化等,進一步提高了運行效率。
表1 DSP加速結(jié)果
參考文獻
[1]Texas Instruments.TMS320C64x+DSP two-level internal memory reference guide[EB/OL].(2014-10-02)[2015-01-11]http://www.ti.com.
[2]Texas Instruments.TMS320C6000 CPU and instruction set reference guide[EB/OL].(2008-10-10)[2015-01-11]http://www.ti.com.
[3]Stauffer C,Grimson W E L.Adaptive background mixture models for real-time tracking[C].Toronto:IEEE Computer Society Conference on Computer Vision and Pattern Recognition,1999.
[4]Gary Bradski/Adrian Kaehler.學(xué)習(xí)OpenCV[M].北京:清華大學(xué)出版社,2009.
[5]Texas Instruments.TMS320C6000 optimizing c complier[EB/OL].(2014-10-02)[2015-01-11]http://www.ti.com.
[6]胡金波,陳慧劍.DSP環(huán)境下C語言編程的優(yōu)化實現(xiàn)[J].現(xiàn)代電子技術(shù),2002(12):82-84.
[7]魯達(dá),張文軍,楊華.基于達(dá)芬奇平臺的智能視頻監(jiān)控算法設(shè)計[J].微計算機信息,2009(5):5-7.
[8]魯達(dá).基于DM6446平臺的智能視頻監(jiān)控關(guān)鍵算法研究與實現(xiàn)[D].上海:上海交通大學(xué),2009.
[9]李陽,席志紅.基于達(dá)芬奇技術(shù)的3G網(wǎng)絡(luò)視頻傳輸實現(xiàn)[J].電子科技,2014,27(7):159-161.