敖黎銘, 徐 曉, 李 熙
雙目視覺技術(shù)類似于模擬人眼技術(shù),能夠較好地恢復(fù)出物體和場景的三維信息[1],但其運算量大,限制了其在高精度快速圖像處理系統(tǒng)中的應(yīng)用[2]。在本項目組進行的實際工程中,通過基于雙目的結(jié)構(gòu)光進行高精度三維復(fù)原,因此,需要研究不同的軟、硬件方法[3]加速解算。
現(xiàn)在廣泛應(yīng)用的圖像處理系統(tǒng)根據(jù)圖像處理器的不同可以分為四種[4]:基于個人電腦(personal computer,PC)+采集卡的結(jié)構(gòu)、基于現(xiàn)場可編程門陣列(field programmable gate array,FPGA)的圖像處理系統(tǒng)、基于數(shù)字信號處理器(digital signal processor,DSP)的圖像處理系統(tǒng)和基于FPGA+DSP的圖像處理系統(tǒng)。其中基于PC +采集卡架構(gòu)擁有超高的處理速度,但便攜性不足,在某些場合并不適合應(yīng)用;基于FPGA的圖像處理系統(tǒng)由于過分要求針對特殊算法配置硬件結(jié)構(gòu),因此并不適合普遍的圖像處理情景;DSP是專門的數(shù)字信號處理器,算法開發(fā)難度也比較低,但是單純的DSP既做功能控制,又做算法處理,會降低系統(tǒng)的算法處理效率[5]。
本文采用DM8168平臺將功能核集成在單片系統(tǒng)中[6,7],避免了單純的DSP同時進行算法運算和功能控制所導(dǎo)致的算法處理效率低的問題,并采用了一系列優(yōu)化手段,尤其通過采用查表和級數(shù)展開相結(jié)合的算法,大幅提高了高精度三維復(fù)原算法的運算速度。
在實際應(yīng)用中,線激光垂直照射在物體表面,通過左右交叉放置相機拍攝得到2幅灰度圖像,通過兩幅圖像復(fù)原光條處的三維信息。首先分別對左右灰度圖進行畸變校正,接著根據(jù)雙目單視面原理,將圖像像素坐標(biāo)轉(zhuǎn)換為角度坐標(biāo),轉(zhuǎn)換關(guān)系如圖1所示。本文以左相機為例對角度αL計算進行優(yōu)化。
圖1 雙目相機等效模型
基于左右圖像灰度信息的特征匹配和匹配點的三維復(fù)原,具體匹配和三維復(fù)原的研究參考文獻[8]。
DM8168是一種多核異構(gòu)片上系統(tǒng),其集成的Cortex—A8處理器用于控制各個協(xié)處理器存儲、傳輸圖像等;集成的浮點C674xDSP處理器,用于實現(xiàn)用戶自定義算法[9]。在該平臺上所運行的算法流程如圖2所示。
圖2 算法流程
在DM8168上采用了粗裁剪和細裁剪相結(jié)合的方法,將1 628×1 236轉(zhuǎn)換成1 628×40大小的圖像。以左圖為例,具體步驟為:
1)對1 628×1 236的圖像G(i,j)進行二值化處理,得到黑白二值圖像B(i,j)
(1)
式中T為分割閾值,可預(yù)設(shè)或使用自適應(yīng)的方法確定。
2)尋找B(i,j)中白值(255)出現(xiàn)的次數(shù)在一定范圍內(nèi)(如1 628×10)的最大值,即找到光條主體位置,但考慮到光條照射物體時產(chǎn)生彎曲,以該最大值所處位置為中心,將灰度圖像G(i,j)裁剪為1 628×100大小的圖像Cut1_G(i,j),同時記下裁剪的起始列位置Left_Initial。
3)由于畸變校正與像素點在原圖G(i,j)中的位置相關(guān),因此,在得到裁剪的起始列位置Left_Initial后,便可直接對裁剪后的圖像Cut1_G(i,j)進行畸變校正[10],得到畸變校正后的圖像Cut1_Co_G(i,j)。
4)提取光條。根據(jù)本文算法的特點,在第一次裁剪并校正后的圖像Cut1_Co_G(i,j)的基礎(chǔ)上再一次進行裁剪,得到圖像Cut2_G(i,k)
(2)
式中Tc為判斷是否為光條的閾值,可事先給定。同時在二維數(shù)組LeftReImageU[i][k]中存儲對應(yīng)行光條在原圖G(i,j)中的列坐標(biāo)。經(jīng)過2次裁剪后運行時間較未裁剪減少了5.84 s,整個裁剪過程如圖3所示。
圖3 第二次裁剪示意
常規(guī)優(yōu)化包括2方面:1)指令級優(yōu)化。包括循環(huán)體展開以便于軟件流水作業(yè),使用內(nèi)聯(lián)函數(shù)以減少函數(shù)調(diào)用,打開編譯器優(yōu)化選項,使用Const關(guān)鍵字以減少存儲器間的相關(guān)性等[11];2)算法級優(yōu)化。針對三角函數(shù)和根號運算的優(yōu)化,由于DM8168沒有相應(yīng)的內(nèi)聯(lián)函數(shù),使用庫函數(shù)運算較為緩慢,因此,針對三角函數(shù)和根號運算的計算范圍使用簡單的查表法。經(jīng)常規(guī)優(yōu)化后算法的運行時間降為0.15 s。
圖1中坐標(biāo)轉(zhuǎn)換α計算較為復(fù)雜,進一步優(yōu)化,以左圖為例,具體為
(3)
式中f為圖1中焦距LO的長度,θ為左相機光軸與基線LR的夾角,ccx為主點的列坐標(biāo),ccy為主點的行坐標(biāo),以上參數(shù)均由相機標(biāo)定可得;x,y分別為某個像素點在圖片中行、列坐標(biāo)??紤]到該公式中除了x,y坐標(biāo)外的其他參數(shù)值在相機固定的情況下保持不變,因此,采用以部分空間換取時間的方法,通過級數(shù)展開和查表法相結(jié)合代替直接計算,提高運算效率。
具體評估公式如下
(4)
式中k1,k2為權(quán)重參數(shù),k1取0.8,k2取0.2;T0,V0分別為最適宜接受系統(tǒng)的計算所花費的CPU時鐘周期數(shù)和表所占內(nèi)存大小;t,v分別為級數(shù)展開后對運算量和內(nèi)存大小的評估。V0取值為L2cache大小,即256 kB,T0取值為1 000CPU時鐘周期。
對于時間t和表的大小v的評估采用如下辦法:1)將αL的計算公式通過二元函數(shù)的泰勒級數(shù)展開分別展開成本階、一階、二階3種情況,更高階的展開由于項數(shù)的增多導(dǎo)致計算量增大,不予考慮,即可評估3種展開情況下計算機計算所用的加載、加乘和跳轉(zhuǎn)次數(shù),結(jié)合DM8168開發(fā)板的硬件結(jié)構(gòu)進一步評估出具體所花費的CPU時鐘周期數(shù);2)在3種展開情況下分別尋求插值所引起最大誤差不超過某一精度要求時x,y的間隔,由此間隔便可算出此時表所占內(nèi)存大小。通過對3種情況的評估,找到使評估公式中的s值最小的點作為本文的運算時間與內(nèi)存大小之間平衡結(jié)果。
式(3)展開成本階、一階、二階后,其插值結(jié)果與真實結(jié)果的最大誤差值如圖4~圖6所示。
圖4 級數(shù)本階展開后插值結(jié)果與真實值的最大α角誤差
圖5 級數(shù)一階展開后,插值結(jié)果與真實值的最大α角誤差
圖6 級數(shù)二階展開后插值結(jié)果與真實值的最大α角誤差
本文在計算機中用差分求出α角沿x方向和沿y方向上的變化基本一致,因此,對于行x和列y取間隔采用同步的方式。由上述圖中可以得出最大誤差值小于10-4的三個間隔分別為14,15,21。通過CCS查看匯編代碼發(fā)現(xiàn)展開成本階后計算需要10次加載、15次加法運算、9次乘法運算,展開成一階后計算需要7次加載、4次加法運算、2次乘法運算,展開成二階后計算需要11次加載運算、16次加法運算、10次乘法運算,而在DM8168中,對于float單精度型數(shù)據(jù),一次加載指令、加法指令、乘法指令的執(zhí)行分別需要5,7,7個CPU時鐘周期。將以上結(jié)果代入評估公式中計算得本階結(jié)果s0為0.21,一階結(jié)果s1為0.14,二階結(jié)果s2為0.28,由此可得展開成一階,x,y的間隔取15制表其值最小。本文利用此優(yōu)化方法使得程序運行時間減少到0.11 s,在常規(guī)優(yōu)化的基礎(chǔ)上降低了26.67 %的時間。
為了驗證本算法優(yōu)化后的運算速度,分別在DM8168嵌入式系統(tǒng)平臺(主芯片是TI公司的TMS320DM8168)和PC平臺(Inter(R)酷睿雙核CPU)上選擇不同形狀的光條進行多次實驗對比,統(tǒng)計算法運行時間以及分析最后的重建效果。結(jié)果如圖7,表1和圖8所示。
圖7 不同光條在不同平臺的運行結(jié)果
平臺平均運行時間/s圖像大小重建效果PC端MATLAB R2010b(優(yōu)化后)2.51628×1236良好DM8168系統(tǒng)(未優(yōu)化)6.7591628×1236良好DM8168系統(tǒng)(優(yōu)化后)0.1141628×1236良好
圖8 三維重建結(jié)果
由表1可以看出,優(yōu)化后在運行速度上,DM8168表現(xiàn)明顯優(yōu)于PC端MATLAB,二者的運算速度相差近20倍,可見本文優(yōu)化方法有效。在輸入變量可預(yù)測的情況下,使用查表和級數(shù)展開相結(jié)合的方法,可以使得包含三角函數(shù)和根號等的復(fù)雜算術(shù)運算變得更為簡單,減少了運行開銷。
在精度上,DM8168平臺與PC端基本相同,差別與本文在DM8168平臺中對圖像數(shù)據(jù)取值為float型有關(guān),使得圖像數(shù)據(jù)的有效位數(shù)在6位后與PC端不同,但并不影響本文的高精度三維重建效果。
本文以DM8168雙目三維高精度重建系統(tǒng)為平臺,針對嵌入式DM8168系統(tǒng)對基于雙目的結(jié)構(gòu)光高精度三維復(fù)原算法進行優(yōu)化,使得該算法能達到快速高精度三維重建效果。本文優(yōu)化方法不僅局限于本平臺算法中,可以應(yīng)用到其他需要移植優(yōu)化的圖像算法場合。從實用意義出發(fā),經(jīng)過本文中優(yōu)化方法,高精度三維復(fù)原算法雖然處理速度達到了0.11 s,但仍有改進的空間,尤其是查表和級數(shù)展開相結(jié)合的方法,對于復(fù)雜的算術(shù)運算具有良好的優(yōu)化效果,但對于循環(huán)以及條件語句仍需要進一步優(yōu)化,這將是下一步的研究內(nèi)容。
參考文獻:
[1] 梁 琨.基于雙目視覺的三維重建研究[D].西安:陜西科技大學(xué),2007.
[2] Shotton J,Fitzgibbon A,Cook M,et al.Real-time human pose recognition in parts from single depth images[J].Communications of the ACM,2013,56(1):116-124.
[3] Huang X,Gong L.Shortest path based planar graph cuts for bi-layer segmentation of binocular stereo video[C]∥2010 Asian Conference on Computer Vision,ACCV 2010 Workshops,Springer,Berlin Heidelberg,2010:82-91.
[4] 楊振永.基于TMS320DM8168的嵌入式高清圖像處理系統(tǒng)的關(guān)鍵技術(shù)研究[D].長春:中國科學(xué)院研究生院(長春光學(xué)精密機械與物理研究所),2013.
[5] 黃曉婷.基于DM8168雙核DSP的車型識別系統(tǒng)[D].南京:南京航空航天大學(xué),2015.
[6] 楊振永,王延杰,孫海江,等.基于TMS320DM8168的SOC高清視頻處理系統(tǒng)的設(shè)計與實現(xiàn)[J].液晶與顯示,2013(5):764-769.
[7] 劉 冰,谷源濤.基于DM8168的視頻會議系統(tǒng)MCU設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2014(10):3399-3403.
[8] 王 珊,徐 曉.基于雙目單視面的三維重建[J].光學(xué)學(xué)報,2017,37(5):207-215.
[9] 朱 海.基于DM8168的視頻監(jiān)控系統(tǒng)的實現(xiàn)[D].成都:電子科技大學(xué),2013.
[10] 吳火森.魚眼相機圖像處理及校正算法研究與實現(xiàn)[D].西安:西安電子科技大學(xué),2015.
[11] 魏帶娣,李 元,郭 浩,等.基于DSP的運動目標(biāo)檢測算法優(yōu)化[J].指揮控制與仿真,2014,36(1):66-70.