GPU支持的宽幅遥感影像RPC校正并行处理
2021-08-11熊恒斌文义红
刘 宇,熊恒斌,文义红,高 峰,付 伟
(1.中国电子科技集团公司航天信息应用技术重点实验室,河北 石家庄050081;2.中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
0 引言
卫星传感器严格几何成像模型构建了遥感影像像素坐标和大地坐标间的几何关系,是遥感影像进行几何定位最基础的模型[1]。但通常情况下,卫星厂家不会将卫星的内外方位元素公布,而是采用与传感器几何无关的非严格数学RPC(Rational Polynomial Coefficients)模型用于遥感影像的几何定位[2]。RPC模型的精度与严格几何成像模型相当[3],目前是主流的遥感影像几何卫星模型。
许多研究人员提出了高分辨率遥感影像的RPC校正方法[4],并对其精度和效率进行了评价[5]。当面临对遥感影像的快速处理需求时,需要缩短遥感影像处理的各个环节处理时间。考虑到RPC校正过程需要逐像素进行坐标反算和重采样步骤,且宽幅遥感影像的像素数量非常多,可以利用GPU强大的并行计算能力实现影像的RPC校正。目前已有许多研究人员将GPU的强大计算能力用到遥感影像计算领域,如Li等[6-7]基于CUDA运算平台,实现了对高光谱数据在不同模型上的高性能并行计算;杨靖宇[8]在GPU上实现了多种典型遥感图像处理算法,如监督分类、卷积运算、离散小波变换等;许雪贵和张清[9]对CUDA并行对遥感图像处理中常用的快速傅里叶变换、边缘检测和模板匹配3种方法的效率提升进行了分析;肖汉和张祖勋[10]在GPU上实现了遥感影像的快速匹配;杨景辉等[11]使用GPU完成了SAR影像的RPC校正,并和CPU下的处理效率进行了对比。上述研究中对运行效率的对比集中在GPU运算与逐像素运算,这种对比方式仅体现了GPU并行相较于逐像素运算的优势,而忽视了实际工程应用中CPU下的RPC校正并非单线程逐像素运算,因此不能反应真实的CPU下RPC校正效率。
本文首先介绍了遥感影像RPC校正的原理,并设计了使用GPU(NVIDIA TITAN RTX)实现宽幅遥感影像的RPC校正并行处理方案;重点比较了GPU在不同影像分块策略下相较于CPU进行RPC校正的计算效率和整体效率加速比,分析了GPU与CPU间的数据交换对RPC校正的计算效率影响情况,为实际工程应用提供有效数据支撑。
1 RPC校正实现原理
1.1 RPC模型
RPC模型用来替代以共线方程为基础的传感器严格几何成像模型[2];其将地面点大地坐标D(P,L,H)与对应的像点坐标d(X,Y)用比值多项式关联起来[12]。对于一个影像,其像素坐标和地理坐标有如下关系:
(1)
式中,分子分母项的计算方式如下:
(2)
式中,ai,bi,ci,di为RPC参数。对于高分系列卫星遥感影像而言,标准产品的压缩包中分别包含了多光谱数据和全色数据的影像数据文件及其RPB文件(高分系列卫星的RPC参数文件)。
1.2 RPC校正方法
以高分系列卫星为例,影像数据文件不包含地理坐标信息,RPC校正将原始遥感影像投影至指定参考系,其校正步骤如下:
(1)遍历原始遥感影像的边界像素,利用RPC模型的反算公式计算变换后影像的地理范围;
(2)再利用输出地理范围和分辨率确定输出影像的像素尺寸,并创建相应的影像文件;
(3)遍历输出影像的像素,利用RPC正算公式将输出像素的地理坐标转换至原始影像的像素坐标;
(4)根据(3)转换得到的像素坐标,重采样原始影像像素值获取输出影像的像素值,本文采用简单的最近邻采样方法。
2 RPC校正的并行处理方法
遥感影像RPC校正过程中,步骤(4)确定输出像素的DN值计算量较大,且对于每个像素而言,计算步骤完全一致,适合使用GPU并行处理,提高计算效率。本文使用NVIDIA统一计算架构CUDA[13],使用GPU完成影像RPC校正计算过程,计算机主机完成数据IO以及与GPU间的数据传输。整体处理流程如图1所示。
图1 GPU支持下RPC校正流程Fig.1 Flowchart of RPC geometric correction with GPU
将输出影像分块,计算每块影像对应的原始影像范围,将输出影像块和原始影像块交换至GPU;GPU启动kernel函数,遍历输出影像像素,并为每个像素分配GPU线程,每个线程完成地理坐标转换和图像重采样工作,实现GPU并行运算,然后将数据交换至计算机内存并存储到硬盘文件。
3 计算平台和实验
3.1 计算平台性能
计算平台包括计算机主机和GPU,其配置如表1和表2所示。
表1 计算平台配置Tab.1 Configuration of computing platform
表2 显卡性能Tab.2 Performance of GPU
3.2 实验数据
本实验使用标准的高分二号遥感影像进行测试,包括多光谱MSS数据和全色波段PAN数据。MSS数据自带RPB文件(内含RPC参数),共包含四个通道,每个通道尺寸为7 300 pixel×6 908 pixel,数据类型为16 bit整型,文件大小为384 MB,数据原始空间分辨率为0.000 36°×0.000 29°;影像对应区域高程按照该地区平均高程。RPC校正后输出图像尺寸为8 639 pixel×8 162 pixel,文件大小为538 MB。
PAN数据自带RPB文件,仅包含一个通道,图像尺寸为29 200 pixel×27 920 pixel,数据类型为16 bit整型,文件大小为1.5 GB,数据原始空间分辨率为0.000 009°×0.000 007°。RPC校正后输出图像尺寸为34 553 pixel×32 664 pixel,文件大小为2.1 GB。
MSS、PAN影像及对应的RPC校正结果如图2所示。
(a)MSS原始影像
3.3 实验结果与对比分析
为测试不同分块情况下对并行效率的影响,该实验每次将不同块大小的数据交换至GPU,并记录运算时间和整体时间。由于MSS影像和PAN影像尺寸差异较大,故实验的分块大小不尽相同。本文同时考虑了GPU支持下的运算效率和整体效率,并与CPU下的运算效率和整体效率进行对比,为发挥计算机的全部性能,CPU进行RPC校正时不做分块处理。
3.3.1 不同分块尺寸下的GPU并行运算效率
本文记录了RPC校正过程中GPU并行处理和CPU串行处理时的运算时间,其中,CPU串行处理仅使用单个处理核心。对于CPU处理而言,RPC校正流程按照1.2节实现,原始遥感影像不做分块处理,运算时间TC仅包含将遥感影像读入内存后的RPC校正函数运算时间,不包括从硬盘中读取文件以及将结果数据存入硬盘文件的时间;对于GPU并行处理而言,运算时间TG包括将数据分块后,每块数据从内存交换至GPU、GPU完成RPC校正以及GPU将数据交换至内存的时间总和。定义运算效率加速比为RGC,表达式如下:
(3)
不分块情况下,CPU进行MSS影像RPC校正的运算时间为8.007 s,CPU进行PAN影像RPC校正的运算时间为80.621 s。不同分块策略下,GPU进行MSS、PAN影像的RPC校正效率如表 3所示。随着分块大小的增加,对MSS影像而言,GPU运算时间不断缩短,当分块大小为10 000 pixel×8 639 pixel时,运算效率最高,当分块大小超过10 000 pixel×8 639 pixel时,运算效率又逐渐下降;而对PAN影像而言,GPU运算时间随着分块增加而不断缩短,当分块大小为17 500 pixel×34 553 pixel时,运算效率最高,当分块大小超过17 500 pixel×34 553 pixel时,运算效率又逐渐下降。由于PAN影像的宽、高均是MSS影像的4倍左右,但MSS影像的波段数量是PAN影像的4倍,故在同一分块策略下,PAN影像运算时间耗时大致是MSS影像运算时间的4倍左右。
表3 不同分块策略下的GPU运算耗时Tab.3 GPU computing time under different blocking strategies
不同分块策略下的运算效率加速比图 3所示,其中MSS影像每行8 639个像元,PAN影像每行34 553个像元。MSS影像在分块尺寸为10 000行(对应分块大小为10 000 pixel×8 639 pixel)时加速比最高,为4.26;不同分块策略下,MSS影像运算效率加速比范围为3.0~4.26,平均值为3.71。PAN影像在分块尺寸为17 500行(对应分块大小为17 500 pixel×34 553 pixel)时加速比最高,为9.93;不同分块策略下,PAN影像运算效率加速比范围为6.79~9.93,平均值为8.27。PAN影像运算效率加速比是MSS影像运算效率加速比的2倍以上,说明当影像所需计算量越大,则GPU加速运算的效果更加明显。
图3 不同分块策略下GPU支持的RPC校正运算效率加速比Fig.3 Acceleration ratio of RPC efficiency under different blocking strategies with GPU
3.3.2 不同分块尺寸的遥感影像RPC校正整体效率
除考虑运算效率外,还需要考虑GPU对RPC校正的整体效率影响。整体效率指从硬盘文件中读取数据,然后进行RPC校正,最后将校正完的结果输出到硬盘文件的全过程耗时。定义整体效率加速比RT,表达式如下:
(4)
式中,TGT为GPU支持下遥感影像RPC校正整体耗时;TCT为CPU支持下遥感影像RPC校正整体耗时。
不分块情况下,使用CPU进行MSS影像和PAN影像的RPC校正整体耗时分别为13.876 ,87.663 s。使用GPU并行进行MSS影像RPC校正时,根据表4可知,分块大小为10 000 pixel×8 639 pixel时,RPC校正的整体效率最高;结合表 3可知,硬盘读写(从硬盘读取数据到内存,然后将校正结果数据从内存写到硬盘文件)耗时达到6~7 s,远长于运算时间。而使用GPU并行进行PAN影像RPC校正时,分块大小为17 500 pixel×34 553 pixel时,RPC校正的整体效率最高,硬盘读写耗时为7~8 s,略短于运算时间。由于硬盘读写耗时较长,GPU加速PAN影像RPC校正的整体效率仅为MSS影像RPC校正的2倍左右。
表4 不同分块策略下的GPU整体耗时Tab.4 Overall time consumption of GPU under different blocking strategies
由于MSS影像RPC校正过程中硬盘读写时间占用比例较高,故整体效率加速比较低,仅为1.3~1.72,平均值为1.59,相较于运算效率加速比明显下降。PAN影像校正过程中硬盘读写占用比例较低,但整体效率加速比比相较于运算效率加速比依然有所降低,为4.7~5.7,平均值为5.07,如图4所示。影像需要的运算量越大,则整体效率加速比越大。
图4 不同分块策略下GPU支持的RPC校正整体效率加速比Fig.4 Acceleration ratio of RPC overall efficiency under different blocking strategies with GPU
3.4 讨论
影像数据量较大时,使用GPU并行加速图像运算效率是一种切实可行的方法[14-15]。当影像所需要的运算量越大,则GPU并行效率加速比更高。本文针对高分二号MSS影像和PAN影像分别进行了RPC校正并行实验,运算效率加速比分别达到了3.71与8.27。其原因是GPU能够为每个像素的计算过程分配一个线程,充分利用了GPU的图像计算性能,相较于CPU极大地提高并行线程数量。
GPU并行计算能够极大地减少运算时间,但增加了内存和GPU之间的数据交换过程,整体上对于影像的运算效率有提升。另一方面,GPU并行不能减少文件的读写时间,故整体效率加速比的提升并未达到运算效率加速比的倍数,考虑到MSS影像RPC校正过程中文件读写的耗时远超过计算耗时,所以在GPU和CPU下的RPC校正整体效率差异不大。为尽可能减少文件读写耗时,建议在运算过程中,尽量增加分块尺寸,减小分块数量,尽可能保证文件的连续读写[11]。
为保证GPU的并行运算,分块进行RPC校正实验时,每一块数据的尺寸是相同的,总运算时间取决于对输出图像的分块策略;当分块策略正好将输出图像平均分块时,无效运算量最少,而当分块结果超出输出图像行数过多时,无效运算量较多,故表 3中MSS影像在分块策略4的情况下运算效率最高,PAN影像在分块策略6的情况下运算效率最高。
4 结束语
本文设计了GPU下的RPC校正方案,实现了GPU并行加速下的大幅面遥感影像RPC校正。本方案分块将遥感影像数据交换至GPU,并对每个像素分配线程,充分发挥GPU强大的计算能力。实验结果表明,GPU并行计算可以使高分二号MSS影像RPC校正过程的运算效率加速比达到3.71,整体效率加速比为1.59,PAN影像RPC校正过程的运算效率加速比达到8.27,整体效率加速比为5.07。由实验结果可得到以下结论:① 遥感影像的像素数量越多,则RPC校正GPU并行的加速比越高;② 考虑到高分二号MSS影像RPC校正过程中文件读写的时间远超出计算时间,实际的RPC校正在GPU和CPU下耗时差异不大;③ GPU与内存间的数据交换也会消耗资源,所以尽可能减少GPU与内存间的数据交换次数,可一定程度上提高效率;④ 分块策略应遵循分块行数总和接近影像行数的原则,减少GPU无效运算的原则,提高RPC校正整体效率。