趙智祎,孫婷,李峰 ,辛蕾,魯嘯天,梁亮
1. 北京信息科技大學 儀器科學與光電工程學院,北京 100192 2. 中國空間技術研究院 錢學森空間技術實驗室,北京 100094 3. 清華大學 電子工程系,北京 100084
隨著航天技術的發展,星載遙感數據和地球影像數據獲取的尺寸更大,內容更加豐富[1],遙感衛星進入“四高”、“亞米級”時代[2]。未來遙感影像在軌處理拼接、衛星視頻的配準等都需要快速處理,但是圖像配準的算法通常計算量非常大[3],在通用計算機上耗時和功耗都比較大,不適合大規模將圖像配準算法加載到星載設備上,通用的嵌入式處理器的計算力較難勝任遙感影像的配準算法,因此,亟待一種高效解決高分辨率衛星圖像配準的方法[4]。
基于地面工作站的遙感影像配準,可以利用大型計算機批量處理遙感影像,但是需要在軌衛星通過緊缺的衛星通信帶寬,將拍攝的影像全部傳輸到地面,缺點顯而易見。基于嵌入式設備的算法通常能夠以降低部分性能和減少部分功能的方式,大幅度減少部署算法平臺的功耗和體積。
近年隨著半導體工藝的日漸成熟,現場可編程邏輯門陣列FPGA的工作頻率得到了大幅提升,片上資源更加豐富。FPGA內部是由查找表、邏輯門陣列、塊RAM等組成的可編程的集成電路結構,能夠做到真正的并行計算[5]。FPGA作為實現精密控制[6]、圖像處理、人工智能等領域算法部署的高效能計算平臺,越來越受到重視。
ORB算法是一種常用的基于特征點的影像配準算法[7],基于特征的遙感影像配準算法也常用在遙感影像的道路提取等問題中[8]。ORB算法是一種快速影像配準算法,但是由于遙感影像的尺寸一般比較大,配準算法需要耗費大量計算資源,星載的通用處理器很難滿足大尺寸遙感影像配準的需求。北京理工大學Fang W等人設計了一種用于ORB-slam的加速方案,可處理影像分辨率達到640×480像素[9]。Weberruss J等人報道了采用PCIe接口加速ORB算法的方法[10]。四川大學尹顏朋等研究了將ORB算法定點化并用于自動駕駛的研究[11]。華中科技大學Xie Zizhao等人通過PCIe接口,設計了一種PC與FPGA共同實現的ORB加速方法[12],這是目前多種ORB加速方法中幀率最高的一種方法。
本文提出了一種靈活的流水線化ORB算法加速方案,能夠降低ORB配準算法的耗時,并保持ORB算法的可擴展性,適用于嵌入式設備。除了流水線化設計以外,為了能夠使影像配準適應不同的設計要求,預留了多流水線的接口設計。
ORB算法是由Rublee等人在2011年提出的[13],其目的是為了代替高計算資源占用的SIFT和SURF等算法。ORB算法能快速生成比較可靠的特征點,常用于快速圖像配準。通常將兩張圖片中的一張作為參考圖片,另一張作為待配準的影像,分別進行ORB算法特征點和描述子的計算,然后通過特征點匹配算法,產生一個變換矩陣H,這是圖像配準的一個重要參數。ORB算法按功能主要分為以下三部分:構建高斯圖像金字塔、FAST角點檢測和BRIEF描述子計算。
(1)構建高斯金字塔
為了解決尺度不變性問題,ORB采用高斯金字塔來解決尺度問題。圖像金字塔的每一層都是由變尺度高斯函數與輸入圖像進行卷積得到的,如式(1)所示:
P(x,y,σ)=G(x,y,σ)*I(x,y)
(1)
式中:*為x和y的卷積運算,輸入圖像為I(x,y)。
為了保證整體匹配精度,采用了8層圖像金字塔。在構造圖像金字塔時,采用了雙線性插值方法的降采樣,設定1.2作為縮放比。圖1為高斯圖像金字塔實例。

