敖黎銘, 徐 曉, 李 熙
雙目視覺技術類似于模擬人眼技術,能夠較好地恢復出物體和場景的三維信息[1],但其運算量大,限制了其在高精度快速圖像處理系統中的應用[2]。在本項目組進行的實際工程中,通過基于雙目的結構光進行高精度三維復原,因此,需要研究不同的軟、硬件方法[3]加速解算。
現在廣泛應用的圖像處理系統根據圖像處理器的不同可以分為四種[4]:基于個人電腦(personal computer,PC)+采集卡的結構、基于現場可編程門陣列(field programmable gate array,FPGA)的圖像處理系統、基于數字信號處理器(digital signal processor,DSP)的圖像處理系統和基于FPGA+DSP的圖像處理系統。其中基于PC +采集卡架構擁有超高的處理速度,但便攜性不足,在某些場合并不適合應用;基于FPGA的圖像處理系統由于過分要求針對特殊算法配置硬件結構,因此并不適合普遍的圖像處理情景;DSP是專門的數字信號處理器,算法開發難度也比較低,但是單純的DSP既做功能控制,又做算法處理,會降低系統的算法處理效率[5]。
本文采用DM8168平臺將功能核集成在單片系統中[6,7],避免了單純的DSP同時進行算法運算和功能控制所導致的算法處理效率低的問題,并采用了一系列優化手段,尤其通過采用查表和級數展開相結合的算法,大幅提高了高精度三維復原算法的運算速度。
在實際應用中,線激光垂直照射在物體表面,通過左右交叉放置相機拍攝得到2幅灰度圖像,通過兩幅圖像復原光條處的三維信息。首先分別對左右灰度圖進行畸變校正,接著根據雙目單視面原理,將圖像像素坐標轉換為角度坐標,轉換關系如圖1所示。本文以左相機為例對角度αL計算進行優化。

圖1 雙目相機等效模型
基于左右圖像灰度信息的特征匹配和匹配點的三維復原,具體匹配和三維復原的研究參考文獻[8]。
DM8168是一種多核異構片上系統,其集成的Cortex—A8處理器用于控制各個協處理器存儲、傳輸圖像等;集成的浮點C674xDSP處理器,用于實現用戶自定義算法[9]。在該平臺上所運行的算法流程如圖2所示。

圖2 算法流程
在DM8168上采用了粗裁剪和細裁剪相結合的方法,將1 628×1 236轉換成1 628×40大小的圖像。以左圖為例,具體步驟為:
1)對1 628×1 236的圖像G(i,j)進行二值化處理,得到黑白二值圖像B(i,j)

(1)
式中T為分割閾值,可預設或使用自適應的方法確定。
2)尋找B(i,j)中白值(255)出現的次數在一定范圍內(如1 628×10)的最大值,即找到光條主體位置,但考慮到光條照射物體時產生彎曲,以該最大值所處位置為中心,將灰度圖像G(i,j)裁剪為1 628×100大小的圖像Cut1_G(i,j),同時記下裁剪的起始列位置Left_Initial。
3)由于畸變校正與像素點在原圖G(i,j)中的位置相關,因此,在得到裁剪的起始列位置Left_Initial后,便可直接對裁剪后的圖像Cut1_G(i,j)進行畸變校正[10],得到畸變校正后的圖像Cut1_Co_G(i,j)。
4)提取光條。根據本文算法的特點,在第一次裁剪并校正后的圖像Cut1_Co_G(i,j)的基礎上再一次進行裁剪,得到圖像Cut2_G(i,k)
(2)
式中Tc為判斷是否為光條的閾值,可事先給定。同時在二維數組LeftReImageU[i][k]中存儲對應行光條在原圖G(i,j)中的列坐標。經過2次裁剪后運行時間較未裁剪減少了5.84 s,整個裁剪過程如圖3所示。

圖3 第二次裁剪示意
常規優化包括2方面:1)指令級優化。包括循環體展開以便于軟件流水作業,使用內聯函數以減少函數調用,打開編譯器優化選項,使用Const關鍵字以減少存儲器間的相關性等[11];2)算法級優化。針對三角函數和根號運算的優化,由于DM8168沒有相應的內聯函數,使用庫函數運算較為緩慢,因此,針對三角函數和根號運算的計算范圍使用簡單的查表法。經常規優化后算法的運行時間降為0.15 s。
圖1中坐標轉換α計算較為復雜,進一步優化,以左圖為例,具體為
(3)
式中f為圖1中焦距LO的長度,θ為左相機光軸與基線LR的夾角,ccx為主點的列坐標,ccy為主點的行坐標,以上參數均由相機標定可得;x,y分別為某個像素點在圖片中行、列坐標。考慮到該公式中除了x,y坐標外的其他參數值在相機固定的情況下保持不變,因此,采用以部分空間換取時間的方法,通過級數展開和查表法相結合代替直接計算,提高運算效率。
具體評估公式如下
(4)
式中k1,k2為權重參數,k1取0.8,k2取0.2;T0,V0分別為最適宜接受系統的計算所花費的CPU時鐘周期數和表所占內存大小;t,v分別為級數展開后對運算量和內存大小的評估。V0取值為L2cache大小,即256 kB,T0取值為1 000CPU時鐘周期。
對于時間t和表的大小v的評估采用如下辦法:1)將αL的計算公式通過二元函數的泰勒級數展開分別展開成本階、一階、二階3種情況,更高階的展開由于項數的增多導致計算量增大,不予考慮,即可評估3種展開情況下計算機計算所用的加載、加乘和跳轉次數,結合DM8168開發板的硬件結構進一步評估出具體所花費的CPU時鐘周期數;2)在3種展開情況下分別尋求插值所引起最大誤差不超過某一精度要求時x,y的間隔,由此間隔便可算出此時表所占內存大小。通過對3種情況的評估,找到使評估公式中的s值最小的點作為本文的運算時間與內存大小之間平衡結果。
式(3)展開成本階、一階、二階后,其插值結果與真實結果的最大誤差值如圖4~圖6所示。

