趙智祎,孫婷,李峰 ,辛蕾,魯嘯天,梁亮
1. 北京信息科技大學(xué) 儀器科學(xué)與光電工程學(xué)院,北京 100192 2. 中國空間技術(shù)研究院 錢學(xué)森空間技術(shù)實(shí)驗(yàn)室,北京 100094 3. 清華大學(xué) 電子工程系,北京 100084
隨著航天技術(shù)的發(fā)展,星載遙感數(shù)據(jù)和地球影像數(shù)據(jù)獲取的尺寸更大,內(nèi)容更加豐富[1],遙感衛(wèi)星進(jìn)入“四高”、“亞米級(jí)”時(shí)代[2]。未來遙感影像在軌處理拼接、衛(wèi)星視頻的配準(zhǔn)等都需要快速處理,但是圖像配準(zhǔn)的算法通常計(jì)算量非常大[3],在通用計(jì)算機(jī)上耗時(shí)和功耗都比較大,不適合大規(guī)模將圖像配準(zhǔn)算法加載到星載設(shè)備上,通用的嵌入式處理器的計(jì)算力較難勝任遙感影像的配準(zhǔn)算法,因此,亟待一種高效解決高分辨率衛(wèi)星圖像配準(zhǔn)的方法[4]。
基于地面工作站的遙感影像配準(zhǔn),可以利用大型計(jì)算機(jī)批量處理遙感影像,但是需要在軌衛(wèi)星通過緊缺的衛(wèi)星通信帶寬,將拍攝的影像全部傳輸?shù)降孛?,缺點(diǎn)顯而易見?;谇度胧皆O(shè)備的算法通常能夠以降低部分性能和減少部分功能的方式,大幅度減少部署算法平臺(tái)的功耗和體積。
近年隨著半導(dǎo)體工藝的日漸成熟,現(xiàn)場可編程邏輯門陣列FPGA的工作頻率得到了大幅提升,片上資源更加豐富。FPGA內(nèi)部是由查找表、邏輯門陣列、塊RAM等組成的可編程的集成電路結(jié)構(gòu),能夠做到真正的并行計(jì)算[5]。FPGA作為實(shí)現(xiàn)精密控制[6]、圖像處理、人工智能等領(lǐng)域算法部署的高效能計(jì)算平臺(tái),越來越受到重視。
ORB算法是一種常用的基于特征點(diǎn)的影像配準(zhǔn)算法[7],基于特征的遙感影像配準(zhǔn)算法也常用在遙感影像的道路提取等問題中[8]。ORB算法是一種快速影像配準(zhǔn)算法,但是由于遙感影像的尺寸一般比較大,配準(zhǔn)算法需要耗費(fèi)大量計(jì)算資源,星載的通用處理器很難滿足大尺寸遙感影像配準(zhǔn)的需求。北京理工大學(xué)Fang W等人設(shè)計(jì)了一種用于ORB-slam的加速方案,可處理影像分辨率達(dá)到640×480像素[9]。Weberruss J等人報(bào)道了采用PCIe接口加速ORB算法的方法[10]。四川大學(xué)尹顏朋等研究了將ORB算法定點(diǎn)化并用于自動(dòng)駕駛的研究[11]。華中科技大學(xué)Xie Zizhao等人通過PCIe接口,設(shè)計(jì)了一種PC與FPGA共同實(shí)現(xiàn)的ORB加速方法[12],這是目前多種ORB加速方法中幀率最高的一種方法。
本文提出了一種靈活的流水線化ORB算法加速方案,能夠降低ORB配準(zhǔn)算法的耗時(shí),并保持ORB算法的可擴(kuò)展性,適用于嵌入式設(shè)備。除了流水線化設(shè)計(jì)以外,為了能夠使影像配準(zhǔn)適應(yīng)不同的設(shè)計(jì)要求,預(yù)留了多流水線的接口設(shè)計(jì)。
ORB算法是由Rublee等人在2011年提出的[13],其目的是為了代替高計(jì)算資源占用的SIFT和SURF等算法。ORB算法能快速生成比較可靠的特征點(diǎn),常用于快速圖像配準(zhǔn)。通常將兩張圖片中的一張作為參考圖片,另一張作為待配準(zhǔn)的影像,分別進(jìn)行ORB算法特征點(diǎn)和描述子的計(jì)算,然后通過特征點(diǎn)匹配算法,產(chǎn)生一個(gè)變換矩陣H,這是圖像配準(zhǔn)的一個(gè)重要參數(shù)。ORB算法按功能主要分為以下三部分:構(gòu)建高斯圖像金字塔、FAST角點(diǎn)檢測和BRIEF描述子計(jì)算。
(1)構(gòu)建高斯金字塔
為了解決尺度不變性問題,ORB采用高斯金字塔來解決尺度問題。圖像金字塔的每一層都是由變尺度高斯函數(shù)與輸入圖像進(jìn)行卷積得到的,如式(1)所示:
P(x,y,σ)=G(x,y,σ)*I(x,y)
(1)
式中:*為x和y的卷積運(yùn)算,輸入圖像為I(x,y)。
為了保證整體匹配精度,采用了8層圖像金字塔。在構(gòu)造圖像金字塔時(shí),采用了雙線性插值方法的降采樣,設(shè)定1.2作為縮放比。圖1為高斯圖像金字塔實(shí)例。
圖1 高斯圖像金字塔實(shí)例Fig.1 Illustration of Gaussian image pyramid
通常,構(gòu)建一個(gè)圖像金字塔會(huì)消耗大量的計(jì)算資源和時(shí)間。特別是在圖像配準(zhǔn)中,每幅圖像都需要建立一個(gè)圖像金字塔,但是圖像金字塔的層數(shù)可以根據(jù)不同的場景和需求進(jìn)行調(diào)整。
(2)oFAST角點(diǎn)檢測
FAST角點(diǎn)是一種快速的角點(diǎn)檢測算法[14],能夠高效快速地檢測角點(diǎn),但它不具有旋轉(zhuǎn)不變性。ORB對(duì)角點(diǎn)增加了角度信息,稱為oFAST,對(duì)于圓上的每個(gè)位置,相對(duì)于p有三種狀態(tài)。FAST檢測的數(shù)學(xué)表達(dá)式為:
Sp→x=
快速檢測以p為中心計(jì)算像素周圍像素值之間差值絕對(duì)值之和,鄰域范圍如圖2所示。如果和大于閾值,則確定p為特征點(diǎn)。當(dāng)使用FAST-9(半徑為9像元)時(shí),ORB具有良好的表現(xiàn)。
圖2 FAST角點(diǎn)檢測鄰域Fig.2 FAST detection neighborhood diagram
通過FAST-9角點(diǎn)算法得到一定數(shù)量的N個(gè)角點(diǎn)。由于FAST-9對(duì)邊緣過于敏感,不能完全依賴于FAST來過濾所有的特征點(diǎn)。因此,將FAST-9角點(diǎn)篩選出來的N個(gè)角點(diǎn),通過Harris角點(diǎn)響應(yīng)值計(jì)算得到一些最佳的特征點(diǎn)。
FAST-9角點(diǎn)不具有尺度不變性,ORB在每層圖像金字塔上進(jìn)行FAST-9角點(diǎn)檢測,找出粗篩選的部分角點(diǎn)。為了解決FAST-9角點(diǎn)檢測容易受到噪聲影響的問題,同時(shí)為了獲得更準(zhǔn)確的角點(diǎn),需要計(jì)算粗篩選出來的角點(diǎn)的Harris響應(yīng)值。
ORB為了解決FAST-9角點(diǎn)檢測不具有旋轉(zhuǎn)不變性的問題,采用灰度質(zhì)心法計(jì)算特征點(diǎn)的角度,其計(jì)算方式如式(2)(3)(4)所示。
(2)
質(zhì)心位置坐標(biāo)C由式(3)確定:
(3)
可以通過C的位置,構(gòu)建一個(gè)由O指向質(zhì)心C的向量,向量的角度θ可以由式(4)計(jì)算:
θ=atan2(m01,m10)
(4)
這里的atan2是具有象限感知的arctan函數(shù)。
(3)rBRIEF特征點(diǎn)計(jì)算
ORB采用了改進(jìn)的BRIEF作為描述子,BRIEF是一組二進(jìn)制字符串組成的描述子,BRIEF描述子由一組二進(jìn)制強(qiáng)度測試構(gòu)造的圖像補(bǔ)丁的位串描述。定義一個(gè)平滑圖像的影像塊p的二進(jìn)制τ比較操作如式(5)所示:
(5)
那么p在一個(gè)點(diǎn)x處的強(qiáng)度為p(x)。這個(gè)特征就可以定義為一個(gè)n維的二進(jìn)制向量組fn(p),如式(6)所示:
(6)
在ORB算法中通常將向量的維數(shù)n選擇為256。描述子計(jì)算前的圖像平滑非常重要,ORB算法是在進(jìn)行高斯濾波以后,在濾波后的圖像上計(jì)算描述子。
僅使用原始的BRIEF描述子,通常在應(yīng)對(duì)旋轉(zhuǎn)圖像方面的表現(xiàn)不好,ORB算法采用了加強(qiáng)版的BRIEF描述子,稱為rBRIEF,是通過特征點(diǎn)的角度計(jì)算得到的。對(duì)于任一n維二進(jìn)制的特征,在點(diǎn)(xi,yi)的領(lǐng)域內(nèi),定義一個(gè)2×n的矩陣S:
使用鄰域塊的角度θ和旋轉(zhuǎn)一致性矩陣Rθ,構(gòu)建一個(gè)Sθ作為改進(jìn)后的S:
Sθ=RθS
最后,ORB的描述子的計(jì)算操作就可以定義為:
gn(p,θ):=fn(p)|(xi,yi)∈Sθ
在ORB算法中通過一個(gè)預(yù)先構(gòu)建的查找表加快了描述子計(jì)算。
ORB算法可配置特征點(diǎn)數(shù)量、特征點(diǎn)檢測閾值以及圖像金字塔層數(shù)等參數(shù)。ORB要比SIFT和SURF等圖像配準(zhǔn)算法快,而且更適合并行計(jì)算?;贠RB論證試驗(yàn),ORB描述子的計(jì)算要比SURF描述子快92.9%,比SIFT描述子快99.7%,所以對(duì)于需要特征點(diǎn)多的場景,ORB在速度上具有更強(qiáng)的優(yōu)勢。
作為一種快速、低復(fù)雜度的圖像配準(zhǔn)算法,ORB算法被用在很多需要考慮整體算法效率的場景,比如影像配準(zhǔn)、目標(biāo)檢測等領(lǐng)域中。同時(shí)ORB高效的計(jì)算效率對(duì)于需要實(shí)時(shí)處理影像特征點(diǎn)匹配的應(yīng)用場景,如同步定位與建圖SLAM[15]、速度估計(jì)[16]、視覺測距[17]、圖像拼接[18]等,計(jì)算效能有很大提升。
原始的ORB算法適合在通用CPU上進(jìn)行計(jì)算,為了保證ORB在FPGA上能夠流水線化處理,本文對(duì)每層金字塔將FAST-9角點(diǎn)檢測算法、Harris響應(yīng)值計(jì)算和Gaussian濾波模塊均以上一層金字塔的高斯濾波進(jìn)行下采樣作為輸入。
ORB算法在構(gòu)建高斯圖像金字塔時(shí),將上一級(jí)金字塔的下采樣圖像,作為構(gòu)建下一級(jí)金字塔的輸入,不利于硬件結(jié)構(gòu)的設(shè)計(jì)。為了保證硬件結(jié)構(gòu)的時(shí)序收斂,本文將上一層圖像金字塔的高斯濾波作為構(gòu)建下一層圖像金字塔的輸入。
加速方案在圖像金字塔構(gòu)建過程中,每層的輸入影像都以上一層的高斯濾波結(jié)果作為輸入,這樣每層流水線都不需要在中途將數(shù)據(jù)寫入到DDR,而是直接進(jìn)入下一模塊進(jìn)行計(jì)算,將圖像金字塔的每一層流水線作為一個(gè)加速整體實(shí)現(xiàn),靈活實(shí)現(xiàn)多模塊之間的數(shù)據(jù)流水線。
ORB中先使用FAST分?jǐn)?shù)作為初步篩選條件,待選的特征點(diǎn)都計(jì)算其對(duì)應(yīng)的Harris響應(yīng)值,作為最終選擇特征點(diǎn)的篩選條件。將FAST角點(diǎn)檢測和Harris響應(yīng)值計(jì)算在FPGA中同步進(jìn)行,不同的是Harris響應(yīng)值是對(duì)整幅圖像進(jìn)行計(jì)算。通過FAST角點(diǎn)檢測的結(jié)果在Harris響應(yīng)值序列中確定排序分?jǐn)?shù)。通過分析,這樣的改動(dòng)會(huì)讓整體配準(zhǔn)算法的精度更高,因?yàn)镠arris響應(yīng)值選出的特征點(diǎn)集要比FAST-9更加精準(zhǔn),見7.3節(jié)。
采用軟硬件結(jié)合的方式實(shí)現(xiàn)嵌入式ORB算法的加速器設(shè)計(jì),ZYNQ7020片上系統(tǒng)提供了雙核ARM-A9嵌入式CPU硬核,以及Artix-7可編程邏輯門陣列單元,能夠滿足功能設(shè)計(jì)的硬件要求。圖3展示了ORB的嵌入式FPGA加速器的整體架構(gòu)。
圖3 本文設(shè)計(jì)的ORB加速器總體架構(gòu)Fig.3 The proposed architecture diagram of ORB accelerator
圖像的解析由軟件實(shí)現(xiàn),方便不同數(shù)據(jù)結(jié)構(gòu)的圖像數(shù)據(jù)使用ORB加速器[19]。根據(jù)ZYNQ系列片上系統(tǒng)芯片的配置方式,ORB加速器的圖片相關(guān)參數(shù)由軟件在解析圖片后進(jìn)行軟配置。
FAST-9算法、Harris響應(yīng)值和高斯濾波需要對(duì)整幅影像進(jìn)行計(jì)算,他們的計(jì)算特點(diǎn)是可以流水線化,都是鄰域相關(guān)的計(jì)算,適合采用FPGA,對(duì)此采用了FPGA增加吞吐率。
特征點(diǎn)的選擇需要在全局范圍內(nèi)排序篩選,采用軟件實(shí)現(xiàn),保證了特征點(diǎn)選擇是基于全局最優(yōu)的選擇。特征描述子的計(jì)算量與特征點(diǎn)的數(shù)量有關(guān),為了保證靈活性,采用軟件實(shí)現(xiàn)ORB描述子的計(jì)算。
通過分析ORB算法結(jié)構(gòu),發(fā)現(xiàn)構(gòu)建圖像金字塔也是導(dǎo)致ORB算法的速度不能進(jìn)一步獲得提升的瓶頸。將每層圖像金字塔的構(gòu)建過程都使用FPGA進(jìn)行加速設(shè)計(jì),硬件設(shè)計(jì)遵循靈活性的原則。為了方便靈活選擇進(jìn)行加速處理的金字塔層數(shù),將ORB中每一層金字塔處理的任務(wù)流水線化,圖4展示了硬件的架構(gòu)。
圖4 硬件結(jié)構(gòu)原理Fig.4 Schematic diagram of hardware structure
首先通過連接Resize模塊的DMA,將數(shù)據(jù)從DDR3中搬運(yùn)至PL端,Resize模塊主要根據(jù)所處的圖像金字塔層數(shù),使用雙線性插值法對(duì)輸入的圖像進(jìn)行下采樣。當(dāng)Resize模塊對(duì)圖像數(shù)據(jù)使用流水線的方式輸出數(shù)據(jù)時(shí),經(jīng)過信號(hào)分發(fā)模塊將數(shù)據(jù)信號(hào)復(fù)制,然后將三路并行信號(hào)分別接入到FAST-9模塊、Harris模塊和Gaussian濾波模塊。FAST-9和Harris模塊主要用于特征點(diǎn)檢測,Gaussian濾波模塊用于ORB描述子的計(jì)算以及下一級(jí)圖像金字塔的構(gòu)建。
設(shè)計(jì)的模塊之間都采用AXI-Stream總線進(jìn)行影像數(shù)據(jù)的傳輸,通過DMA將數(shù)據(jù)在計(jì)算模塊和DDR3之間進(jìn)行數(shù)據(jù)搬運(yùn)。為了保證硬件設(shè)計(jì)的時(shí)鐘約束條件,對(duì)整體的時(shí)鐘采用200 MHz(最大250 MHz)。由于不同模塊的計(jì)算所需的時(shí)鐘周期數(shù)不同,很難進(jìn)行同步輸出,所以將不同模塊生成的數(shù)據(jù)分別通過DMA搬運(yùn)到DMA緩沖區(qū),實(shí)現(xiàn)了多個(gè)模塊的并行計(jì)算。
采用復(fù)用緩存來避免反復(fù)申請(qǐng)內(nèi)存空間的操作。1)對(duì)于輸入圖片的緩沖區(qū),不用多個(gè)緩沖存儲(chǔ)區(qū)域,因?yàn)槲覀兊姆椒▽?shí)現(xiàn)了構(gòu)建ORB單層圖像金字塔的流程,只需要每層流水線開始時(shí)輸入上一層圖像金字塔產(chǎn)生的高斯濾波的結(jié)果。2)對(duì)于從PL端輸出的影像,首先確定一個(gè)能存儲(chǔ)圖像金字塔中尺寸最大一層的圖像尺寸,然后確定3個(gè)尺寸的緩沖區(qū),分別將從FPGA加速器中計(jì)算獲得的FAST-9角點(diǎn)檢測、Harris響應(yīng)值array以及高斯濾波的影像存入到3個(gè)緩沖區(qū)中。由于在ORB中采用的是下采樣,所以接下來的層數(shù)處理中,緩沖區(qū)的大小總能滿足緩沖存儲(chǔ)的需求。圖5展示了軟件功能模塊。
圖5 軟件功能模塊示意Fig.5 Schematic diagram of software function modules
為了保持系統(tǒng)對(duì)不同尺寸的影像都有較好的使用性,采用了靈活的軟件篩選特征點(diǎn),首先對(duì)FAST檢測獲得的影像進(jìn)行遍歷,獲取一個(gè)FAST焦點(diǎn)位置,然后去尋找在Harris array中的響應(yīng)值,這樣減少了訪存操作。將每層多尺度的特征點(diǎn)都獲取到一個(gè)存儲(chǔ)陣列中,由于遙感影像的圖片尺寸都比較大,在多尺度圖像中,每層獲得的特征點(diǎn)數(shù)量巨大,需要進(jìn)行排序篩選出響應(yīng)值最高的特征點(diǎn)。在FPGA中構(gòu)建一個(gè)能夠?qū)U(kuò)展大量數(shù)據(jù)排序的模塊并不合適,占用資源巨大。對(duì)于特征點(diǎn)的排序篩選工作通過軟件功能實(shí)現(xiàn),這樣既具有一定的靈活性,又能夠獲得比較好的系統(tǒng)魯棒性。
試驗(yàn)設(shè)備如圖6所示,采用搭載Xilinx zynq7020 SOC的PYNQ-z2開發(fā)板,zynq7020芯片內(nèi)有雙核arm cortex-A9硬核處理器以及Artix-7 FPGA,擁有512MB的DDR。
圖6 ZYNQ7020 SOC開發(fā)板Fig.6 ZYNQ7020 SOC board
試驗(yàn)開發(fā)板采用SD卡作為啟動(dòng)介質(zhì),電源為mini USB 5.0V,串口通信與供電共用mini USB接口。配準(zhǔn)所用圖片存儲(chǔ)在SD卡中,arm主要作用是實(shí)現(xiàn)軟件以及調(diào)度功能,測試上位機(jī)通過串口發(fā)送指令,配準(zhǔn)試驗(yàn)系統(tǒng)開始工作。試驗(yàn)生成的配準(zhǔn)影像以及其他試驗(yàn)相關(guān)數(shù)據(jù)存儲(chǔ)在SD卡中。
試驗(yàn)PC搭載型號(hào)為Intel i7-10870H的CPU,基準(zhǔn)頻率2.20 GHz,睿頻4.0 GHz。采用OpenCV庫3.4.0版本,微軟的Visual Studio 2019作為軟件開發(fā)環(huán)境。
試驗(yàn)以歐比特公司OVS-1A衛(wèi)星獲取的青島地區(qū)的一塊3 000×3 000像素區(qū)域的灰度圖像作為輸入。使用了不同地區(qū)的圖片作為測試數(shù)據(jù)以檢測加速方法的魯棒性。同時(shí)采用OpenCV3.4.0版本作為PC端測試的軟件試驗(yàn)版本。試驗(yàn)過程中設(shè)定不同的特征點(diǎn)數(shù)量,每幅影像分別選取100、200、500、1 000個(gè)特征點(diǎn),測試加速的ORB算法的時(shí)間消耗,見表1。
表1 不同數(shù)量特征點(diǎn)的耗時(shí)對(duì)比
隨著特征點(diǎn)數(shù)量的增加,配準(zhǔn)所需要的時(shí)間小幅增加,根據(jù)圖7可以看出,采用軟硬件加速和純軟件的ORB配準(zhǔn)具有相同的增長趨勢,其原因是隨著特征點(diǎn)篩選,計(jì)算特征點(diǎn)描述子的計(jì)算量上升,試驗(yàn)中的這兩種情況計(jì)算描述子都采用在ARM上運(yùn)行的程序?qū)崿F(xiàn),以適應(yīng)對(duì)不同數(shù)量特征點(diǎn)選取要求。
圖7 耗時(shí)對(duì)比Fig.7 Time comparison chart
本文設(shè)計(jì)的嵌入式FPGA加速ORB的圖像配準(zhǔn)方法,沒有降低ORB算法的擴(kuò)展性,對(duì)于探測不同數(shù)量特征點(diǎn)的需求,都能夠獲得良好的魯棒性。硬件加速模塊不會(huì)限制特征點(diǎn)數(shù)量,保證了不同影像特征點(diǎn)的數(shù)目都能夠正常工作,如圖8所示是其中一組測試影像。
圖8 復(fù)雜地物的匹配結(jié)果Fig.8 Matching results of complex ground objects
為了驗(yàn)證加速ORB配準(zhǔn)方法具有一定的魯棒性,選取了另外一組遙感影像,做了相同的試驗(yàn),仍然獲得了比較好的匹配效果,如圖9所示。
圖9 簡單地物的匹配結(jié)果Fig.9 Matching results of simple ground objects
經(jīng)過兩組3 000×3 000像素不同地區(qū)的大尺寸遙感影像配準(zhǔn)試驗(yàn),都能夠以相同的配準(zhǔn)耗時(shí)完成遙感影像的配準(zhǔn)。兩組試驗(yàn)影像中的地貌復(fù)雜度差異比較大,該方法都能夠很快完成影像的配準(zhǔn)工作。
為了驗(yàn)證配準(zhǔn)方法的魯棒性,選取了GF-4衛(wèi)星的一組連續(xù)的影像幀測試,圖片的大小為512×512像素,成像質(zhì)量和前兩組比較,圖像清晰度較差,很多位置有比較明顯的鋸齒。經(jīng)過測試,仍然能夠使用該方法配準(zhǔn),如圖10所示。
圖10 GF-4衛(wèi)星上的一組連續(xù)影像(400 keypoints)Fig.10 A series of images from the GF-4 satellite(400 keypoints)
由本節(jié)描述可知,嵌入式FPGA加速的ORB配準(zhǔn)算法能夠進(jìn)行快速配準(zhǔn),并且提供低功耗的嵌入式解決方案,加速后的ORB仍然保持較高的魯棒性和擴(kuò)展性。
分別對(duì)前兩組圖片的輸出精度做配準(zhǔn)精度評(píng)估,對(duì)于精度的測試,以100個(gè)特征點(diǎn)為步長,將100~1 000個(gè)特征點(diǎn)分成10組數(shù)據(jù)。在測試圖片組中采用等步距點(diǎn)測法,對(duì)大量樣本點(diǎn)進(jìn)行比對(duì),測量偏移誤差,主要測試每組圖片的x偏移和y偏移,試驗(yàn)結(jié)果如表2和表3所示。
表2 ZYNQ上前兩組測試圖片的精度測試
將每組圖片使用純軟件實(shí)現(xiàn)的算法進(jìn)行了配準(zhǔn)工作,通過對(duì)比ORB算法純軟件實(shí)現(xiàn)的偏移誤差值,計(jì)算每組數(shù)據(jù)偏移的均方根,如式(7)所示。
(7)
通過統(tǒng)計(jì)不同平臺(tái)的兩組圖片得出圖11結(jié)果。兩種方式實(shí)現(xiàn)的ORB配準(zhǔn)算法中,對(duì)于測試圖片組1,硬件加速后的結(jié)果要比PC上獲得的結(jié)果表現(xiàn)好,更加穩(wěn)定,精度更高。對(duì)于測試圖片組2,硬件加速的結(jié)果有細(xì)微波動(dòng),但是精度表現(xiàn)仍然要比PC上獲得的結(jié)果更好,如圖12所示。
圖11 加速算法和ORB算法的偏移誤差均方根1Fig.11 The root-mean-square deviation error 1 of acceleration algorithm and ORB algorithm
圖12 加速算法和ORB算法的偏移誤差均方根2Fig.12 The root-mean-square deviation error 2 of acceleration algorithm and ORB algorithm
兩種實(shí)現(xiàn)方式進(jìn)行配準(zhǔn)的偏移誤差都逐漸穩(wěn)定到一個(gè)區(qū)間附近,ZYNQ加速后的ORB方法穩(wěn)定在0.01~0.03之間,PC的ORB算法在0.2~0.8之間。根據(jù)第3章算法分析中的描述,在對(duì)上一級(jí)圖像處理過程中進(jìn)行高斯濾波后再構(gòu)建下一層圖像金字塔,同時(shí)替換原始的采用FAST-9粗篩選的特征點(diǎn)。在FAST-9篩選的特征點(diǎn)中直接用Harris響應(yīng)值篩選設(shè)定數(shù)量的特征點(diǎn),這樣獲得的特征點(diǎn)更加精準(zhǔn)。
值得注意的是,ZYNQ加速的ORB方法為了降低冗余計(jì)算量,沒有對(duì)圖像金字塔做冗余的邊緣填充,避免了邊緣填充帶來的特征點(diǎn)坐標(biāo)偏移誤差,這是在ZYNQ上的配準(zhǔn)精度要比PC上的精度有時(shí)要高的原因。
通過選取不同數(shù)量的特征點(diǎn),對(duì)軟件實(shí)現(xiàn)的ORB算法和嵌入式FPGA上實(shí)現(xiàn)的加速算法相比較,本文提出的加速算法對(duì)于前兩組影像精度損失小于0.05個(gè)像元,在特征點(diǎn)數(shù)量增加后,精度損失一直有比較穩(wěn)定的結(jié)果。
第三組圖片不同實(shí)現(xiàn)方式精度測試結(jié)果如表4所示。對(duì)于細(xì)節(jié)模糊、有一些明顯鋸齒的影像,仍然能夠進(jìn)行配準(zhǔn)操作,但是精度表現(xiàn)不如前兩組圖片。
表4 第三組GF-4圖片的不同方法精度測試
如圖13所示,硬件加速的配準(zhǔn)精度能達(dá)到和OpenCV中ORB算法相近的程度,均在選取不同特征點(diǎn)時(shí)達(dá)到小于0.9個(gè)像元的誤差。
圖 13 加速算法和ORB算法的偏移誤差均方根3Fig.13 The root-mean-square deviation error 3 of acceleration algorithm and ORB algorithm
本文提出了一種使用嵌入式FPGA加速改進(jìn)的ORB遙感影像配準(zhǔn)方法。改進(jìn)的ORB算法
利用嵌入式FPGA加速后能夠大幅度提升算法效能,在3 000×3 000像素大小的圖像試驗(yàn)中獲得的圖像耗時(shí)表明:測試耗時(shí)比單純使用ZYNQ7020的嵌入式CPU提升了57.50%以上,前兩組測試圖片的精度與OpenCV相比精度更高了,精度損失低于0.05個(gè)像元,第三組細(xì)節(jié)比較模糊,精度損失仍然能達(dá)到和OpenCV相比擬的精度。嵌入式FPGA加速后的ORB能夠適應(yīng)不同尺寸的圖像,設(shè)計(jì)最大支持兼容3 000×3 000像素的遙感影像使用ORB加速器進(jìn)行圖像的配準(zhǔn)。
本文提出的ORB加速器的設(shè)計(jì)充分考慮到了擴(kuò)展性,硬件模塊充分流水線化,對(duì)于實(shí)際的空間應(yīng)用場景可增設(shè)多條流水線模塊。對(duì)于ORB算法進(jìn)行了適當(dāng)?shù)牟⑿谢瘍?yōu)化,以適應(yīng)在FPGA上設(shè)計(jì)硬件模塊。利用嵌入式FPGA不僅降低了ORB配準(zhǔn)的耗時(shí),而且提供了一種完整嵌入式配準(zhǔn)方案。
目前,已經(jīng)完成總體的ORB單流水線的軟硬件設(shè)計(jì)及測試,后續(xù)將根據(jù)影像配準(zhǔn)的需求,以更豐富資源的嵌入式FPGA為平臺(tái),設(shè)計(jì)多層全流水線ORB加速器,并將其應(yīng)用于衛(wèi)星影像快速配準(zhǔn)。