圖1 高斯圖像金字塔實例Fig.1 Illustration of Gaussian image pyramid
通常,構建一個圖像金字塔會消耗大量的計算資源和時間。特別是在圖像配準中,每幅圖像都需要建立一個圖像金字塔,但是圖像金字塔的層數可以根據不同的場景和需求進行調整。
(2)oFAST角點檢測
FAST角點是一種快速的角點檢測算法[14],能夠高效快速地檢測角點,但它不具有旋轉不變性。ORB對角點增加了角度信息,稱為oFAST,對于圓上的每個位置,相對于p有三種狀態。FAST檢測的數學表達式為:
Sp→x=
快速檢測以p為中心計算像素周圍像素值之間差值絕對值之和,鄰域范圍如圖2所示。如果和大于閾值,則確定p為特征點。當使用FAST-9(半徑為9像元)時,ORB具有良好的表現。

圖2 FAST角點檢測鄰域Fig.2 FAST detection neighborhood diagram
通過FAST-9角點算法得到一定數量的N個角點。由于FAST-9對邊緣過于敏感,不能完全依賴于FAST來過濾所有的特征點。因此,將FAST-9角點篩選出來的N個角點,通過Harris角點響應值計算得到一些最佳的特征點。
FAST-9角點不具有尺度不變性,ORB在每層圖像金字塔上進行FAST-9角點檢測,找出粗篩選的部分角點。為了解決FAST-9角點檢測容易受到噪聲影響的問題,同時為了獲得更準確的角點,需要計算粗篩選出來的角點的Harris響應值。
ORB為了解決FAST-9角點檢測不具有旋轉不變性的問題,采用灰度質心法計算特征點的角度,其計算方式如式(2)(3)(4)所示。

(2)
質心位置坐標C由式(3)確定:

(3)
可以通過C的位置,構建一個由O指向質心C的向量,向量的角度θ可以由式(4)計算:
θ=atan2(m01,m10)
(4)
這里的atan2是具有象限感知的arctan函數。
(3)rBRIEF特征點計算
ORB采用了改進的BRIEF作為描述子,BRIEF是一組二進制字符串組成的描述子,BRIEF描述子由一組二進制強度測試構造的圖像補丁的位串描述。定義一個平滑圖像的影像塊p的二進制τ比較操作如式(5)所示:

(5)
那么p在一個點x處的強度為p(x)。這個特征就可以定義為一個n維的二進制向量組fn(p),如式(6)所示:

(6)
在ORB算法中通常將向量的維數n選擇為256。描述子計算前的圖像平滑非常重要,ORB算法是在進行高斯濾波以后,在濾波后的圖像上計算描述子。
僅使用原始的BRIEF描述子,通常在應對旋轉圖像方面的表現不好,ORB算法采用了加強版的BRIEF描述子,稱為rBRIEF,是通過特征點的角度計算得到的。對于任一n維二進制的特征,在點(xi,yi)的領域內,定義一個2×n的矩陣S:
使用鄰域塊的角度θ和旋轉一致性矩陣Rθ,構建一個Sθ作為改進后的S:
Sθ=RθS
最后,ORB的描述子的計算操作就可以定義為:
gn(p,θ):=fn(p)|(xi,yi)∈Sθ
在ORB算法中通過一個預先構建的查找表加快了描述子計算。
ORB算法可配置特征點數量、特征點檢測閾值以及圖像金字塔層數等參數。ORB要比SIFT和SURF等圖像配準算法快,而且更適合并行計算。基于ORB論證試驗,ORB描述子的計算要比SURF描述子快92.9%,比SIFT描述子快99.7%,所以對于需要特征點多的場景,ORB在速度上具有更強的優勢。
作為一種快速、低復雜度的圖像配準算法,ORB算法被用在很多需要考慮整體算法效率的場景,比如影像配準、目標檢測等領域中。同時ORB高效的計算效率對于需要實時處理影像特征點匹配的應用場景,如同步定位與建圖SLAM[15]、速度估計[16]、視覺測距[17]、圖像拼接[18]等,計算效能有很大提升。
原始的ORB算法適合在通用CPU上進行計算,為了保證ORB在FPGA上能夠流水線化處理,本文對每層金字塔將FAST-9角點檢測算法、Harris響應值計算和Gaussian濾波模塊均以上一層金字塔的高斯濾波進行下采樣作為輸入。
ORB算法在構建高斯圖像金字塔時,將上一級金字塔的下采樣圖像,作為構建下一級金字塔的輸入,不利于硬件結構的設計。為了保證硬件結構的時序收斂,本文將上一層圖像金字塔的高斯濾波作為構建下一層圖像金字塔的輸入。
加速方案在圖像金字塔構建過程中,每層的輸入影像都以上一層的高斯濾波結果作為輸入,這樣每層流水線都不需要在中途將數據寫入到DDR,而是直接進入下一模塊進行計算,將圖像金字塔的每一層流水線作為一個加速整體實現,靈活實現多模塊之間的數據流水線。
ORB中先使用FAST分數作為初步篩選條件,待選的特征點都計算其對應的Harris響應值,作為最終選擇特征點的篩選條件。將FAST角點檢測和Harris響應值計算在FPGA中同步進行,不同的是Harris響應值是對整幅圖像進行計算。通過FAST角點檢測的結果在Harris響應值序列中確定排序分數。通過分析,這樣的改動會讓整體配準算法的精度更高,因為Harris響應值選出的特征點集要比FAST-9更加精準,見7.3節。
采用軟硬件結合的方式實現嵌入式ORB算法的加速器設計,ZYNQ7020片上系統提供了雙核ARM-A9嵌入式CPU硬核,以及Artix-7可編程邏輯門陣列單元,能夠滿足功能設計的硬件要求。圖3展示了ORB的嵌入式FPGA加速器的整體架構。

