遥感影像的快速正射纠正方法

文档序号:6422945阅读:358来源:国知局
专利名称:遥感影像的快速正射纠正方法
技术领域
本发明涉及一种遥感影像的正射纠正方法,更具体而言涉及一种利用多核CPU进行数据调度,同时通过特定的处理方法利用图形处理器GPU (Graphic Processing Unit, 即计算机上的显卡)实现并行化的影像重采样,从而实现航空航天遥感影像的快速正射纠正方法。
背景技术
随着遥感技术的发展,通过遥感技术所获得的遥感影像或数据的用途越来越广, 例如应用于测绘,农业,林业,地质,水文,环境等各个社会信息服务领域。传统的遥感影像正射纠正一般包括两个步骤第一,通过外业测量或已有的地形图资料采集数据信息;第二,将获得的数据信息导入专业的遥感或数字摄影测量系统完成影像的正射纠正。目前航空航天影像的正射纠正过程都是利用CPU以串行方式对影像进行投影变换和重采样(如线性内插)。近年来传感器技术的进步带来的是海量数据的处理需求,传统的基于CPU串式影像正射纠正不能够满足目前对快速正射影像的生产的要求。目前解决快速正射影像纠正多采用分布式集群的方式利用多机器CPU进行处理,这样虽然可以提高系统处理正射影像的速度,但由于受多机IO的限制,分布式正射影像生产能够提高的速度有限,同时也提高了单位正射影像生产成本。高度并行化的GPU是当前主流计算系统的一个组成部分,由于GPU具有并行的处理架构,因此在处理数字图形图像的速度上比CPU更具得天独厚的优势。采用GPU进行正射纠正,既可以充分利用个人电脑或图形工作站现有的GPU硬件计算功能,同时又使得正射纠正处理速度和数据吞吐量方面要远超出基于CPU的纠正方法。因此本发明提出了一种基于GPU的快速正射纠正方法,可以为遥感软件系统提供高性能的准实时正射影像纠正能力,以满足社会各相关领域对正射影像快速生产的要求。

发明内容
本发明则是通过一定的处理方法,将传统正射纠正过程中影像投影变换以及影像采样这类的任务映射到GPU支持的图形绘制流水线上,充分利用GPU强大的并行处理能力和高带宽的数据传输能力实现航空航天遥感影像的快速正射纠正。利用本方法,可以使得正射纠正速度比在传统CPU上进行处理要快10倍以上,从而可以实现航空航天遥感影像的准实时正射纠正。


