基于GPU的大影像正射校正分块处理方法

时间:2022-10-14 05:45:14

基于GPU的大影像正射校正分块处理方法

【摘 要】图像正射校正处理具有计算复杂度和并行性高的特点,适合在GPU中进行大规模并行处理。然而由于大幅面的影像超过了GPU全局存储器的范围,无法直接导入全局存储器中进行处理。本文提出了影像分块处理策略,对大幅面影像分块然后依次传输到全局存储器中进行处理。实验表明:与CPU串行正射校正算法相比,GPU分块并行处理算法达到了很好的加速效果,加速比达到了188.34倍。

【关键词】正射校正;GPU;分块;并行处理

【Abstract】Orthorectification has the characteristics of high computational complexity and high parallelism, and is suitable for large scale parallel processing in GPU. However due to large format image exceeds the scope of the GPU global memory ,unable to directly import into the global memory for processing. this paper presents the image block processing strategy, large format image block followed by transfer to the global memory for processing. The experimental results show that compared with the CPU serial correction algorithm, the GPU block parallel processing algorithm achieves a good acceleration effect, and the speedup is up to 188.34 times.

【Key words】Orthorectification; GPU; Block; Parallel processing

0 引言

正射校正是图像预处理的重要组成部分,是进行后续图像处理的前提。随着影像获取手段的发展,影像获取的速度以及数据量急剧增加,仅利用中央处理器(CPU)进行影像的串行正射校正处理已经无法满足影像信息的快速获取的要求。因此如何对海量的影像数据进行快速处理具有重要的意义。

近年来,图形处理器(GPU)以其强大的并行处理能力和浮点运算能力得到了国内外学者[1-2]的广泛关注,并将其运用到通用计算中,取得了很好的加速效果。目前,不少研究人员已将GPU引入到了影像正射校正的算法中,显著加快了影像的处理速度[3-4]。但是,相关研究都没有考虑 GPU的存储空间,对应目前的大数据影像已经远远超过了GPU的全局存储器,不能一次将影像数据全部加载到GPU存储器中,因此本文提出了基于GPU的大影像正射校正分块处理方法。

1 正射校正原理

根据影像成像瞬间记录设备的摄影参数,然后依据共线方程建立影像坐标与地物坐标之间的对应关系,从而进行影像的正射校正[5]。具体步骤如下:

1)根据原始影像的四个角点坐标,带入共线方程中,求得原始影像在地物空间坐标系的覆盖范围。

2)根据地物空间坐标的覆盖范围确定纠正影像的大小。

3)对纠正影像的每个像素带入共线方程中求得像点在原始影像的坐标,进行灰度值内插并赋予纠正影像的像素。

2 大影像正射校正分块并行处理

2.1 正射校正并行处理

根据正射校正算法原理可以看出,该算法是针对图像中每个像素单独执行的操作,各个像素之间没有任何相关性,非常适合在GPU中进行多线程并行处理。

GPU中线程的组织结构是按照线程网格和线程块进行组织的。正射校正的并行化把校正影像映射到线程网格上,使影像的每个“逻辑块”与GPU线程块相对应,确保线程块中的每个线程对影像“逻辑块”中的每个像素进行处理。

2.2 分块策略

假设主机内存空间足够大,可以同时存放原始影像和纠正后的影像,主要考虑处理的影像大小超过GPU的存储器的情况。文中采用了按行分块的策略,分别将影像数据的分块依次读入GPU全局存储器中,如图1所示。GPU进行校正的具体流程如下:

①将原始影像读入到主机内存;

②从主机内存中将影像分块传输到设备全局存储器中;

③调用核函数,进行影像并行处理;

④将处理后的影像传输到主机内存;

⑤重复执行②~③步骤,直到将影像所有分块处理完成,在内存中将各分块组合一个完整的校正影像。

3 实验结果

本文实验环境CPU型号为AMD Athlon(tm) II 640,4核处理器,主频3.0GHz,内存为10.0G;GPU为Fermi架构的 NVIDIA GTX580,16个流多处理器,512颗计算核心,1.5G的全局存储器。

实验数据为10000 x10000的影像数据,以2000行为一块进行分块处理,记录GPU的处理时间,与CPU串行处理时间进行比较。实验结果表明,GPU分块并行处理的时间为1.14s,而CPU串行处理的时间为214.71s,加速比达到了188.34倍,取得了很好的加速效果。

4 结论

本文针对大幅面影像无法直接导入GPU存储器处理的问题,采用了影像分块策略实现了GPU并行处理,通过实验验证取得了很到的加速比,能够实现大幅面影像的快速处理。

【参考文献】

[1]D GRANATA, U AMATO, B ALFANO. MRI denoising by nonlocal means on multi-GPU[J]. Journal of Real-Time Image Processing, 2016:1-11.

[2]王晶,李仕.运动模糊视频图像在图形处理器平台上的实时恢复[J].光学精密工程,2010,18(10):2262-2268.

[3]杨靖宇,张永生,李正国,等.遥感影像正射纠正的GPU-CPU协同处理研究[J].武汉大学・信息科学版,2011,36(9):1043-1046.

[4]方留杨,王密,李德仁.CPU和GPU协同处理的光学卫星遥感影像正射校正方法[J].测绘学报,2013,42(5):668-675.

[5]李德仁,王树跟,周月琴.摄影测量与遥感概论[M].2版.北京:测绘出版社,2008.

上一篇:孩子,我愿做你们生命中的贵人 下一篇:宁东矿区新第三系红层软岩物理力学特性研究