一种基于GPU并行计算的无人机影像快速镶嵌方法
李朋龙1,2, 丁忆1,2, 胡艳1,2, 罗鼎1,2, 段松江1,2, 舒文强1,2
1.重庆市地理信息中心,重庆 401121
2.重庆市遥感中心,重庆 401121

第一作者: 李朋龙(1991-),男,硕士,工程师,主要从事摄影测量与遥感、GPU高性能计算等方面的研究。Email: penglongli@whu.edu.cn

摘要

提出了一种从匀光后无人机影像出发,以Voronoi图为镶嵌线网络,基于GPU并行计算的无人机影像快速镶嵌方法。首先,通过Wallis滤波处理影像间色彩不一致问题; 然后,以测区影像位置自动生成Voronoi图镶嵌线网络; 最后,基于GPU并行计算将无人机影像快速正射纠正并镶嵌。通过对230张空间分辨率为0.1 m的无人机影像进行快速纠正镶嵌,实验结果表明,该方法较传统方法效率有很大提升。

关键词: 影像匀光; 无人机影像; 正射纠正; 影像镶嵌; GPU并行计算
中图分类号:P231 文献标志码:A 文章编号:1001-070X(2017)04-0057-07
A method for rapid UAV images mosaicking based on GPU parallel computing
LI Penglong1,2, DING Yi1,2, HU Yan1,2, LUO Ding1,2, DUAN Songjiang1,2, SHU Wenqiang1,2
1. Chongqing Geographic Information Center, Chongqing 401121, China
2. Chongqing Remote Sensing Center, Chongqing 401121, China
Abstract

A method for rapid mosaicking UAV images is introduced, which is based on Voronoi network and GPU parallel computing. Firstly, the radiometric difference between the images is solved by Wallis dodging. Then the seamline network based on Voronoi diagram is created by the locations of all UAV images. At last, the UAV images are ortho-rectified and mosaicked rapidly based on the GPU parallel computing. Experimental results indicate that the method’s efficiency has increased by several times compared with the traditional methods by mosaicking 230 UAV images whose resolution is 0.1 meter. The mere rectification of the valid area of every UAV image and the application of GPU parallel computing not only avoid the huge data redundancy but also greatly reduces the computation time.

Keyword: image dodging; UAV images; ortho-rectification; image mosaicking; GPU parallel computing
0 引言

无人机等低空遥感系统以其机动性强、获取影像空间分辨率高、硬件价格低廉及维护成本低等优势, 在应急测绘等领域中扮演着重要的角色[1]。无人机影像具有空间分辨率高、框幅小、重叠度高等特点, 在利用大序列无人机影像来制作测区数字正射影像(digital orthophoto map, DOM)时, 如果依旧按照传统先正射纠正再镶嵌的作业模式, 将会产生巨大的数据冗余和时间开销。正射影像镶嵌是DOM制作中最为重要的一环, 而镶嵌线的选择更是影像镶嵌中的重中之重, 镶嵌线的优劣直接影响DOM的质量。因此国内外学者在镶嵌线的选择上做了大量的研究, Kerschner[2] 利用twin snakes 算子在2张正射影像之间选择镶嵌线, 并在林区取得较好效果; Davis[3]利用Dijkstra算法在重叠区域构成的差异影像上寻找最优镶嵌线; Chon等[4]和袁修孝等[5]改进了Dijkstra算法抑制了局部最大灰度, 并提高了镶嵌线的搜索效率。以上方法在两两镶嵌中成功选择了绕过建筑物的镶嵌线, 但算法复杂度较高, 很难实现测区整个镶嵌线网络的自动选择, 同时也没有考虑到中心投影投影差从影像中心向四周逐步增大的特点。潘俊等[6]提出了顾及重叠面Voronoi图镶嵌线网络, 避免了影像重叠度低时镶嵌结果不完全覆盖的问题; 李烁等[7]提出了基于常规Voronoi图生成镶嵌线网络, 并基于成像区域对镶嵌线网络进行优化, 进而保证镶嵌结果完全覆盖。但是先对测区内所有影像进行正射纠正, 然后对所有影像进行边缘提取、生成镶嵌线网络, 再进行镶嵌的传统方法会造成巨大数据冗余和时间开销, 很难满足应急测绘的需求。

