《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > OpenCV的加速嵌入式系統(tǒng)開發(fā)中的應(yīng)用
OpenCV的加速嵌入式系統(tǒng)開發(fā)中的應(yīng)用
維庫
摘要: OpenCV的加速嵌入式系統(tǒng)開發(fā)中的應(yīng)用,嵌入式處理器的性能日益提升、價格不斷下降,帶來日益廣泛的嵌入式計算機(jī)視覺應(yīng)用,,包括從安全及工業(yè)監(jiān)控到自動化車輛與汽車安全等領(lǐng)域,。開發(fā)人員可充分利用越來越高級的硬件,在不影響基本質(zhì)量的同時,,更快速、
Abstract:
Key words :

     嵌入式處理器的性能日益提升、價格不斷下降,,帶來日益廣泛的嵌入式計算機(jī)視覺應(yīng)用,包括從安全及工業(yè)監(jiān)控到自動化車輛與汽車安全等領(lǐng)域,。開發(fā)人員可充分利用越來越高級的硬件,,在不影響基本質(zhì)量的同時,更快速,、更低成本地開發(fā)具有突破性性能的產(chǎn)品,。

  開發(fā)周期縮短而帶來的巨大壓力,迫使嵌入式系統(tǒng)開發(fā)人員必須高效利用嵌入式領(lǐng)域與傳統(tǒng)PC工作站領(lǐng)域的現(xiàn)有技術(shù);適應(yīng)并復(fù)用現(xiàn)有穩(wěn)定軟件可為嵌入式開發(fā)人員提供不斷開發(fā)重大新項目的必備基礎(chǔ),。

  OpenCV就是PC軟件進(jìn)入嵌入式開發(fā)領(lǐng)域的一個實(shí)例,。OpenCV是一款免費(fèi)的開源計算機(jī)視覺庫,可提供從影像過濾及轉(zhuǎn)換,,到特性抽象與機(jī)器學(xué)習(xí)等幾十個不同類別的數(shù)百種算法,。它已被成千上萬的開發(fā)人員所使用,而且還在不斷發(fā)展之中,。目前有很多庫是針對嵌入式系統(tǒng)的,,但很少有像OpenCV這樣能夠在計算機(jī)視覺領(lǐng)域得到普遍推廣,而且涵蓋如此豐富的算法,。

OpenCV庫縮略圖

圖1:OpenCV庫縮略圖

  盡管OpenCV最初來源于Intel的x86架構(gòu),,但它也不失為目前功能日益強(qiáng)大的嵌入式器件的自然選擇。OpenCV現(xiàn)已移植到嵌入式處理器常用CPU選擇ARM架構(gòu)上,,這點(diǎn)也并不奇怪,。我們完全能夠在嵌入式器件上原封不動地采用OpenCV的交叉編譯版,不過,,存儲器限制與其它架構(gòu)注意事項可能會帶來一個技術(shù)難題,。因此我們需要對OpenCV進(jìn)行優(yōu)化,以使它在新的主機(jī)上實(shí)現(xiàn)更高性能與更高效率,。

  對嵌入式平臺而言,,“優(yōu)化”這個詞以前意味著要無限制地研究低級架構(gòu)中不重要的細(xì)節(jié),反復(fù)編寫匯編語言代碼,。然而幸運(yùn)的是,,隨著嵌入式處理器復(fù)雜性的提升,嵌入式開發(fā)工具已變得日益強(qiáng)大,,用戶友好性也得以大幅提高,。

  典型的嵌入式器件可描述為系統(tǒng)級芯片(SoC),其中不僅包含ARM處理器,,而且還含有多種外設(shè)與加速器,,可將CPU從相關(guān)支持任務(wù)中解放出來。SoC甚至可能具有多個ARM內(nèi)核,,或其它功能齊全的協(xié)處理器,。

SoC基本內(nèi)部架構(gòu)

圖2:SoC基本內(nèi)部架構(gòu)

  現(xiàn)在,SoC最重要的部分不是硬件本身,,而是可幫助開發(fā)人員通過ARM應(yīng)用程序高效利用SoC全部性能的支持性軟件,,這不僅包括優(yōu)化C語言編譯器的熟悉工具,還包括加速常見信號處理任務(wù)的優(yōu)化軟件庫,,以及處理SoC中不同模塊之間低級互動的驅(qū)動器,。此外,,它可能還包括支持特定廠商協(xié)處理器與加速器的特殊工具。這些工具相結(jié)合,,可使嵌入式優(yōu)化成為高級應(yīng)用開發(fā)中一個簡單透明的組成部分,。

  通過高效集成OpenCV等高級軟件與器件廠商提供的低端軟件,進(jìn)而創(chuàng)建高效可行的系統(tǒng),,是嵌入式開發(fā)的重要挑戰(zhàn)之一,。例如,我們不妨考慮這樣一種情況,,SoC中包括了針對高強(qiáng)度計算的全功能數(shù)字信號處理器(DSP),。該DSP可能非常適合OpenCV的影像分析算法,尤其是在CPU缺乏原生浮點(diǎn)指令情況下更是如此,,不過,,要讓OpenCV在DSP架構(gòu)上運(yùn)行,可能還有大量工作要做,。讓OpenCV等高級軟件實(shí)現(xiàn)分區(qū),,并在整個SoC上無縫運(yùn)行是軟件開發(fā)工具的重要使命。

  從嵌入式開發(fā)人員的角度來說,,將應(yīng)用的不同部分透明地交給SoC上最合適的模塊來處理是再好不過的了,。這樣做能夠幫助開發(fā)人員將更多資源集中到終端產(chǎn)品開發(fā)方面,從而*費(fèi)更少的時間處理特定平臺問題,,這是嵌入式器件的獨(dú)特優(yōu)勢,。支持上述要求的軟件工具則可在基本的處理功能與硬件功能基礎(chǔ)上更進(jìn)一步,這對開發(fā)人員而言具有更重要的意義,,器件廠商必須滿足這一要求,,才能保持自身的競爭優(yōu)勢。

嵌入式應(yīng)用分區(qū)后,,在異構(gòu)多內(nèi)核SoC上運(yùn)行更高效
 


圖3:嵌入式應(yīng)用分區(qū)后,,在異構(gòu)多內(nèi)核SoC上運(yùn)行更高效


 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。