圖4 級數本階展開后插值結果與真實值的最大α角誤差

圖5 級數一階展開后,插值結果與真實值的最大α角誤差

圖6 級數二階展開后插值結果與真實值的最大α角誤差
本文在計算機中用差分求出α角沿x方向和沿y方向上的變化基本一致,因此,對于行x和列y取間隔采用同步的方式。由上述圖中可以得出最大誤差值小于10-4的三個間隔分別為14,15,21。通過CCS查看匯編代碼發現展開成本階后計算需要10次加載、15次加法運算、9次乘法運算,展開成一階后計算需要7次加載、4次加法運算、2次乘法運算,展開成二階后計算需要11次加載運算、16次加法運算、10次乘法運算,而在DM8168中,對于float單精度型數據,一次加載指令、加法指令、乘法指令的執行分別需要5,7,7個CPU時鐘周期。將以上結果代入評估公式中計算得本階結果s0為0.21,一階結果s1為0.14,二階結果s2為0.28,由此可得展開成一階,x,y的間隔取15制表其值最小。本文利用此優化方法使得程序運行時間減少到0.11 s,在常規優化的基礎上降低了26.67 %的時間。
為了驗證本算法優化后的運算速度,分別在DM8168嵌入式系統平臺(主芯片是TI公司的TMS320DM8168)和PC平臺(Inter(R)酷睿雙核CPU)上選擇不同形狀的光條進行多次實驗對比,統計算法運行時間以及分析最后的重建效果。結果如圖7,表1和圖8所示。

圖7 不同光條在不同平臺的運行結果

平臺平均運行時間/s圖像大小重建效果PC端MATLAB R2010b(優化后)2.51628×1236良好DM8168系統(未優化)6.7591628×1236良好DM8168系統(優化后)0.1141628×1236良好

圖8 三維重建結果
由表1可以看出,優化后在運行速度上,DM8168表現明顯優于PC端MATLAB,二者的運算速度相差近20倍,可見本文優化方法有效。在輸入變量可預測的情況下,使用查表和級數展開相結合的方法,可以使得包含三角函數和根號等的復雜算術運算變得更為簡單,減少了運行開銷。
在精度上,DM8168平臺與PC端基本相同,差別與本文在DM8168平臺中對圖像數據取值為float型有關,使得圖像數據的有效位數在6位后與PC端不同,但并不影響本文的高精度三維重建效果。
本文以DM8168雙目三維高精度重建系統為平臺,針對嵌入式DM8168系統對基于雙目的結構光高精度三維復原算法進行優化,使得該算法能達到快速高精度三維重建效果。本文優化方法不僅局限于本平臺算法中,可以應用到其他需要移植優化的圖像算法場合。從實用意義出發,經過本文中優化方法,高精度三維復原算法雖然處理速度達到了0.11 s,但仍有改進的空間,尤其是查表和級數展開相結合的方法,對于復雜的算術運算具有良好的優化效果,但對于循環以及條件語句仍需要進一步優化,這將是下一步的研究內容。
參考文獻:
[1] 梁 琨.基于雙目視覺的三維重建研究[D].西安:陜西科技大學,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的嵌入式高清圖像處理系統的關鍵技術研究[D].長春:中國科學院研究生院(長春光學精密機械與物理研究所),2013.
[5] 黃曉婷.基于DM8168雙核DSP的車型識別系統[D].南京:南京航空航天大學,2015.
[6] 楊振永,王延杰,孫海江,等.基于TMS320DM8168的SOC高清視頻處理系統的設計與實現[J].液晶與顯示,2013(5):764-769.
[7] 劉 冰,谷源濤.基于DM8168的視頻會議系統MCU設計與實現[J].計算機工程與設計,2014(10):3399-3403.
[8] 王 珊,徐 曉.基于雙目單視面的三維重建[J].光學學報,2017,37(5):207-215.
[9] 朱 海.基于DM8168的視頻監控系統的實現[D].成都:電子科技大學,2013.
[10] 吳火森.魚眼相機圖像處理及校正算法研究與實現[D].西安:西安電子科技大學,2015.
[11] 魏帶娣,李 元,郭 浩,等.基于DSP的運動目標檢測算法優化[J].指揮控制與仿真,2014,36(1):66-70.