2007年, NVIDIA推出的统一计算设备结构(compute unified device architecture, CUDA), 使越来越多的学者将GPU强大的并行能力成功地运用于遥感数据的快速处理中, 逐渐形成了GPU-CPU协同处理技术。侯毅等[8]基于GPU对航空影像进行正射纠正, 验证了GPU计算结果的可靠性, 并取得了3~5倍的加速; 李朋龙等[9]利用GPU-CPU协同处理对航空影像进行正射纠正, 达到了52倍的加速; 杨靖宇等[10]和方留杨等[11]在光学卫星影像的几何纠正中利用CPU-GPU协同处理, 最高取得了110倍的加速。

为了将GPU-CPU协同处理成功应用于复杂程度更高的正射影像镶嵌中, 缩短应急测绘响应时间。本文提出了一种从匀光后影像出发, 自动生成测区Voronoi图镶嵌线网络, 将正射纠正嵌入影像镶嵌过程中, 且只对每张影像有效区域进行纠正的GPU-CPU协同无人机影像快速镶嵌方法。

1 影像匀光及镶嵌线网络自动生成
1.1 影像间Wallis匀光

在航空影像拍摄过程中, 由于受到相机内部和外部因素的影响, 会造成影像之间色彩的不一致, 如影像的亮度、色调等。影像之间的色彩不一致直接影响镶嵌后正射影像的质量, 因此需要通过影像间匀光的方法来减弱色彩的差异[14]

Wallis滤波器是一种线性滤波函数, 其原理是通过局部影像变换, 使影像内部不同区域或不同影像之间的灰度均值和方差达到近似。Wallis变换可以表示为

f(x, y)=[g(x, y)-mg]csfcsg+(1-c)sf+bmf+(1-b)mg, (1)

式中: g(x, y)为原始影像的灰度值; f(x, y)为经过Wallis变换后影像的灰度值; mgsg分别为原始影像的局部灰度均值与方差; mfsf分别为目标影像的局部灰度均值和方差; c为影像的方差扩展常数; b为影像亮度系数, 且b和c大小均在[0, 1]。式(1)可以线性表示为

f(x, y)=r0g(x, y)+r1, (2)

r0=csfcsg+(1-c)sf, (3)

r1=bmf+(1-b-r0)mg, (4)

式中: 参数r0r1为线性变换的乘性系数和加性系数。

本文基于基准色调的Wallis方法对影像间进行匀色处理(图1)。首先, 选择一幅标准模板影像, 统计其均值和标准差, 作为Wallis滤波处理时灰度均值和标准差变换的目标值; 然后, 统计待匀光影像的均值和标准差, 以目标值为基准, 来调整待匀光影像的灰度分布, 对所有影像进行Wallis匀光处理[13]

图1 影像间Wallis匀光流程Fig.1 Flowchart of Wallis dodging between images

1.2 测区镶嵌线网络自动生成

中心投影的成像方式必然会造成高出地面的地物在影像上具有一定的投影变形, 且距离影像中心越远, 投影变形越大。无人机遥感影像有很高的重叠度, 在重叠区域合理地选择像素来源能有效地减小拼接结果的投影变形, 保证DOM精度。Voronoi图是计算几何中基于散点最邻近原则的空间划分方法。如果以每张影像像底点组成散点集生成Voronoi图对平面进行划分, 那么理论上拼接后DOM中每一点的投影变形最小。

传统镶嵌模式是先将测区影像纠正成正射影像, 然后通过边缘提取获得每张正射影像的成像区域, 最后获得成像区域中心位置生成测区Voronoi图网络。而本文从测区影像定向结果出发, 利用公式将影像的像主点投影到地面得到像底点(如图2所示), 然后以测区所有镶嵌点组成散点集, 利用生长法生成以测区所有影像像底点为剖分中心的Voronoi图镶嵌线网络[16]。Voronoi图镶嵌线网络中以影像像底点为中心的多边形即为该影像对应的镶嵌后正射影像中的有效区域多边形, 公式为

