(天地(常州)自動化股份有限公司,常州 213015)
煤炭生產(chǎn)中的采煤工作面由于照度低、粉塵大、水汽大,可見度極差。在這樣的惡劣環(huán)境下,想要通過機(jī)器視覺實現(xiàn)對運輸皮帶上的物體特征進(jìn)行檢測、識別,就必須借助于外部輔助手段。本文借助線性結(jié)構(gòu)光照射在皮帶上,通過視覺傳感器采集皮帶圖像,檢測皮帶上的結(jié)構(gòu)光線型特征來識別皮帶的特征。這里,算法是否能夠準(zhǔn)確地識別皮帶上的結(jié)構(gòu)光,是解決問題的關(guān)鍵技術(shù)之一。
Hi3516A是海思半導(dǎo)體針對高清IP Camera產(chǎn)品應(yīng)用開發(fā)的一款專業(yè)高端SoC芯片[1]。它除了具有靈活的高性能ARM Cortex-A7架構(gòu)以外,還具有高性能的智能分析加速引擎IVE。IVE主要作用是將智能視頻分析算法運算中頻繁調(diào)用且消耗資源較大的主要算子實現(xiàn)硬化,以減少底層運算對CPU資源的消耗,節(jié)省CPU資源來做更多的智能分析應(yīng)用。本文以海思Hi3516A平臺上結(jié)構(gòu)光檢測算法為例,詳細(xì)介紹嵌入式平臺上視頻分析算法的實現(xiàn)與優(yōu)化方案。
結(jié)構(gòu)光檢測算法包括圖像預(yù)處理、圖像分割、自動提取ROI(ROI:Region Of Interest的縮寫,圖像處理中的術(shù)語“感興趣區(qū)”,就是在要處理的圖像中提取出要處理的區(qū)域)、提取光條中心線4個模塊。
由于采煤工作面照度低、粉塵大、水汽大,加上光照不穩(wěn)定、物體本身的反射、成像噪聲、采樣誤差等因素[2],采集到的現(xiàn)場視頻圖像往往夾雜大量噪聲,所以在對圖像進(jìn)行算法分析之前,首先對圖像進(jìn)行處理,主要是灰度化和濾噪處理。
經(jīng)過預(yù)處理后的圖像,噪聲得到明顯抑制。圖像分割模塊通過閾值將結(jié)構(gòu)光中心帶從預(yù)處理后的圖像中粗略提取出來。圖像分割研究的重點在于閾值的選取,通過選取合適的閾值,將結(jié)構(gòu)光中心光帶提取出來。
嵌入式系統(tǒng)由于性能限制,算法設(shè)計時要在保證準(zhǔn)確度的基礎(chǔ)上盡可能減少運算量,以保證算法的效率。為了減少算法運算量,加快算法的運算速度,本文設(shè)計了自動將皮帶監(jiān)控圖像上結(jié)構(gòu)光所在區(qū)域提取出來的模塊—自動提取ROI模塊。
由于皮帶特征的識別是基于光條中心線形變特征的,所以提取結(jié)構(gòu)光條圖像后,對光條進(jìn)行中心線提取。完整提取結(jié)構(gòu)光條中心線,即實現(xiàn)了結(jié)構(gòu)光檢測算法。
1.2.1 圖像預(yù)處理實現(xiàn)方案
為了保護(hù)圖像的邊緣信息,本文采用中值濾波消除圖像噪聲。中值濾波法是一種非線性平滑技術(shù),它將每一像素點的灰度值設(shè)置為該點某鄰域窗口內(nèi)的所有像素點灰度值的中值,其實現(xiàn)方法為通過從圖像中的模板窗口取出奇數(shù)個數(shù)據(jù)進(jìn)行排序,然后用排序后的中值取代要處理的數(shù)據(jù)即可。
1.2.2 圖像分割實現(xiàn)方案
出于對算法自適應(yīng)性的考慮,本文選用改進(jìn)的Otsu法自動選取分割閾值。Otsu法又叫大津法或者最大化類間方差法,是一種圖像灰度自適應(yīng)的閾值分割算法。大津法按照圖像上灰度值的分布,將圖像分成背景和前景兩部分,前景就是需要按照閾值分割出來的部分。背景和前景的分界值就是所出閾值。遍歷不同的閾值,計算不同閾值下對應(yīng)的背景和前景之間的類間方差,當(dāng)類間方差取得極大值時,對應(yīng)的閾值就是大津法所求的閾值。
遍歷t使得φ(t)取得極大值時,獲取的閾值即為最佳閾值。使用此閾值將圖像進(jìn)行分割,即可得到結(jié)構(gòu)光圖像。
1.2.3 提取ROI
由于拍攝現(xiàn)場攝像機(jī)與皮帶位置是相對固定的,所以提取ROI模塊只要在算法運行之初運行一次即可定位ROI區(qū)域。
提取ROI區(qū)域的算法處理思想為:
① 遍歷步驟1.2.2中獲取到結(jié)構(gòu)光圖像,求取結(jié)構(gòu)光圖像靠近皮帶邊緣的兩個端點A和B,并連線;
② 由于皮帶重力作用,結(jié)構(gòu)光照射在皮帶上有一定的彎曲弧度,求取偏離①中連線最遠(yuǎn)的點C;
③ 過C點做AB連線的平行線MN,其中M、N分別為平行線與皮帶邊緣的交點;
④ 連接AM、BN,則由AB、BN、NM、MA四段線段構(gòu)成ROI。
1.2.4 提取光條中心線
常用的光條中心的算法主要有灰度重心法、極值法、閾值法、曲線擬合法、骨架細(xì)化法等[6]??紤]皮帶視頻中結(jié)構(gòu)光亮度很高,與皮帶灰度差別大的特點,本文采用極值法與閾值法相結(jié)合的方法獲取光條中心。這種方法實現(xiàn)簡單,運算量與單一的極值法或者閾值法相比,算法運算量更小,且精度更高。
其算法原理為:依次掃描ROI圖像每列灰度,尋找該列灰度最大值,當(dāng)找到的最大值超過設(shè)定閾值時,跳到下一列繼續(xù)尋找。最后由每列最大值構(gòu)成的圖像即為光條中心線。
至此,運輸皮帶上的結(jié)構(gòu)光被檢測并提取中心線。結(jié)構(gòu)光中心線的形變特征用來識別皮帶上特定特征變化。
為了保證算法在嵌入式平臺上運行的實時性,需要對算法進(jìn)行多級優(yōu)化。上述算法開發(fā)過程中已經(jīng)從算法實現(xiàn)的角度完成算法級優(yōu)化,下面將逐一介紹其它層次的優(yōu)化方案。
2.1.1 宏定義設(shè)計-使用宏定義常量替換只讀變量
在嵌入式系統(tǒng)中,宏常量采用立即數(shù)尋址方式。而只讀的變量占據(jù)存儲空間,需要訪問內(nèi)存,相比宏常量尋址而言效率要低。
2.1.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計優(yōu)化
數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計的基礎(chǔ)。結(jié)構(gòu)體是程序設(shè)計中最常用的數(shù)據(jù)結(jié)構(gòu)。結(jié)構(gòu)體定義時成員的排序直接影響到嵌入式CPU的執(zhí)行效率,因此結(jié)構(gòu)體定義時通過指定對齊方式、合理設(shè)計成員順序、填充部分域、采用位域構(gòu)造結(jié)構(gòu)體的手段對算法中的數(shù)據(jù)結(jié)構(gòu)進(jìn)行優(yōu)化。
2.1.3 函數(shù)設(shè)計優(yōu)化
本文在算法設(shè)計時,充分考慮需要合理劃分模塊的層次結(jié)構(gòu),以提高內(nèi)聚性,降低耦合度。在嵌入式平臺上通過下面兩個手段提高函數(shù)調(diào)用效率。
① 在函數(shù)設(shè)計時,嵌入式平臺上的ARM處理器會利用寄存器來傳遞參數(shù)以提高訪問效率。但ARM體系寄存器傳遞的參數(shù)最多4個,當(dāng)多于4個時,剩余的參數(shù)需要用棧傳遞,調(diào)用性能大大下降。因此當(dāng)參數(shù)之間緊密相連且通常需要在多個模塊中聯(lián)合使用時,應(yīng)對參數(shù)進(jìn)行封裝,以便于參數(shù)的傳遞和變量的管理。
② 采用內(nèi)聯(lián)函數(shù)定義部分調(diào)用頻繁的簡單函數(shù)。由于內(nèi)聯(lián)函數(shù)只是在需要用到的時候才展開,取消了函數(shù)的參數(shù)壓棧,減少了調(diào)用的開銷,因此其執(zhí)行速度比一般函數(shù)要快。
本文的算法基于海思Hi3516A平臺進(jìn)行嵌入式移植與優(yōu)化。Hi3516A擁有海思獨創(chuàng)的IVE(即智能視頻引擎)單元。IVE是將部分智能算法場景中常用的最消耗CPU資源的復(fù)雜計算硬件化,配合少量主控CPU參與即可實現(xiàn)各種智能算法。IVE硬化算子的出現(xiàn),帶來CPU運算性能的提升,更低的產(chǎn)品功耗和更低成本。
本文使用的硬件級優(yōu)化主要是指使用海思提供的IVE算子取代部分算法子模塊的實現(xiàn),如圖像濾波采用HI_MPI_IVE_Filter算子,圖像的膨脹采用HI_MPI_IVE_Dilate算子,圖像的腐蝕采用HI_MPI_IVE_Erode算子,圖像的閾值化采用HI_MPI_IVE_Thresh算子等。
為了更好地觀察算法實現(xiàn)與優(yōu)化的效果,本文采用1280×960分辨率的視頻作為輸入源,在海思Hi3516A平臺上進(jìn)行測試。
皮帶撕裂算法檢測結(jié)果圖1所示。算法在運行中,使用藍(lán)色矩形框?qū)崟r標(biāo)出皮帶撕裂的位置。
圖1 皮帶撕裂檢測結(jié)果圖
表1為算法從PC移植到嵌入式平臺后,代碼級、硬件級優(yōu)化前與優(yōu)化后的算法處理時間對比。
通過上表數(shù)據(jù)可以看出,經(jīng)過代碼級優(yōu)化和硬件級優(yōu)化,算法處理一幀高清視頻幀的時間提高了將近1倍。
表1 嵌入式平臺上算法優(yōu)化前后處理時間對比表
本文從算法的原理、算法設(shè)計與實現(xiàn)、算法移植與優(yōu)化幾個方面,結(jié)合一個高清的煤礦工作面現(xiàn)場皮帶視頻闡述了基于嵌入式平臺的視頻分析類算法的開發(fā)過程。實驗數(shù)據(jù)表明,經(jīng)過優(yōu)化后算法對高清視頻的處理速度仍然無法達(dá)到25 fps。
[1] 華為.Hi3516芯片手冊,2015.
[2] 范建華,楊秋翔,安雁艷,等.嵌入式系統(tǒng)中的快速光條中心提取算法[J].計算機(jī)工程與設(shè)計,2014(11):3808-3812.
[3] 王曉霞,蔣東方,林智偉.嵌入式系統(tǒng)實時中值濾波的高效實現(xiàn)[J].微電子學(xué),2012(12):852-856.
[4] 王磊,段會川.Otsu方法在多閾值圖像分割中的應(yīng)用[J].計算機(jī)工程與設(shè)計,2008(6):2844-2846.
[5] 張春明.基于線激光輔助的皮帶撕裂視覺檢測技術(shù)研究[D].秦皇島:燕山大學(xué),2012.
[6] 李丹,耿楠,亢娟娜.復(fù)雜背景下光條中心提取算法研究[J].計算機(jī)應(yīng)用與軟件,2013(3):271-173,314.
[7] 朱貴鋒,金施群,卞銘.十字線結(jié)構(gòu)光光條提取方法的研究[J].計量測試與檢定,2006(3):12-14.
[8] 嵌入式系統(tǒng)程序可移植性設(shè)計及性能優(yōu)化[EB/OL].[2017-11].http://www.doc88.com/p-1488573940259.html.
[9] 史子旺,葉超群,蔡建宇.嵌入式LINUX內(nèi)存使用與性能優(yōu)化[M].北京:機(jī)械工業(yè)出版社,2009.
徐輝(工程師),研究方向為智能視頻分析在嵌入式系統(tǒng)上的應(yīng)用。