下面结合附图对本发明进一步说明
图1是本发明利用图形处理单元进行正射纠正处理时,使用迭代单片量测计算的示意
图;图2是本发明利用图形处理单元进行正射纠正处理时,使用原始影像四个角点计算正射影像地理范围的示意图3是本发明中将虚拟正射影像进行分解的示意图; 图4是本发明中矢量平面顶点和顶点连接的拓扑关系示意图; 图5是本发明中将正射纠正过程映射成OpenGL 3D绘制操作的框图; 图6是本发明中多核CPU与GPU相结合的正射纠正处理方法的逻辑框图。
具体实施例方式下面说明本发明中利用图形处理单元对遥感影像进行快速正射纠正处理的基本过程。第一步,首先利用传感器几何模型、原始影像四个角点坐标、数字高程模型以及正射影像地面分解率(GSD),通过自动单片迭代量测技术快速计算出四个角点4的地理坐标
(JQ^) ! €{0,1,2,3},然后分别计算X和Y方向最大值JT—^maxCi^l^^ma^iQ和最
小值Ima = Inm(Xj)i^ = mm(i;),则利用下列公式形成一个宽为V0W,高为VOH的虚拟正射
影像;
VOW = Xmax -Xmm VOH = Ymax — Ymin第二步考虑到图形处理器处理的数据量有限,而遥感影像的数据量和尺寸都非常大,因此需要进行分块处理。首先通过OpenGL函数获取当前系统中图形处理器支持纹理和视口的尺寸信息,然后自动选择一个合理长(GW)宽(GH)将虚拟正射影像分解成NXXNY 块小虚拟正射影像,参见图2所示,其中=NX = ceil (VOW/GW) NY = ceil(V0H/GH) (ceil 为向上取整函数,由于VOW/GW和VOH/GH不是整数,所以取距离计算后浮点数最近的一个较大的整数)。第三步将第二步分解得到的每一个虚拟小块正射影像,按照图3所示的三角网方式构成一个矢量平面。图3中的黑色实心圆代表虚拟小块正射影的每一个像素,利用这些像素的地理坐标以及连接索引关系,通过OpenGL的矢量Buffer对象方式加载到图形处
理单元。第四步按照每一个虚拟小正射影像地理范围,从数字高程模型中提取覆盖此小正射影像范围的数字高程模型数据,通过OpenGL的浮点纹理Buffer对象方式加载到图形处理单元中,同时还在原始影像上提取在此小正射影像范围内的原始影像,以图像纹理方式加载到图形处理单元中。第五步利用GPU执行并行正射纠正任务。参见图5,此时要做的主要工作是把待求解的任务映射到GPU支持的图形绘制流水线上。本方法是将正射纠正任务的输入数据利用第三步和第四步得到的顶点位置、拓扑关系信息、浮点高程纹理和影像纹理等图形绘制要素来表达,而相应的处理算法则被分解为一系列的执行步骤,并改写为GPU的顶点处理程序和片段处理程序,然后,调用OpenGL 3D API (如glTeXImage2D等函数)执行图形绘制操作,图形绘制流水线调用相应的片段程序进行处理;最后,保存在后台帧缓存中的绘制结果就是本算法的正射纠正输出数据。将正射纠正任务映射到GPU图形绘制流水线的具体方法描述如下
(1)将DEM数据、虚拟正射影像物方坐标和拓扑连接关系以及原始影像数据通过 glTexImage2D和glVertexPointer等3D API载入GPU中,并在GPU中分配相应的存储空间;
(2)将共线方程或有理多项式模型计算物方到像方坐标的整个过程,利用GLSL语言编写,然后利用glSiaderSource装载进OpenGL流水线中,并调用glCompileraiader编译,生成GPU中的顶点处理程序,实现从浮点纹理上内插高程值,并通过共线方程或有理多项式模型计算每个顶点所对应的影像纹理坐标,同时还将输入的正射影像物方坐标转成像点坐标,从而将GPU中缺省的顶点程序改写成专为正射影像处理定制的顶点处理程序;
(3)将背景色和正射影像无效区处理算法利用GLSL语言编写,然后利用 glShaderSource装载进OpenGL流水线中,并调用glCompiIerSiader编译,生成GPU中的片段处理程序,从而改写GPU中缺省的片段处理程序,实现正射影像纠正中背景色和无效区填色等处理工作;
(4)利用glBindFramebuffer函数在GPU中构建一个后台帧缓冲对象,并利用 glFramebufferRenderbuffer函数将一个GPU绘制对象与帧缓冲对象进行管理,从而将 OpenGL的图形绘制流水线输出改为后台处理;
(5)调用glDrawElements函数将正射纠正的任务添加到GPU的3D流水线中;
(6)调用glBindBuffer在GPU中开辟一块接收GPU处理后的正射影像缓冲对象,然后调用glReadPixels函数从该GPU缓冲对象中获取正射影像块。第六步重复3到5步的处理,完成余下所有小虚拟正射影像的纠正,然后根据地理坐标进行简单拼接,写入最终的正射影像文件,完成整个影像正射纠正处理任务。上述方法是利用GPU正射纠正的核心,但每次只能对一块小虚拟正射影像进行准实时纠正,为了充分利用现在的多核CPU的数据调度能力,本发明还采用了多核CPU与GPU 相结合的正射纠正处理方法,可以同时对多块虚拟小正射影像块进行GPU纠正。本方法的难点在于多线程间数据同步以及多线程间竞争性地使用有限的GPU性能,为此本方法设计了一种并行队列,通过线程间的信号同步、事件通知等机制,可以有效地处理这些问题,其处理逻辑图如图6。第一步根据当前CPU的核数,在系统中启动若干调度执行单元,也是通常说的数据调度线程。同时还在系统中启动若干GPU纠正执行单元,也就是通常所说的数据处理线程。第二步将方法(一)中的第二步分解到的NXXNY块小虚拟正射影像的坐标数据、拓扑关系数据、高程模型以及原始影像数据,添加到系统的并行共享待纠正队列中。并行共享待纠正队列需要处理多核并行调度和多核并行GPU纠正这两功能模块的数据同步问题,这类似实现多对多的“生产-消费”这一并行计算模式。第三步在多核并行GPU纠正中,每个GPU纠正执行单元利用方法(一)实现GPU的准实时正射纠正,然后将纠正结果添加到并行共享待写入队列中。第四步在并行共享待写入队列的另一头,则由一个正射影像拼接写入线程,将这些已经纠正好的数据进行简单拼接,最后写入正射影像文件,完成最终的正射影像处理。本发明开发了一种专有算法,使得支持OpenGL 2. 0标准的显卡可以利用数字高程模型(DEM)对具有有理多项式模型或共线方程参数的遥感影像进行实时正射纠正。由于本发明充分应用了 GPU硬件加速技术,并且GPU纠正是并行的,而且因此可以实现基于GPU 遥感影像的准实时正射纠正。
权利要求
1.一种遥感影像的快速正射纠正方法,该方法包括以下步骤第一步,利用传感器几何模型、原始影像四个角点坐标、数字高程模型以及正射影像地面分解率(GSD),快速估计出正射影像的宽(VOW)和高(VOH),形成一个V0W*V0H的虚拟正射影像;第二步,进行分块处理,将虚拟正射影像分解成NXXNY块小虚拟正射影像,其中NX = ceil(V0ff/Gff) NY = ceil (VOH/GH) (ceil 为向上取整函数,由于 V0W/GW 和 V0H/GH 不是整数,所以取距离计算后浮点数最近的一个较大的整数);第三步将第二步分解得到的每一个虚拟小块正射影像,利用每个像素所对应的平面地理坐标构成一个矢量平面,将这些像素所对应的地理坐标以及连接索引关系以矢量对象方式加载到图形处理单元;第四步按照每一个虚拟的小正射影像地理范围,提取覆盖此小正射影像范围的数字高程模型数据,并以浮点纹理方式加载到图形处理单元中,同时在原始影像上提取在此小正射影像范围内的原始影像,以图像纹理方式加载到图形处理单元中;第五步利用GPU执行并行正射纠正任务,把待求解的任务映射到GPU支持的图形绘制流水线上,利用第三步和第四步得到的顶点位置、拓扑关系信息、浮点高程纹理和影像纹理等图形绘制要素,执行图形绘制操作,图形绘制流水线调用相应的片段程序进行处理;最后保存在后台帧缓存中的绘制结果就是本算法的正射纠正输出数据;第六步重复3到5步的处理,完成余下所有小虚拟正射影像的纠正,然后根据地理坐标进行简单拼接,生成最终的正射影像文件。
2.如权利要求1所述的遥感影像正射纠正方法,其中第一步的快速估计正射纠正影响是通过自动单片迭代量测技术实现的。
3.如权利要求1所述的遥感影像正射纠正方法,其中第二步的分块处理是通过OpenGL 函数获取当前系统中图形处理器支持纹理和视口的尺寸信息,然后自动选择一个合理长 (Gff)宽(GH)将虚拟正射影像分解成NXXNY块小虚拟正射影像。
4.如权利要求1所述的遥感影像正射纠正方法,其中第三步的加载是通过OpenGL的矢量Buffer对象方式加载到图形处理单元的。
5.如权利要求1所述的遥感影像正射纠正方法,其中第四步对数字高程模型数据是通过OpenGL的浮点纹理Buffer对象方式加载到图形处理单元中的。
6.如权利要求1所述的遥感影像正射纠正方法,其中执行图形绘制操作的处理算法被分解为一系列的执行步骤,并改写为GPU的顶点处理程序和片段处理程序。
7.如权利要求1所述的遥感影像正射纠正方法,还采用了多核CPU与GPU相结合的正射纠正处理方法,该方法包括第一步根据当前CPU的核数,在系统中启动若干调度执行单元; 第二步权利要求1中分解到的NXXNY块小虚拟正射影像的坐标数据、拓扑关系数据、 高程模型以及原始影像数据,添加到系统的并行共享待纠正队列中;第三步在多核并行GPU纠正中,每个GPU纠正执行单元实现GPU的准实时正射纠正, 然后将纠正结果添加到并行共享待写入队列中;第四步在并行共享待写入队列的另一头,由一个正射影像拼接写入线程,将这些已经纠正好的数据进行简单拼接,最后写入正射影像文件,完成最终的正射影像处理。
全文摘要
本申请涉及一种遥感影像的快速正射纠正方法,利用多核CPU进行数据调度,通过特定的处理方法将传统正射纠正过程中影像投影变换以及影像采样这类的任务映射到GPU支持的图形绘制流水线上,利用GPU强大的并行处理能力和高带宽的数据传输能力实现航空航天遥感影像的快速正射纠正。
文档编号G06K9/32GK102184397SQ20111010268
公开日2011年9月14日 申请日期2011年4月25日 优先权日2011年4月25日
发明者孙钰珊, 张力, 杜全叶, 艾海滨, 董启明 申请人:中国测绘科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1