X=Xs-(Zs-Z)a1x+a2y-a3fc1x+c2y-c3fY=Ys-(Zs-Z)b1x+b2y-b3fc1x+c2y-c3f, (5)

图2 像底点的获取Fig.2 Photographic nadir

式中: (X, Y, Z)为地面点的物方坐标; (x, y, z)为对应地面点在像方坐标系中的坐标; (Xs, Ys, Zs)为影像外方位元素中的线元素; f为相机的焦距; a1, a2, a3, b1, b2, b3, c1, c2, c3是根据影像外方位元素中3个角元素计算得到的旋转矩阵中的9个参数。

2 GPU-CPU协同正射影像快速镶嵌
2.1 GPU-CPU协同处理原理

在CUDA架构下, CPU被视为主机, GPU被视为供主机调配的设备, 它们都有自己的存储地址空间并能互相通信协同, CPU负责逻辑运算和少量的串行计算, 而GPU则负责大量高度并行化的运算。CUDA将程序单次编译后, 将计算任务映射为大量可以并行执行的线程, 在GPU段Kernel函数是由线程格网单元进行执行。如图3所示, 每个线程格网(grid)由多个线程块(block)组成, 各个线程块并行执行, 且不能相互通信; 而每个线程块又由多个线程(thread)组成, 线程之间并行执行, 同属于相同线程块的线程之间可以相互通信。在CUDA架构下, GPU不仅具有良好的线性结构, 还提供了6种容量、特点和读写效率都不一样的存储器模型: 寄存器、局部存储器、共享存储器、全局存储器、常数存储器和纹理存储器, 使GPU具有了多层次性存储的特点。

图3 线程组织结构Fig.3 Thread organization pattern

GPU-CPU协同处理就是将CPU看作控制中心负责数据的准备、传输、GPU的调度和逻辑性强的串行计算, 而GPU则负责接收CPU分配的耗时巨大、高度并行的大规模运算, 并将结果反馈给CPU。

2.2 GPU-CPU协同影像正射纠正

航空影像的正射纠正是利用影像的内外方位元素和数字高程模型(digital elevation model, DEM), 基于构像方程将中心投影的原始影像纠正为正射影像的过程。传统正射纠正是将全幅影像按照反解法数字微分纠正基于CPU串行逐像素进行纠正。基于CPU串行的全幅纠正不仅会造成巨大的数据冗余和时间开销, 还会造成内存资源的浪费。为此, 本文根据已生成的镶嵌线网络, 确定每张影像在镶嵌后影像中的有效部分, 只对该部分进行正射纠正, 并将纠正后的结果直接赋给结果影像, 同时将正射纠正计算过程在GPU上运行进一步提高效率。GPU-CPU协同影像有效部分的纠正过程如图4所示。

图4 GPU-CPU协同正射纠正流程Fig.4 Flowchart of GPU-CPU cooperation orthographic rectification

1)由Voronoi图镶嵌线网络得到当前影像的有效区域范围(该影像对应的Voronoi多边形), 设Rec为该多边形的最小外接矩形。

2)根据Rec计算该区域覆盖的DEM范围, 再根据公式(6)将Rec投影到原始影像上得到其对应的纹理范围, 将原始影像局部纹理、局部DEM和外参数等从内存拷贝到显存, 即

x=-fa1(X-Xs)+b1(Y-Ys)+c1(Z-Zs)a3(X-Xs)+b3(Y-Ys)+c3(Z-Zs)y=-fa2(X-Xs)+b2(Y-Ys)+c2(Z-Zs)a3(X-Xs)+b3(Y-Ys)+c3(Z-Zs)。 (6)

3)根据Rec的长宽与DOM地面空间分辨率的关系设置线程块的大小和数目, 每一个线程对应一个像素。

4)根据线程索引, 每条线程计算出对应像素的地面坐标(X, Y), 判断该像素是否在有效多边形内部, 若在则内插高程Z, 根据公式(6)计算其在原始影像的位置, 内插并进行灰度赋值; 若不在, 则该像素不做任何处理。

5)将GPU计算的结果从显存传到内存, 并写到硬盘上。

2.3 CUDA程序性能优化