圖3 本文設計的ORB加速器總體架構Fig.3 The proposed architecture diagram of ORB accelerator
圖像的解析由軟件實現,方便不同數據結構的圖像數據使用ORB加速器[19]。根據ZYNQ系列片上系統芯片的配置方式,ORB加速器的圖片相關參數由軟件在解析圖片后進行軟配置。
FAST-9算法、Harris響應值和高斯濾波需要對整幅影像進行計算,他們的計算特點是可以流水線化,都是鄰域相關的計算,適合采用FPGA,對此采用了FPGA增加吞吐率。
特征點的選擇需要在全局范圍內排序篩選,采用軟件實現,保證了特征點選擇是基于全局最優的選擇。特征描述子的計算量與特征點的數量有關,為了保證靈活性,采用軟件實現ORB描述子的計算。
通過分析ORB算法結構,發現構建圖像金字塔也是導致ORB算法的速度不能進一步獲得提升的瓶頸。將每層圖像金字塔的構建過程都使用FPGA進行加速設計,硬件設計遵循靈活性的原則。為了方便靈活選擇進行加速處理的金字塔層數,將ORB中每一層金字塔處理的任務流水線化,圖4展示了硬件的架構。

圖4 硬件結構原理Fig.4 Schematic diagram of hardware structure
首先通過連接Resize模塊的DMA,將數據從DDR3中搬運至PL端,Resize模塊主要根據所處的圖像金字塔層數,使用雙線性插值法對輸入的圖像進行下采樣。當Resize模塊對圖像數據使用流水線的方式輸出數據時,經過信號分發模塊將數據信號復制,然后將三路并行信號分別接入到FAST-9模塊、Harris模塊和Gaussian濾波模塊。FAST-9和Harris模塊主要用于特征點檢測,Gaussian濾波模塊用于ORB描述子的計算以及下一級圖像金字塔的構建。
設計的模塊之間都采用AXI-Stream總線進行影像數據的傳輸,通過DMA將數據在計算模塊和DDR3之間進行數據搬運。為了保證硬件設計的時鐘約束條件,對整體的時鐘采用200 MHz(最大250 MHz)。由于不同模塊的計算所需的時鐘周期數不同,很難進行同步輸出,所以將不同模塊生成的數據分別通過DMA搬運到DMA緩沖區,實現了多個模塊的并行計算。
采用復用緩存來避免反復申請內存空間的操作。1)對于輸入圖片的緩沖區,不用多個緩沖存儲區域,因為我們的方法實現了構建ORB單層圖像金字塔的流程,只需要每層流水線開始時輸入上一層圖像金字塔產生的高斯濾波的結果。2)對于從PL端輸出的影像,首先確定一個能存儲圖像金字塔中尺寸最大一層的圖像尺寸,然后確定3個尺寸的緩沖區,分別將從FPGA加速器中計算獲得的FAST-9角點檢測、Harris響應值array以及高斯濾波的影像存入到3個緩沖區中。由于在ORB中采用的是下采樣,所以接下來的層數處理中,緩沖區的大小總能滿足緩沖存儲的需求。圖5展示了軟件功能模塊。

