李杰,李一軒,吳天生,王昊榕,梁敏
(山西財經(jīng)大學(xué) 信息學(xué)院,太原030006)
嵌入式計算機視覺系統(tǒng)是光學(xué)影像三維重建的重要應(yīng)用領(lǐng)域之一,通過三維重建可獲得相應(yīng)場景的深度信息,其類似于人眼的基本機制,在諸如機器人 導(dǎo) 航[1]、文 物 保 護[2]、航 空 攝 影[3-4]、太空探索[5-7]等領(lǐng)域都有重要的潛在應(yīng)用價值。無人機(Unmanned Aerial Vehicle,UAV)作為一種方便的地形觀測設(shè)備,通常應(yīng)用于航空攝影。假設(shè)D為無人機左右攝像機光心之間的距離,H為機載攝像機相對地面的高度。一般而言,無人機連續(xù)拍攝間隔距離D值很小,其飛行高度H值很大,即航拍影像的基高比相對很低。另外,使用無人機進行地形拍攝時,非常容易出現(xiàn)低紋理、動態(tài)紋理區(qū)域,尤其在多山地地區(qū)進行低空對地觀測時,圖像中常會包含高山、陰影、河流等區(qū)域,然而傳統(tǒng)基于FPGA的三維重建方法通常不適用于這一情形。
基于光學(xué)影像的三維重建系統(tǒng)通常包含大規(guī)模視差計算步驟,然而傳統(tǒng)計算機因固有的指令周期延遲使得大規(guī)模視差計算的運行效率非常低。針對該類問題,研究人員開始嘗試使用不同的硬件平臺來提高三維重建方法的時效性,包括采 用FPGA[5-6]、GPU[8]、DSP[9]、ASIC[10]等。然而,對于部分資源有限的硬件平臺,如FPGA、ASIC等,不能像對待CPU、GPU或DSP的應(yīng)用程序那樣,直接通過簡單地添加內(nèi)存或增加磁盤空間的方法允許相同算法處理更大圖像或更大視差范圍的問題。其主要原因是:就基于FPGA的應(yīng)用程序而言,可用邏輯資源數(shù)量有限,當(dāng)邏輯單元耗盡時,唯一的解決方案是添加另一個設(shè)備或更改相應(yīng)算法[11]。這就導(dǎo)致許多本質(zhì)上是高度迭代性的先進算法因FPGA資源受限難以有效實施。因此,在硬件編程復(fù)雜、資源受限的雙重壓力下,設(shè)計一套快速低功耗高精度三維重建方法是極具挑戰(zhàn)意義的問題。
針對上述問題,本文基于有限資源FPGA平臺,提出改進相位相關(guān)立體匹配算法來克服傳統(tǒng)FPGA方法易受光照變化、遮擋、陰影及小旋轉(zhuǎn)等因素影響,進而實現(xiàn)從包含低紋理區(qū)域、動態(tài)紋理區(qū)域及大視差范圍等干擾因素的真實山地?zé)o人機影像中提取高可靠視差信息,大大提高基于FPGA的無人機航拍影像三維重建方法的魯棒性、準(zhǔn)確性及綜合能耗等。與已有的研究成果相比,本文的主要貢獻如下:
1)基于多尺度深度圖融合思想提出一種改進相位相關(guān)立體匹配算法,并利用FPGA平臺構(gòu)建低功耗快速實現(xiàn)硬件架構(gòu)。
2)基于有限資源FPGA平臺,結(jié)合高并行指令優(yōu)化策略和高性能軟硬件協(xié)同優(yōu)化方法,提出一種層級迭代、同層并行的高吞吐量硬件優(yōu)化架構(gòu)。
3)本文方法充分利用FPGA芯片實現(xiàn)對外設(shè)影像和三維重建結(jié)果的自動處理和存儲。此外,從時間、功耗、魯棒性等方面對相關(guān)先進方法,如CPU[3]、GPU[8]等,進行充分的實驗對比。
綜上所述,本文方法不僅實現(xiàn)了基于無人機航拍影像的快速低功耗高精度三維重建,而且為各立體視覺應(yīng)用領(lǐng)域提供快速低功耗高精度的三維重建解決方案。因此,本文極具理論意義和現(xiàn)實意義。
圖像匹配作為三維重建流程中的關(guān)鍵步驟之一,可以用于檢測目標(biāo)圖像與參考圖像之間各像素點的平移距離。在三維重建中,通常采用圖像匹配算法實現(xiàn)立體圖像對的密集視差圖提取。目前,基于圖像匹配的視差估計算法大致可分為3類:基于灰度的算法[12-13]、基于特征的算法[14-15]和基于頻域的算法[16-17]。
基于灰度的視差估計算法假設(shè)目標(biāo)點與其對應(yīng)點的圖像強度在立體圖像對中保持不變,通過找到具有最小灰度值統(tǒng)計距離對應(yīng)像素塊,可計算出這2個圖像塊之間的位移關(guān)系。但在實際應(yīng)用中,圖像容易受到噪聲、照明變化和陰影等因素的干擾。因此,基于灰度的視差估計算法的結(jié)果在很大程度上取決于圖像質(zhì)量。
基于特征的立體匹配算法主要通過提取圖像中的特征描述(如邊緣或直線段)來進行圖像立體匹配。因此,對于紋理較少、信噪比(SNR)低且前景目標(biāo)區(qū)域較大的圖像(即特征描述不穩(wěn)定且容易混淆的圖像),匹配精度會大大降低。除此之外,為了追求更穩(wěn)定的特征,特征提取過程通常具有很大的計算復(fù)雜度。
在基于頻域的圖像配準(zhǔn)算法中,最典型的是基于相位相關(guān)的匹配算法[18-20]。該算法主要利用傅里葉變換平移特性來估計2個圖像之間的運動矢量。其中,平移特性是指空間域中的位移與頻域中的線性相位變化之間的對應(yīng)關(guān)系。基于相關(guān)函數(shù)的匹配算法不僅具有亞像素精度,還在圖像對比度和圖像強度方面不受全局線性照明變化的影響[21]。因此,相位相關(guān)對噪聲具有很高的魯棒性,適用于噪聲較大的場景。與傳統(tǒng)的特征提取算法[22]相比,該算法不依賴于特征提取,具有更快的更新速度。
Darabiha等[23]在包含4個Xilinx Virtex2000E FPGA的Transmogrifier-3A(TM-3A)開發(fā)板上實現(xiàn)在256×360分辨率圖像上以視頻速率(30幀/s)生成8-bit亞像素級密集視差圖。該系統(tǒng)使用局部加權(quán)相位相關(guān)算法,最多搜索20個像素范圍的視差值。在Darabiha等[23]的研究基礎(chǔ)上,Masrani和Maclean[11]使用更先進的硬件平臺,包含4個Altera Stratix S80 FPGA的Transmogrifier-4開發(fā)板進一步實現(xiàn)以相同速率(30幀/s)處理更大視差范圍的更大分辨率(480×640)圖像。由于Transmogrifier-4開發(fā)板具有更加強大的硬件資源,Masrani和Maclean[11]對局部加權(quán)相位相關(guān)算法進行了改進。采用2個可移動窗口取代了Darabiha等[23]固定窗口方法進行相位相關(guān)計算。雖然多倫多大學(xué)團隊的2項研究都以30幀/s速率實現(xiàn)三維重建,但很大程度上依賴于包含更大硬件資源的先進設(shè)備實現(xiàn),并且不適用于大分辨率圖像。除此之外,Masrani和Maclean[11]提到,理論上最多可以實現(xiàn)128視差范圍的搜索,但是大視差范圍重建的時間消耗將重新估計。
據(jù)調(diào)研,截至目前為止,現(xiàn)有通過FPGA平臺實現(xiàn)基于相位相關(guān)算法的光學(xué)影像三維重建研究相對較少,大多研究基本是基于空間域特征實現(xiàn)圖像立體配準(zhǔn)。Bhatia等[6]在RTAX2000S FPGA上提出了一種利用相位相關(guān)算法精確計算月球著陸器水平速度的新方法,在測試實驗中,該系統(tǒng)以2幀/s速率運行,但并沒有給出所處理圖像的分辨率值。Bhatia等[24]在其另一項研究中詳細描述了該算法的優(yōu)點,通過設(shè)計一種梯度濾波器,使改進相位相關(guān)算法適用于不同強度和對比度的圖像序列,進而提高圖像匹配精度。
Matsuo等[25]綜述了基于多種硬件平臺的相位相關(guān)算法及其實現(xiàn),并就相關(guān)評價屬性對其進行了詳細實驗比較。其中,硬件平臺包括GPU、ASIC和FPGA。最終結(jié)果表明,基于GPU的POC算法實現(xiàn)比基于FPGA實現(xiàn)要快近1倍的時間,如果僅考慮二維快速傅里葉變換(2D FFT)運算,則基于GPU實現(xiàn)比基于FPGA快15.5倍左右。雖然從速度上來看,基于GPU平臺方法表現(xiàn)更好,但其存在需求性限制問題,如功耗較高。雖然FPGA不需在功耗方面考慮更多,但其硬件資源非常有限,這在無形之中給算法設(shè)計及程序?qū)崿F(xiàn)帶來了極高困難。此外,如果使用片外存儲器(如SD卡)進行數(shù)據(jù)傳輸,更會進一步導(dǎo)致整個系統(tǒng)處理效率下降。因此,設(shè)計合理的FPGA硬件架構(gòu)顯得至關(guān)重要。
綜上所述,目前基于FPGA的相位相關(guān)算法在三維重建方面的研究相對較少,依舊處于探索階段,且大多研究集中在圖像匹配領(lǐng)域,在應(yīng)用層次方面鮮有涉及三維重建技術(shù)。基于此,本文在有限資源FPGA平臺下,構(gòu)建多尺度深度圖融合算法架構(gòu),并結(jié)合指令優(yōu)化策略和軟硬件協(xié)同優(yōu)化方法,提出一種基于FPGA高吞吐量硬件優(yōu)化架構(gòu)的無人機航拍影像快速低功耗高精度三維重建方法,滿足了無人機航拍影像低功耗高時效三維重建的需求,克服了無人機航拍影像三維重建中對高山、陰影和河流等區(qū)域視差估計的不可信問題。
近年來,無人機已廣泛用于工業(yè)檢查、遙感、制圖和測量等應(yīng)用領(lǐng)域。但在低空影像三維重建方面,現(xiàn)有無人機航拍影像三維重建方法在功耗、時效等方面無法滿足移動終端對低功耗、高時效的需求。因此,越來越多的研究人員將注意力聚焦于低功耗FPGA平臺上。盡管在FPGA平臺上已經(jīng)成功部署了許多立體視覺算法,但許多本質(zhì)上高度迭代或者依賴于不規(guī)律內(nèi)存訪問的先進算法,很難在有限資源FPGA平臺上實現(xiàn)其高能效性。為了解決上述問題,本文基于Xilinx ZCU104 FPGA評估板,結(jié)合高并行指令優(yōu)化策略和高性能軟硬件協(xié)同優(yōu)化方法,提出一種層級迭代、同層并行的高吞吐量硬件優(yōu)化架構(gòu)。
Xilinx ZCU104 FPGA評估板集成了嵌入式處理器(見圖1中PS區(qū)域)與可編程邏輯(見圖1中PL區(qū)域),既擁有ARM 處理器靈活高效的數(shù)據(jù)運算和事務(wù)處理能力,又集成了FPGA的高速并行處理優(yōu)勢。因此,在系統(tǒng)開發(fā)時,通??梢岳密浻布f(xié)同優(yōu)化方式將PL區(qū)域的硬件函數(shù)映射為PS區(qū)域一個或多個具有特定功能的外圍設(shè)備。Xilinx ZCU104 FPGA系統(tǒng)的體系結(jié)構(gòu)如圖1所示。一般來說,PS區(qū)域主要負責(zé)整個系統(tǒng)的算法調(diào)度,以及執(zhí)行具有復(fù)雜邏輯操作算法模塊,而大量重復(fù)性計算通常交由PL區(qū)域執(zhí)行,利用高并行指令硬件加速函數(shù)。
本文方法主要包含外圍設(shè)備、嵌入式處理器(PS區(qū)域)、可編程邏輯(PL區(qū)域)、存儲單元(RAM)4部分。其中,外圍設(shè)備包括搭載在無人機上的相機或SD卡。主要流程為(見圖2):FPGA讀取無人機相機捕獲到的航拍圖像序列,并對其執(zhí)行預(yù)處理對齊操作,再對對齊立體圖像對使用改進相位相關(guān)立體匹配算法進行視差估計,最終將多層視差圖融合結(jié)果存儲在SD卡中。
圖1 基于Xilinx ZCU104 FPGA系統(tǒng)的體系結(jié)構(gòu)Fig.1 System structure based on Xilinx ZCU104 FPGA
圖2 基于FPGA快速低功耗高精度三維重建方法流程Fig.2 Flowchart of fast,low-power and high-precision 3D reconstruction method based on FPGA
假設(shè)f1(x,y)、f2(x,y)分別表示無人機相機捕捉的2幅圖像,滿足以下關(guān)系:
即f1(x,y)平移(Δx,Δy)向量后可以得到f2(x,y),而改進相位相關(guān)立體匹配算法的目標(biāo)是:求解具有亞像素級精度的平移向量(Δx,Δy)。首先,對式(1)進行傅里葉變換得
式中:F1(u,v)、F2(u,v)分別為圖像f1(x,y)、f2(x,y)的頻域信息。
進一步,用2幅圖像的歸一化互功率譜表示其相位相關(guān)性。
歸一化互功率譜的傅里葉逆變換結(jié)果是空間域脈沖函數(shù)δ(x-Δx,y-Δy),其對應(yīng)的Dirichlet函數(shù)為
式中:A和B分別為圖像塊的寬和高。
式(4)可使用sin函數(shù)進行擬合,近似為
由于二維矩陣中各維度積分計算互不干涉,在下面的證明中只描述一維,這一結(jié)論也適用于其他維度。假設(shè)(x0,y0)為該維上最高點的坐標(biāo),(x1,y0)為與最高點相鄰的第二最高點,當(dāng)滿足x1=x0+1時,則
因此,在x方向上最大峰值點的亞像素平移為
Liu和Hong[26]指出,當(dāng)使用基于相位相關(guān)算法進行三維重建時,其精度依賴于PC窗口的選擇。如果窗口太小,不能覆蓋足夠大范圍的像素變化,則無法準(zhǔn)確地提取出較大范圍的視差信息,在低紋理區(qū)域的重建結(jié)果也變得不可靠;如果窗口過大,則不僅難以識別局部細節(jié)信息,還會造成圖像邊界溢出。
為了解決上述問題,本文采用多尺度深度圖融合思想進行視差優(yōu)化,與CPU方法[3]和GPU方法[8]類似,利用上一層視差結(jié)果引導(dǎo)下一層視差圖計算,充分結(jié)合不同尺寸窗口下PC計算優(yōu)勢,大大提高三維重建精度。具體的融合操作為:在下一層視差圖計算的子像素塊提取操作中,使用上一層視差結(jié)果作為該點子窗口提取的偏移量,實現(xiàn)在粗粒度視差結(jié)果基礎(chǔ)上進行細粒度的視差計算,此時,粗粒度視差加上細粒度視差就是該層最終視差結(jié)果。
完整的多尺度深度圖融合算法流程如圖3所示。其中,圖片A表示初始窗口下的視差圖結(jié)果,圖片B表示在初始窗口與減小窗口2種尺寸下的視差圖融合結(jié)果,圖片C表示3種不同尺寸窗口的視差圖融合結(jié)果。從實驗結(jié)果可以看出,當(dāng)?shù)螖?shù)為1時,視差圖A中存在較為明顯的邊緣效應(yīng);而當(dāng)?shù)螖?shù)為2時,在視差圖A引導(dǎo)下通過減小窗口尺寸后視差計算生成更為精細的紋理結(jié)構(gòu)(見視差圖B),但仍存在細微的邊緣效應(yīng);當(dāng)?shù)螖?shù)為3時,通過迭代更小窗口的視差結(jié)果使視差圖C具有非常高的視差精度,幾乎不存在肉眼可見的邊緣效應(yīng)。因此,使用多尺度深度圖融合算法可以生成高精度的重建結(jié)果。
算法1 多尺度深度圖融合算法。
輸入:無人機航拍影像對(左圖f、右圖g)。
輸出:視差圖M。
初始化:深度圖迭代3次,窗口尺寸分別為W1、W2、W3,每次窗口移動S1、S2、S3次。
1.BEGIN
2.利用W1窗口,對無人機航拍圖像對f、g分別取值,得到W1大小的子圖像塊f1、g1。
圖3 多尺度深度圖融合算法流程Fig.3 Multi-scale depth map fusion algorithm flowchart
3.分別對子圖f1、g1進行二維快速傅里葉變換(2D FFT)得到F1、G1。
4.利用式(3)求得歸一化互功率譜c1。
5.對c1進行二維快速傅里葉逆變換(2D IFFT)求得矩陣C1。
6.搜索C1矩陣中最大值所在位置(x0,y0),以及x方向的次大值(x1,y0),y方向的次大值(x0,y1),利用式(7)求得x方向的亞像素精度平移xm,同理可求得y方向的亞像素精度平移ym,則W1窗口位置的最大視差為(xm,ym)。
7.重復(fù)移動W1窗口位置S1次,重復(fù)步驟2~步驟5,得到W1窗口下的視差圖M1。
8.改變窗口尺寸為W2,將W1視差結(jié)果作為W2窗口下子圖像塊提取的偏移量,對無人機航拍圖像對f、g分別取值,得到W2大小的子圖像塊f2、g2。重復(fù)步驟3~步驟6,得到視差圖M2。
9.改變窗口尺寸為W3,重復(fù)步驟8,得到多尺度深度圖融合結(jié)果M。
10.END
在基于GPU平臺實現(xiàn)無人機航拍影像三維重建時,Li和Liu[8]使用單指令多數(shù)據(jù)流(Single Instruction Multiple Data,SIMD)體系架構(gòu)和統(tǒng)一計算設(shè)備架構(gòu)的快速傅里葉變換(CUDA Fast Fourier Transform,CUFFT)方法獨立計算每個點的視差值,但該方法依賴于大量的硬件資源支持(如2 GB顯卡內(nèi)存),是一種典型的利用大量硬件資源換取高效性能的實現(xiàn)方式。不同于GPU方法,基于有限資源FPGA平臺(如38 MB內(nèi)存Xilinx ZCU104 FPGA評估板),研究人員將更多精力投入到軟硬件協(xié)同優(yōu)化方案的選擇、高并行指令優(yōu)化硬件加速模塊等方面,通過設(shè)計一種層級迭代、同層并行的高吞吐量硬件優(yōu)化架構(gòu),實現(xiàn)基于無人機航拍影像的快速低功耗高精度三維重建。
為將多尺度深度圖融合算法在Xilinx ZCU104 FPGA平臺上高效運行,結(jié)合高并行指令優(yōu)化策略和高性能軟硬件協(xié)同優(yōu)化方法,提出一種層級迭代、同層并行的高吞吐量硬件優(yōu)化架構(gòu)。該方法實現(xiàn)的具體步驟如下:
步驟1 在CPU平臺上開發(fā)出滿足算法需求的可移植版本。
步驟2 將CPU版本移植到FPGA的嵌入式處理器(PS區(qū)域)。
步驟3 軟硬件協(xié)同優(yōu)化設(shè)計,根據(jù)方法每個模塊算法特性,將適用于硬件加速的模塊在可編程邏輯(PL區(qū)域)實現(xiàn)。
步驟4 對PL區(qū)域的硬件加速模塊進行高并行指令優(yōu)化。
步驟5 完成編譯并在Xilinx ZCU104 FPGA評估板運行,如果出現(xiàn)硬件資源不足無法編譯或者執(zhí)行效率達不到要求等情況,則返回步驟3調(diào)整軟硬件協(xié)同優(yōu)化方案,直到選擇出滿足要求的硬件架構(gòu)。
2.3.1 2D FFT硬件實現(xiàn)
2D FFT是基于FPGA相位相關(guān)三維重建技術(shù)中最重要的環(huán)節(jié)之一。與基于CPU、GPU平臺直接調(diào)用2D FFT函數(shù)不同,Xilinx ZCU104 FPGA評估板僅支持一維快速傅里葉變換(1D FFT)IP core,因此需要自主開發(fā)2D FFT模塊。在進行2D FFT模塊硬件開發(fā)時,根據(jù)傅里葉變換可分離性質(zhì),可以將其轉(zhuǎn)化成2個1D FFT實現(xiàn)。值得注意的是,這里存在一個重要的數(shù)據(jù)依賴關(guān)系,只有當(dāng)圖像塊矩陣中所有元素都完成一維行FFT之后,才能進行一維列FFT變換(見圖4)。筆者認為,這是相位相關(guān)算法難以在FPGA平臺上快速實現(xiàn)的主要原因之一。同理,在傅里葉逆變換過程中,2D IFFT模塊也是先轉(zhuǎn)換成1D行IFFT變換后再進行1D列IFFT變換。此外,Xilinx官方提供的1D FFT輸入輸出均為浮點復(fù)數(shù)形式,因此,還需將輸入圖像塊矩陣轉(zhuǎn)換成浮點復(fù)數(shù)形式。
圖4 2D FFT模塊數(shù)據(jù)依賴關(guān)系示例Fig.4 Example of 2D FFT module data dependency
2.3.2 軟硬件協(xié)同優(yōu)化
Xilinx公司的Xilinx ZCU104 FPGA評估板提供了一個靈活的原型設(shè)計平臺,ZU7EV設(shè)備集成了四核ARM Cortex-A53處理系統(tǒng)和雙核ARM Cortex-r5實時處理器,為應(yīng)用開發(fā)者提供了前所未有的異構(gòu)多處理能力。為了充分發(fā)揮異構(gòu)平臺的靈活性等優(yōu)勢,需要綜合考慮每一種可能的軟硬件協(xié)同優(yōu)化方案,并對不同方案優(yōu)缺點進行綜合分析,才能選擇出最適合的硬件架構(gòu)。軟硬件協(xié)同優(yōu)化具體是指:開發(fā)者需要根據(jù)嵌入式處理器(PS區(qū)域)靈活高效的數(shù)據(jù)運算和事務(wù)處理能力,以及可編程邏輯(PL區(qū)域)高速并行處理的性能特點,為其分配相應(yīng)功能,保證整個系統(tǒng)高效運行。
本文方法的目的是:在有限資源FPGA平臺上實現(xiàn)多尺度深度圖融合算法高效運行,但由于該算法的復(fù)雜性、不規(guī)律數(shù)據(jù)訪問及迭代性,如果對每一個模塊都按最高性能設(shè)計,則必將導(dǎo)致過多資源被占用。換句話說,如果一味追求最佳時效,則FPGA平臺的有限硬件資源無法支持整個系統(tǒng)運行。因此,要想在有限資源FPGA平臺上實現(xiàn)三維重建系統(tǒng)的所有功能,必須結(jié)合各種類型硬件資源使用情況,進行合理高效的軟硬件協(xié)同優(yōu)化。
在對無人機航拍影像序列進行子圖像塊提取時,一般會涉及到取窗口、邊緣填充判斷、不連續(xù)的內(nèi)存讀寫及賦值運算等操作。此時,如果直接將無人機航拍影像序列從PS區(qū)域轉(zhuǎn)移到PL區(qū)域內(nèi)存中,再進行子圖像塊提取,則不需要每次都將子圖像塊從PS區(qū)域轉(zhuǎn)移到PL區(qū)域,進而降低了時間消耗,提高系統(tǒng)處理速度,但是這種方法勢必會消耗PL區(qū)域大量的內(nèi)存資源。而如果考慮在PS區(qū)域中完成子圖像塊提取操作,再將子圖像塊轉(zhuǎn)移到PL區(qū)域進行下一步計算,則會最大程度上節(jié)省PL區(qū)域內(nèi)存資源占用,但是由于每次執(zhí)行子圖像塊提取操作都需要從PS區(qū)域轉(zhuǎn)移到PL區(qū)域,會在一定程度上增加時間成本,進而影響系統(tǒng)的整體性能。因此,基于有限資源FPGA平臺的三維重建方法設(shè)計往往是在硬件資源與時效性之間的一種綜合考量。一般而言,只有實現(xiàn)整個系統(tǒng)的基本功能之后,才會進一步考慮如何最大程度利用硬件資源的同時實現(xiàn)系統(tǒng)的最高性能。
本文方法的軟硬件協(xié)同優(yōu)化方案如圖5所示。該方案具體流程為:FPGA將無人機相機捕獲到的航拍圖像序列臨時存儲在RAM 中,再通過數(shù)據(jù)轉(zhuǎn)移器交由PS區(qū)域與PL區(qū)域進行協(xié)同優(yōu)化,最終將重建結(jié)果永久保存在SD卡中。此時,SD卡中的視差圖可直接轉(zhuǎn)換成需要的高程數(shù)字模型。其中,包含大量重復(fù)性計算功能的相位相關(guān)函數(shù)在可編程邏輯(PL區(qū)域)執(zhí)行,而嵌入式處理器(PS區(qū)域)主要負責(zé)無人機航拍影像讀取、取窗口、移動窗口、減小窗口、亞像素級視差估計及最終重建結(jié)果保存等復(fù)雜性邏輯操作。
2.3.3 高并行指令優(yōu)化
圖5 軟硬件協(xié)同優(yōu)化流程Fig.5 Hardware-software co-design flowchart
本文方法并行架構(gòu)設(shè)計時,主要利用pipeline(流水線)及dataflow(數(shù)據(jù)流)高并行指令進行優(yōu)化。在底層代碼中,主要使用pipeline指令對for循環(huán)代碼進行展開,pipeline指令可以通過允許操作的并發(fā)執(zhí)行來減少一個函數(shù)或循環(huán)的啟動間隔,以此達到提高系統(tǒng)吞吐量的目的。dataflow指令可以支持任務(wù)級管道處理,其允許函數(shù)和循環(huán)在各自的操作中進行重疊,這將增加RTL實現(xiàn)的并發(fā)性,進而可以增加設(shè)計的總體吞吐量。
為了最大程度降低正向、逆向二維快遞傅里葉變換(FFT、IFFT)中數(shù)據(jù)依賴關(guān)系對整個系統(tǒng)性能造成的影響,在設(shè)計相位相關(guān)計算模塊時,本文使用dataflow指令對頻域轉(zhuǎn)換、歸一化互功率譜計算及2D IFFT三個函數(shù)進行并行加速,通過覆蓋內(nèi)存讀寫的時間消耗,最大程度上增加系統(tǒng)吞吐率。具體的操作為:將頻域轉(zhuǎn)換中一維列FFT、互功率譜計算及2D IFFT中一維行IFFT三個操作合并成一個中轉(zhuǎn)模塊(見圖6),將中轉(zhuǎn)模塊、頻域轉(zhuǎn)換中一維行FFT模塊及2D IFFT中一維列IFFT模塊合并成一個硬件函數(shù),并使用dataflow指令對其并行加速。
圖6 中轉(zhuǎn)模塊設(shè)計示意圖Fig.6 Schematic diagram of transfer module design
本文方法在Xilinx ZCU104 FPGA評估板上實現(xiàn)了完整的基于無人機航拍影像的快速低功耗高精度三維重建方法。實驗圖像采用Liu[26]、Li[3,8]等的無人機航拍影像數(shù)據(jù),該組影像數(shù)據(jù)來源于中國西南山區(qū)拍攝的真實無人機圖像序列。為了方便進行方法測試,從中選擇了2張無人機航拍圖像,并存儲在SD卡中,用于測試的圖像分辨率為1 068×712。
Xilinx ZCU104 FPGA評估板提供了一個靈活的原型設(shè)計平臺,該平臺具有高速DDR4內(nèi)存接口、FMC擴展端口、每秒千兆串行收發(fā)器、各種外圍接口和可定制設(shè)計的FPGA結(jié)構(gòu)。在Xilinx ZCU FPGA評估板上裝有Zynq UltraScale+XCZU7EV-2FFVC1156 MPSoC,其在同一器件中結(jié)合了功能強大的嵌入式處理系統(tǒng)(PS區(qū)域)和可編程邏輯(PL區(qū)域),共具有504 000個系統(tǒng)邏輯單元(LUT)、461 000個CLB觸發(fā)器(FF)、38 Mb存儲器(RAM)。在評估實驗中,本文方法使用Xilinx官方提供的新一代SDSoCTM軟件開發(fā)工具進行系統(tǒng)開發(fā)。其中,表1的數(shù)據(jù)來源于Xilinx官方軟件SDx提供的HLS報告;表2及FPGA功耗數(shù)據(jù)來源于Xilinx官方軟件Vivado提供的項目綜合報告;CPU方法[3]、GPU方法[8]及本文方法分別基于4 GB RAM內(nèi)存資源的AMD Athlon II x2 240型號CPU(2.80 GHz)、英偉達GTX760型號GPU(2 GB顯存)及Xilinx ZCU104 FPGA(38Mb RAM內(nèi)存)評估板實現(xiàn)。
表1 不同軟硬件協(xié)同優(yōu)化方案對比Table 1 Comparison of different hardware-software co-design solutions
表2 不同指令優(yōu)化策略對比Table 2 Comparison of different instruction optimization strategies
在軟硬件協(xié)同優(yōu)化設(shè)計方面,有針對性地選擇了3個具有代表性的軟硬件協(xié)同設(shè)計方案,為了方便比較,僅考慮在初始窗口下的視差圖計算,具體分區(qū)方案如圖7所示。
軟硬件協(xié)同優(yōu)化方案1的具體細節(jié)包括:①將測試用的無人機航拍圖像對讀取到嵌入式處理器(PS區(qū)域)中,并進行初始大小窗口的子圖像塊提取操作,再通過數(shù)據(jù)轉(zhuǎn)移器DMA傳入PL區(qū)域。②在PL區(qū)域通過2.3.3節(jié)描述的高并行相位相關(guān)計算模塊,即利用dataflow指令對頻域轉(zhuǎn)換、歸一化互功率譜計算及2D IFFT三個函數(shù)進行并行加速,求得空間域脈沖函數(shù)。③將脈沖函數(shù)轉(zhuǎn)移到PS區(qū)域中,再使用sin函數(shù)對空間域脈沖函數(shù)進行亞像素級視差估計,這是因為峰值擬合時需要進行大量邏輯判斷操作,更適用于嵌入式處理器實現(xiàn)。④在PS區(qū)域進行移動窗口提取子圖像塊操作,再重復(fù)步驟①~步驟③,直到獲得初始窗口下的完整視差圖。
軟硬件協(xié)同優(yōu)化方案2基于方案1,在方案2中,將無人機航拍圖像對轉(zhuǎn)移到PL區(qū)域后,再進行子圖像塊提取、相位相關(guān)計算及亞像素級視差估計等操作。而軟硬件協(xié)同優(yōu)化方案3是在方案2基礎(chǔ)上的一次大膽嘗試。為了最大程度地提升系統(tǒng)性能,在方案3中,使用dataflow指令對子圖像塊提取操作進行并行優(yōu)化加速。然而,在程序編譯時,編譯器提示因RAM資源不足導(dǎo)致無法編譯。因此,在軟硬件協(xié)同優(yōu)化方案對比實驗中,主要對方案1和方案2進行詳細的實驗對比論證。
為了對2種方案進行更深層次的比較研究,本文分別列出了其在FPGA平臺實現(xiàn)時所占用的硬件資源情況,具體如表1所示。實驗結(jié)果證明,雖然方案2比方案1節(jié)省了約20%的時間,然而方案2僅初始大小窗口下的視差計算就占用了整個FPGA近一半的BRAM_18K(18Kb Block RAM塊隨機存儲器)資源,最終導(dǎo)致該方案無法實現(xiàn)多尺度深度圖融合算法的三維重建。
因此,考慮到FPGA硬件資源有限,本文方法最終選擇方案1的軟硬件協(xié)同優(yōu)化方案。
在指令優(yōu)化策略方面,為了驗證本文方法高并行指令優(yōu)化策略的有效性,列出了3種不同指令優(yōu)化策略進行比較,具體描述如下:
1)方案1僅使用pipeline指令對相位相關(guān)計算模塊中取窗口、頻域轉(zhuǎn)換、歸一化互功率譜計算及2D IFFT等硬件加速函數(shù)分別優(yōu)化。
2)在方案2中,將頻域轉(zhuǎn)換中一維列FFT、互功率譜計算及2D IFFT中一維行IFFT三個函數(shù)合并為一個中轉(zhuǎn)模塊,并與頻域轉(zhuǎn)換中一維行FFT模塊及2D IFFT中一維列IFFT模塊3個硬件函數(shù)分別使用dataflow指令優(yōu)化并行加速。
3)方案3是本文方法所采用的高并行指令優(yōu)化策略,即將方案2提到的中轉(zhuǎn)模塊、頻域轉(zhuǎn)換中一維行FFT模塊及2D IFFT中一維列IFFT模塊合并成一個硬件函數(shù)后,使用dataflow指令對其并行加速。
3種不同指令優(yōu)化策略實驗結(jié)果如表2所示。其中,包括方案1在128×128分辨率窗口下生成視差圖所消耗的硬件資源情況及執(zhí)行時間,方案2及方案3分別在128×128、64×64、32×32分辨率窗口下生成視差圖及實現(xiàn)三層視差圖融合三維重建方法所消耗的硬件資源情況、重建時間。表2結(jié)果顯示,采用方案1指令優(yōu)化策略,僅128×128分辨率窗口下的視差計算就消耗整個評估板66.51%的BRAM(塊內(nèi)存)硬件資源,甚至無法完成第2層的視差圖重建,筆者認為導(dǎo)致方案1性能差的主要原因是:未充分利用不同函數(shù)之間的數(shù)據(jù)依賴關(guān)系而進行指令優(yōu)化。而方案2和方案3雖然都成功實現(xiàn)了三層視差圖融合三維重建,但由于方案2未對不同函數(shù)模塊之間的內(nèi)存讀寫等待進行優(yōu)化,導(dǎo)致硬件函數(shù)執(zhí)行效率不高。
圖7 三種軟硬件協(xié)同優(yōu)化方案示意Fig.7 Schematic diagram of three hardware-software co-design solutions
因此,本文方法最終采用方案3高并行指令優(yōu)化策略,相比于其他方法,所消耗資源更少,重建速度更快,具有更高效性能。
3.3.1 魯棒性
將本文方法與其他7種先進方法(方法[27]、方法[28]、方法[29]、方法[30]、Agisoft stereoscan商業(yè)軟件方法(http://www.agisoft.com)、CPU方法[3]及GPU方法[8])進行比較研究。其中,初始參數(shù)設(shè)置如下:層次化方法[27-28]使用32×32初始窗口來估計視差;方法[29-30]使用32×32固定窗口來估計視差;對于Agisoft stereoscan商業(yè)軟件方法,使用其默認初始參數(shù);CPU方法[3]、GPU方法[8]和本文方法的初始窗口、初始采樣間隔和初始運動矩陣的初始參數(shù)分別設(shè)置為128×128像素、16像素和0。此外,在MATLAB平臺上測試 了CPU 方 法[3]、基 于 層 次 的 方 法[27,29-30],并在Visual Studio環(huán)境中比較了方法[28]和GPU方法[8]。因此,假設(shè)上述方法具有最合適的初始條件和環(huán)境。值得注意的是,雖然本文中的視差3D網(wǎng)格模型不是真正的數(shù)字高程模型(Digital Elevation Model,DEM),但這不影響系統(tǒng)性能的分析和比較。具體三維重建結(jié)果如圖8所示,其中矩形和橢圓分別代表重建結(jié)果中高山區(qū)域和河谷區(qū)域。實驗結(jié)果表明,方法[28]、方法[29]及方法[30]的矩形區(qū)域和橢圓區(qū)域重建結(jié)果嚴(yán)重失真,即受高山區(qū)域和河谷區(qū)域影響很大,而方法[27]與Agisoft stereoscan商業(yè)軟件的矩形區(qū)域成功恢復(fù)出高山地形特征,但是在橢圓區(qū)域卻無法重建出河流區(qū)域的場景結(jié)構(gòu),只有CPU 方法[3]、GPU方法[8]與本文方法同時恢復(fù)出高山區(qū)域和河流區(qū)域的場景結(jié)構(gòu)。
因此,本文方法與CPU方法[3]、GPU方法[8]的重建結(jié)果相近,并顯著優(yōu)于現(xiàn)有方法[27-30]及Agisoft stereoscan商業(yè)軟件的重建結(jié)果,表現(xiàn)出很強的魯棒性。除此之外,為了充分證明本文方法的優(yōu)越性,進一步提供了2組無人機圖像的測試結(jié)果,分別如圖9和圖10所示。在圖9中,矩形和橢圓分別代表重建結(jié)果中河流區(qū)域和高山區(qū)域。實驗結(jié)果表明,方法[28]和方法[30]的矩形和橢圓區(qū)域重建結(jié)果受高山區(qū)域和河流區(qū)域影響嚴(yán)重,而CPU方法[3]、GPU方法[8]及本文方法可最大程度地減少高山和河流的影響。另外,在圖10中,橢圓代表重建結(jié)果中山脈地區(qū)。實驗結(jié)果表明,方法[28]和方法[30]的橢圓區(qū)域重建結(jié)果受山脈地區(qū)影響很大,幾乎不能生成有效的重建結(jié)果。而CPU方法[3]、GPU方法[8]與本文方法可充分提取高山無人機圖像的三維場景結(jié)構(gòu)。因此,本文模型對高山、河流區(qū)域及山脈地區(qū)的無人機航拍影像具有很強的魯棒性,并高度適用于多種復(fù)雜環(huán)境的無人機航拍圖像。此外,本文方法在功耗及時效上具有更優(yōu)異的表現(xiàn)。為了對本文方法的性能進行綜合評估,將在3.3.2節(jié)從功耗及時效性方面,基于CPU方法[3]及基于GPU方法[8]進行進一步對比分析。
圖8 與先進方法重建結(jié)果比較Fig.8 Comparison with reconstruction results of state-of-the-art methods
圖9 高山、河流區(qū)域無人機圖像的測試結(jié)果Fig.9 Test results of UAV image of mountain and river areas
圖10 山區(qū)無人機圖像的測試結(jié)果Fig.10 Test results of UAV images of mountain area
3.3.2 功耗和時效性
圖11 基于CPU、GPU、FPGA方法的功耗和時效性比較Fig.11 Comparison on power consumption and time consumption based on CPU,GPU and FPGA methods
對本文方法與基于CPU[3]、GPU[8]平臺的三維重建方法,在執(zhí)行時間、功率損耗兩方面進行詳細比較。實驗結(jié)果如圖11所示。實驗數(shù)據(jù)顯示,基于有限資源FPGA方法,在時間消耗上達到與基于GPU方法相近的結(jié)果,并且與基于CPU平臺方法相比,其時效性提高了近20倍;另外,在功耗方面,基于FPGA方法的功耗遠遠低于GPU方法,僅為基于GPU方法的2.12%,與基于CPU方法相比,基于FPGA 方法是基于CPU 方法的7.42%。綜上所述,本文方法成功使用有限資源FPGA芯片,實現(xiàn)了無人機航拍影像快速低功耗三維重建。為了進一步展示本文模型的高精度特性,將在3.3.3節(jié)從模型精度方面進行進一步分析。
3.3.3 精 度
為了充分展示本文模型的高精度特性,基于一 組 人 工 合 成 圖 像 對 FPGA 方 法 和 CPU[3]、GPU[8]平臺的三維重建方法,在模型精度方面進行詳細比較。首先,設(shè)計了一張尺寸為512×512像素的脈沖噪聲圖像(噪聲密度為0.5)。然后,為了模擬精度為1.5的亞像素平移,將上述圖像中央的100×100像素正方形區(qū)域在x軸上平移1.5個像素之后的結(jié)果作為目標(biāo)圖像。最后,分別使用本文方法與CPU[3]、GPU[8]方法對上述立體圖像對進行三維重建。值得注意的是,由于FPGA平臺生成的視差結(jié)果以BMP位圖圖片格式存儲,當(dāng)利用MATLAB平臺讀取視差結(jié)果并進行三維可視化顯示時,視差結(jié)果會自動轉(zhuǎn)換為0~255范圍的灰度值大小,需將其按比例縮放到相應(yīng)尺寸顯示。重建結(jié)果如圖12所示。根據(jù)圖12可視化結(jié)果和表3定量評估結(jié)果顯示,本文方法成功基于有限資源FPGA芯片生成接近于CPU和GPU方法精度的三維重建結(jié)果。因此,本文方法具有亞像素級視差精度的三維重構(gòu)能力。
圖12 基于合成圖像的三維重建結(jié)果可視化Fig.12 Visualization of 3D reconstruction results based on synthetic images
表3 基于CPU、GPU、FPGA平臺三維重建方法的定量評估結(jié)果Table 3 Quantitative evaluation of 3D reconstruction results based on CPU,GPU and FPGA methods
本文結(jié)合高并行指令優(yōu)化策略,提出了一種基于FPGA軟硬件協(xié)同優(yōu)化方案的快速低功耗高精度三維重建方法。
1)本文方法實現(xiàn)了對無人機航拍影像中復(fù)雜低紋理區(qū)域、動態(tài)紋理區(qū)域及大視差范圍區(qū)域的低功耗快速高精度的視差信息求解。
2)本文方法能夠在單個FPGA上實現(xiàn)包括預(yù)處理和后處理階段等完整三維重建方法,如無人機航拍圖像序列讀取、子圖像提取、視差計算、亞像素級視差擬合及重建結(jié)果保存等。
3)為了對本文方法進行全面評估,基于CPU、GPU及FPGA平臺的方法進行了對比研究,實驗結(jié)果表明,本文方法在執(zhí)行速度方面可與GPU方法相媲美,更在功耗方面明顯優(yōu)于GPU方法。
在未來的工作中,將嘗試在硬件架構(gòu)(如多FPGA系統(tǒng))或算法等方面,對三維重建方法的質(zhì)量和重建速度進行進一步的優(yōu)化,或考慮在立體視覺的其他應(yīng)用領(lǐng)域展開探索。