将传统的CPU程序, 按照CUDA的语法转换成可在GPU上执行的程序, 并不能很好的发挥GPU的高性能处理能力, 还需要根据GPU硬件和CUDA的优化策略对GPU程序进行性能优化。CUDA的基本思想就是最大程度的线程并行化, 程序在执行时线程块被映射到流多处理器中调度执行。麦克斯韦架构中, 满足以下条件时, 流多处理器的调度性能最优: ①线程块中线程数的大小不大于1 024; ②每个流多处理器中的线程数最大为2 048; ③一个流多处理器, 最多可以同时调用16个线程块。综合以上条件, 当线程块大小为1 024时, 流多处理器的调度性能最优。

CUDA模型中提供的每种存储器的大小和访问速度不同, 合理有效地利用GPU层次性存储的特点将极大提高程序执行效率。本文根据数据的大小和用途作以下优化:

1)对于数据量不大且每个像素都要做只读访问的影像定向参数、DEM文件参数, 将其用常数存储器存储可以减少大量访问造成的时间开销。

2)对于频繁用于灰度内插的原始影像纹理信息和用于高程内插的DEM栅格数据, 将其存储于纹理存储器之上, 可以有效利用纹理存储器的缓存加速和局部数据快速访问的特点。

3)对于同一线程块内所有线程都要频繁访问的数据, 可以存储在该线程块速度极快的共享存储器上。

4)寄存器虽然有很高的访问速度, 但是每个线程的寄存器数量非常有限, 如果线程中定义的变量过多, 过多的变量将会存储于访问效率低下的全局存储器, 因此在每个线程中尽可能少的定义变量也有助于提高程序的执行效率。

2.4 GPU-CPU协同无人机影像快速镶嵌

为解决传统正射影像镶嵌方法自动化程度低、耗时长、数据冗余大和硬件内存开销大的问题, 本文提出了一种GPU-CPU协同无人机影像快速镶嵌的方法, 该方法以测区所有影像像底点为散点集, 自动生成测区Voronoi图镶嵌线网络; 从匀光后影像出发将正射纠正的过程嵌入影像镶嵌中, 只对每张影像有效贡献区域进行正射纠正直接赋值给镶嵌后的DOM; 同时将GPU-CPU协同处理技术运用于影像正射纠正和镶嵌过程, 快速获取测区全景DOM影像图。GPU-CPU协同无人机影像快速镶嵌流程如图5所示。

图5 GPU-CPU协同无人机影像快速镶嵌流程Fig.5 Flowchart of GPU-CPU cooperation rapidly mosaicking of UAV images

3 实验与分析

为验证本文方法的有效性, 以某地6个航带共230张空间分辨率为0.1 m、航向重叠约为70%, 旁向重叠约为45%、大小为3 744像元× 5 616像元的无人机影像进行实验。

实验环境为: 64位的Windows7系统, CPU为英特尔 i5-3470, 主机内存为16 GB; GPU为麦克斯韦架构下的Nvidia Geforce GTX970, 拥有2 496个计算核心, 显存为4 GB。

3.1 匀光处理

图6给出了影像间匀光的结果, 可以看出在匀光前目标影像与模板影像之间存在着明显的色彩差异, 模板影像色彩均匀, 整体色调偏浅绿, 而目标影像整体色调偏暗, 经过Wallis匀光后, 结果影像的整体色调和模板影像基本趋于一致。

图6 Wallis匀光处理结果Fig.6 Results of Wallis dodging

3.2 镶嵌结果

图7给出了用本文方法自动生成的镶嵌线网络和测区镶嵌后DOM全景图。其中图7(a)是将测区所有像主点投影到地面得到的像底点分布; 图7(b)则是以测区所有像底点为散点集自动生成的Voronoi图镶嵌线网络, 网络中每一个多边形对应一张影像的有效区域; 图7(c)和7(d)是镶嵌之后测区全景DOM图, 镶嵌后DOM大小为76 104像元× 66 850像元。从图7看出本文方法快速获得的DOM全景图没有拼接漏洞, 实现了无缝镶嵌。

图7 快速镶嵌结果Fig.7 Results of rapid mosaicking