圖5 軟件功能模塊示意Fig.5 Schematic diagram of software function modules
為了保持系統對不同尺寸的影像都有較好的使用性,采用了靈活的軟件篩選特征點,首先對FAST檢測獲得的影像進行遍歷,獲取一個FAST焦點位置,然后去尋找在Harris array中的響應值,這樣減少了訪存操作。將每層多尺度的特征點都獲取到一個存儲陣列中,由于遙感影像的圖片尺寸都比較大,在多尺度圖像中,每層獲得的特征點數量巨大,需要進行排序篩選出響應值最高的特征點。在FPGA中構建一個能夠對擴展大量數據排序的模塊并不合適,占用資源巨大。對于特征點的排序篩選工作通過軟件功能實現,這樣既具有一定的靈活性,又能夠獲得比較好的系統魯棒性。
試驗設備如圖6所示,采用搭載Xilinx zynq7020 SOC的PYNQ-z2開發板,zynq7020芯片內有雙核arm cortex-A9硬核處理器以及Artix-7 FPGA,擁有512MB的DDR。

圖6 ZYNQ7020 SOC開發板Fig.6 ZYNQ7020 SOC board
試驗開發板采用SD卡作為啟動介質,電源為mini USB 5.0V,串口通信與供電共用mini USB接口。配準所用圖片存儲在SD卡中,arm主要作用是實現軟件以及調度功能,測試上位機通過串口發送指令,配準試驗系統開始工作。試驗生成的配準影像以及其他試驗相關數據存儲在SD卡中。
試驗PC搭載型號為Intel i7-10870H的CPU,基準頻率2.20 GHz,睿頻4.0 GHz。采用OpenCV庫3.4.0版本,微軟的Visual Studio 2019作為軟件開發環境。
試驗以歐比特公司OVS-1A衛星獲取的青島地區的一塊3 000×3 000像素區域的灰度圖像作為輸入。使用了不同地區的圖片作為測試數據以檢測加速方法的魯棒性。同時采用OpenCV3.4.0版本作為PC端測試的軟件試驗版本。試驗過程中設定不同的特征點數量,每幅影像分別選取100、200、500、1 000個特征點,測試加速的ORB算法的時間消耗,見表1。

表1 不同數量特征點的耗時對比
隨著特征點數量的增加,配準所需要的時間小幅增加,根據圖7可以看出,采用軟硬件加速和純軟件的ORB配準具有相同的增長趨勢,其原因是隨著特征點篩選,計算特征點描述子的計算量上升,試驗中的這兩種情況計算描述子都采用在ARM上運行的程序實現,以適應對不同數量特征點選取要求。

圖7 耗時對比Fig.7 Time comparison chart
本文設計的嵌入式FPGA加速ORB的圖像配準方法,沒有降低ORB算法的擴展性,對于探測不同數量特征點的需求,都能夠獲得良好的魯棒性。硬件加速模塊不會限制特征點數量,保證了不同影像特征點的數目都能夠正常工作,如圖8所示是其中一組測試影像。


圖8 復雜地物的匹配結果Fig.8 Matching results of complex ground objects
為了驗證加速ORB配準方法具有一定的魯棒性,選取了另外一組遙感影像,做了相同的試驗,仍然獲得了比較好的匹配效果,如圖9所示。


圖9 簡單地物的匹配結果Fig.9 Matching results of simple ground objects
經過兩組3 000×3 000像素不同地區的大尺寸遙感影像配準試驗,都能夠以相同的配準耗時完成遙感影像的配準。兩組試驗影像中的地貌復雜度差異比較大,該方法都能夠很快完成影像的配準工作。
為了驗證配準方法的魯棒性,選取了GF-4衛星的一組連續的影像幀測試,圖片的大小為512×512像素,成像質量和前兩組比較,圖像清晰度較差,很多位置有比較明顯的鋸齒。經過測試,仍然能夠使用該方法配準,如圖10所示。

