APP下载

基于嵌入式FPGA加速ORB算法的遥感影像配准方法

2021-10-26赵智祎孙婷李峰辛蕾鲁啸天梁亮

中国空间科学技术 2021年5期
关键词:金字塔嵌入式精度

赵智祎,孙婷,李峰 ,辛蕾,鲁啸天,梁亮

1. 北京信息科技大学 仪器科学与光电工程学院,北京 100192 2. 中国空间技术研究院 钱学森空间技术实验室,北京 100094 3. 清华大学 电子工程系,北京 100084

1 引言

随着航天技术的发展,星载遥感数据和地球影像数据获取的尺寸更大,内容更加丰富[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算法的可扩展性,适用于嵌入式设备。除了流水线化设计以外,为了能够使影像配准适应不同的设计要求,预留了多流水线的接口设计。

2 ORB算法简介

2.1 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算法中通过一个预先构建的查找表加快了描述子计算。

2.2 ORB算法的优势和应用

ORB算法可配置特征点数量、特征点检测阈值以及图像金字塔层数等参数。ORB要比SIFT和SURF等图像配准算法快,而且更适合并行计算。基于ORB论证试验,ORB描述子的计算要比SURF描述子快92.9%,比SIFT描述子快99.7%,所以对于需要特征点多的场景,ORB在速度上具有更强的优势。

作为一种快速、低复杂度的图像配准算法,ORB算法被用在很多需要考虑整体算法效率的场景,比如影像配准、目标检测等领域中。同时ORB高效的计算效率对于需要实时处理影像特征点匹配的应用场景,如同步定位与建图SLAM[15]、速度估计[16]、视觉测距[17]、图像拼接[18]等,计算效能有很大提升。

3 ORB算法改进结构

原始的ORB算法适合在通用CPU上进行计算,为了保证ORB在FPGA上能够流水线化处理,本文对每层金字塔将FAST-9角点检测算法、Harris响应值计算和Gaussian滤波模块均以上一层金字塔的高斯滤波进行下采样作为输入。

ORB算法在构建高斯图像金字塔时,将上一级金字塔的下采样图像,作为构建下一级金字塔的输入,不利于硬件结构的设计。为了保证硬件结构的时序收敛,本文将上一层图像金字塔的高斯滤波作为构建下一层图像金字塔的输入。

加速方案在图像金字塔构建过程中,每层的输入影像都以上一层的高斯滤波结果作为输入,这样每层流水线都不需要在中途将数据写入到DDR,而是直接进入下一模块进行计算,将图像金字塔的每一层流水线作为一个加速整体实现,灵活实现多模块之间的数据流水线。

ORB中先使用FAST分数作为初步筛选条件,待选的特征点都计算其对应的Harris响应值,作为最终选择特征点的筛选条件。将FAST角点检测和Harris响应值计算在FPGA中同步进行,不同的是Harris响应值是对整幅图像进行计算。通过FAST角点检测的结果在Harris响应值序列中确定排序分数。通过分析,这样的改动会让整体配准算法的精度更高,因为Harris响应值选出的特征点集要比FAST-9更加精准,见7.3节。

4 嵌入式ORB加速方案的任务分配

采用软硬件结合的方式实现嵌入式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描述子的计算。

5 嵌入式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缓冲区,实现了多个模块的并行计算。

6 嵌入式ORB的软件策略

采用复用缓存来避免反复申请内存空间的操作。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中构建一个能够对扩展大量数据排序的模块并不合适,占用资源巨大。对于特征点的排序筛选工作通过软件功能实现,这样既具有一定的灵活性,又能够获得比较好的系统鲁棒性。

7 试验结果分析

7.1 试验设备

试验设备如图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作为软件开发环境。

7.2 使用加速器的图像配准试验

试验以欧比特公司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仍然保持较高的鲁棒性和扩展性。

7.3 精度评估

分别对前两组图片的输出精度做配准精度评估,对于精度的测试,以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

8 结论

本文提出了一种使用嵌入式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加速器,并将其应用于卫星影像快速配准。

猜你喜欢

金字塔嵌入式精度
基于不同快速星历的GAMIT解算精度分析
数字化无模铸造五轴精密成形机精度检验项目分析与研究
“金字塔”
基于IMX6ULL的嵌入式根文件系统构建
Great Vacation Places
近似边界精度信息熵的属性约简
金字塔是用金子造的吗
高校图书馆开展嵌入式信息素质教育的思考
浅谈ProENGINEER精度设置及应用
嵌入式组件技术的研究及应用