图8则给出了测区DOM全景图的镶嵌细节。

图8 DOM镶嵌细节Fig.8 Mosaicking details of DOM

测区内地形和地物丰富, 从图8中可以看出, 基于DEM进行纠正的DOM不仅在测区平坦区域可以实现无缝镶嵌, 在起伏较大的山地区域也没有纹理错位; 由于DEM不包含建筑物等信息, 因此当镶嵌线穿过建筑物时会有几何错位, 本文使用Voronoi图镶嵌线网络每张影像的有效部分的投影变形都在理论上最小, 因此在镶嵌线穿过非高层建筑时, 也能取得较好的镶嵌效果。

3.3 镶嵌效率

从GPU-CPU协同对影像有效区域正射纠正和整个镶嵌过程对本文方法进行效率分析。由于每张影像的有效区域大小不一, 因此耗时也不同。对一张影像的有效区域正射纠正包括硬盘读取、数据传输、纠正计算和写回硬盘4个部分, 对硬盘的读写时间占据了整个过程的很大比重。为了更好地分析GPU-CPU协同计算的效率, 本研究将整个过程分为数据传输及计算、硬盘读写2个部分进行效率分析。

图9(a)为经过选择配置和存储器优化之后GPU-CPU协同和基于CPU对有效区域正射纠正耗时对比。基于CPU平均耗时为3 610 ms, 基于GPU-CPU协同经过选择配置优化后平均耗时为167 ms, 再进行存储器优化之后平均耗时进一步减少到149.8 ms, 较基于CPU串行计算效率平均提升25.8倍。影像的内部读写有3种格式, 按照行存储的BIL格式、按照像素存储的BIP格式和按照波段存储的BSQ存储, 大多影像默认为BIL格式。图9(b)为3种方式存储格式下, 对相邻15张影像有效区域读取和结果写入的耗时情况。图9(c)为基于GPU-CPU协同且运用BSQ存储策略下与传统基于CUP串行且BIL存储策略下对有效区域纠正并存储整个过程的耗时比较。传统方法对15张影像有效区域正射纠正平均耗时为14 389 ms, 而本文方法平均耗时仅为4 958 ms, 平均加速比为3.2倍。

图9 影像有效区域正射纠正效率分析Fig.9 Efficiency of ortho-rectification of the valid area

利用本文GPU-CPU协同无人机影像处理方法对230张无人机影像进行快速正射纠正处理直接输出测区DOM全景图只需耗时28.4 min。如果采用文献[7]和文献[14]等的方法, 先对测区所有影像进行全幅正射纠正, 再进行镶嵌线网络选择进而进行影像镶嵌的传统方法, 在全区影像全幅正射纠正上不仅耗费巨大的时间, 而且还会造成巨大的数据冗余, 不利于缩短应急测绘的响应时间。

4 结论

本文方法先通过将测区影像像主点投影到地面, 自动生成了测区Voronoi图镶嵌线网络; 然后基于GPU-CPU协同处理技术将正射纠正嵌入到影像镶嵌过程中且只对影像有效区域进行纠正, 直接输出测区DOM全景图。本文方法中只对有效区域进行纠正, 不仅避免了巨大的数据冗余也极大减少了计算时间。对230张空间分辨率为0.1 m的无人机影像进行快速纠正镶嵌只需28.4 min, 较传统方法有极大的效率提升。

由于Voronoi图是对平面的几何划分, 并没有考虑到建筑物等目标, 当镶嵌线穿过高层建筑物区域时仍会存在纹理错位, 下一步将研究如何优化镶嵌线使其自动绕过建筑物。

The authors have declared that no competing interests exist.