圖10 GF-4衛星上的一組連續影像(400 keypoints)Fig.10 A series of images from the GF-4 satellite(400 keypoints)
由本節描述可知,嵌入式FPGA加速的ORB配準算法能夠進行快速配準,并且提供低功耗的嵌入式解決方案,加速后的ORB仍然保持較高的魯棒性和擴展性。
分別對前兩組圖片的輸出精度做配準精度評估,對于精度的測試,以100個特征點為步長,將100~1 000個特征點分成10組數據。在測試圖片組中采用等步距點測法,對大量樣本點進行比對,測量偏移誤差,主要測試每組圖片的x偏移和y偏移,試驗結果如表2和表3所示。

表2 ZYNQ上前兩組測試圖片的精度測試
將每組圖片使用純軟件實現的算法進行了配準工作,通過對比ORB算法純軟件實現的偏移誤差值,計算每組數據偏移的均方根,如式(7)所示。

(7)
通過統計不同平臺的兩組圖片得出圖11結果。兩種方式實現的ORB配準算法中,對于測試圖片組1,硬件加速后的結果要比PC上獲得的結果表現好,更加穩定,精度更高。對于測試圖片組2,硬件加速的結果有細微波動,但是精度表現仍然要比PC上獲得的結果更好,如圖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
兩種實現方式進行配準的偏移誤差都逐漸穩定到一個區間附近,ZYNQ加速后的ORB方法穩定在0.01~0.03之間,PC的ORB算法在0.2~0.8之間。根據第3章算法分析中的描述,在對上一級圖像處理過程中進行高斯濾波后再構建下一層圖像金字塔,同時替換原始的采用FAST-9粗篩選的特征點。在FAST-9篩選的特征點中直接用Harris響應值篩選設定數量的特征點,這樣獲得的特征點更加精準。
值得注意的是,ZYNQ加速的ORB方法為了降低冗余計算量,沒有對圖像金字塔做冗余的邊緣填充,避免了邊緣填充帶來的特征點坐標偏移誤差,這是在ZYNQ上的配準精度要比PC上的精度有時要高的原因。
通過選取不同數量的特征點,對軟件實現的ORB算法和嵌入式FPGA上實現的加速算法相比較,本文提出的加速算法對于前兩組影像精度損失小于0.05個像元,在特征點數量增加后,精度損失一直有比較穩定的結果。
第三組圖片不同實現方式精度測試結果如表4所示。對于細節模糊、有一些明顯鋸齒的影像,仍然能夠進行配準操作,但是精度表現不如前兩組圖片。

表4 第三組GF-4圖片的不同方法精度測試
如圖13所示,硬件加速的配準精度能達到和OpenCV中ORB算法相近的程度,均在選取不同特征點時達到小于0.9個像元的誤差。

圖 13 加速算法和ORB算法的偏移誤差均方根3Fig.13 The root-mean-square deviation error 3 of acceleration algorithm and ORB algorithm
本文提出了一種使用嵌入式FPGA加速改進的ORB遙感影像配準方法。改進的ORB算法
利用嵌入式FPGA加速后能夠大幅度提升算法效能,在3 000×3 000像素大小的圖像試驗中獲得的圖像耗時表明:測試耗時比單純使用ZYNQ7020的嵌入式CPU提升了57.50%以上,前兩組測試圖片的精度與OpenCV相比精度更高了,精度損失低于0.05個像元,第三組細節比較模糊,精度損失仍然能達到和OpenCV相比擬的精度。嵌入式FPGA加速后的ORB能夠適應不同尺寸的圖像,設計最大支持兼容3 000×3 000像素的遙感影像使用ORB加速器進行圖像的配準。
本文提出的ORB加速器的設計充分考慮到了擴展性,硬件模塊充分流水線化,對于實際的空間應用場景可增設多條流水線模塊。對于ORB算法進行了適當的并行化優化,以適應在FPGA上設計硬件模塊。利用嵌入式FPGA不僅降低了ORB配準的耗時,而且提供了一種完整嵌入式配準方案。
目前,已經完成總體的ORB單流水線的軟硬件設計及測試,后續將根據影像配準的需求,以更豐富資源的嵌入式FPGA為平臺,設計多層全流水線ORB加速器,并將其應用于衛星影像快速配準。