参考文献
[1] 孙家抦. 遥感原理与应用[M]. 武汉: 武汉大学出版社, 2003.
Sun J B. Principles and Applications of Remote Sensing[M]. Wuhan: Wuhan University Press, 2003. [本文引用:1]
[2] Kerschner M. Seamline detection in colour orthoimage mosaicking by use of twin snakes[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2001, 56(1): 53-64. [本文引用:1]
[3] Davis J. Mosaics of scenes with moving objects[C]//Processing of 1998 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. Santa Barbara, CA, USA: IEEE, 1998. [本文引用:1]
[4] Chon J, Kim H, Lin C S. Seam-line determination for image mosaicking: A technique minimizing the maximum local mismatch and the global cost[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2010, 65(1): 86-92. [本文引用:1]
[5] 袁修孝, 钟灿. 一种改进的正射影像镶嵌线最小化最大搜索算法[J]. 测绘学报, 2012, 41(2): 199-204.
Yuan X X, Zhong C. An improvement of minimize local maximum algorithm on searching seam line for orthoimage mosaicking[J]. Acta Geodaetica et Cartographica Sinica, 2012, 41(2): 199-204. [本文引用:1]
[6] 潘俊, 王密, 李德仁. 基于顾及重叠的面Voronoi图的接缝线网络生成方法[J]. 武汉大学学报(信息科学版), 2009, 34(5): 518-521.
Pan J, Wang M, Li D R. Generation of seamline network using area Voronoi diagram with overlap[J]. Geomatics and Information Science of Wuhan University, 2009, 34(5): 518-521. [本文引用:1]
[7] 李烁, 王慧, 程挺, . 顾及有效区域的Voronoi图的正射影像拼接[J]. 测绘科学技术学报, 2014, 31(5): 519-523.
Li S, Wang H, Cheng T, et al. Orthoimage mosaicking based on Voronoi diagram with valid area[J]. Journal of Geomatics Science and Technology, 2014, 31(5): 519-523. [本文引用:1]
[8] 侯毅, 沈彦男, 王睿索, . 基于GPU的数字影像的正射纠正技术的研究[J]. 现代测绘, 2009, 32(3): 10-11.
Hou Y, Shen Y N, Wang R S, et al. The discussion of GPU-based digital differential rectification[J]. Modern Surveying and Mapping, 2009, 32(3): 10-11. [本文引用:1]
[9] 李朋龙, 邓非, 何江, . GPU-CPU协同航空影像快速正射纠正方法[J]. 测绘地理信息, 2016, 41(2): 44-47.
Li P L, Deng F, He J, et al. GPU-CPU cooperate processing of aerial image rapid ortho-rectification[J]. Journal of Geomatics, 2016, 41(2): 44-47. [本文引用:1]
[10] 杨靖宇, 张永生, 李正国, . 遥感影像正射纠正的GPU-CPU协同处理研究[J]. 武汉大学学报(信息科学版), 2011, 36(9): 1043-1046.
Yang J Y, Zhang Y S, Li Z G, et al. GPU-CPU cooperate processing of RS image ortho-rectification[J]. Geomatics and Information Science of Wuhan University, 2011, 36(9): 1043-1046. [本文引用:1]
[11] 方留杨, 王密, 李德仁. CPU和GPU协同处理的光学卫星遥感影像正射校正方法[J]. 测绘学报, 2013, 42(5): 668-675.
Fang L Y, Wang M, Li D R. A CPU-GPU co-processing orthographic rectification approach for optical satellite imagery[J]. Acta Geodaetica et Cartographica Sinica, 2013, 42(5): 668-675. [本文引用:1]
[12] 韩宇韬. 数字正射影像镶嵌中色彩一致性处理的若干问题研究[D]. 武汉: 武汉大学, 2014.
Han Y T. Research on Key Technology of Color Consistency Processing for Digtial Ortho Map Mosaicing[D]. Wuhan: Wuhan University, 2014. [本文引用:1]
[13] 李德仁, 王密, 潘俊. 光学遥感影像的自动匀光处理及应用[J]. 武汉大学学报(信息科学版), 2006, 31(9): 753-756.
Li D R, Wang M, Pan J. Auto-dodging processing and its application for optical RS images[J]. Geomatics and Information Science of Wuhan University, 2006, 31(9): 753-756. [本文引用:1]
[14] 于涵, 李朋龙, 胡冯伟. 基于Voronoi图无人机影像快速拼接方法研究[J]. 地理空间信息, 2016, 14(4): 27-29.
Yu H, Li P L, Hu F W. UAV images rapid mosaic method based on Voronoi diagram[J]. Geospatial Information, 2016, 14(4): 27-29. [本文引用:1]