基于GPU和GDAL的超大尺寸遥感影像交互展示方法

文档序号:31448256发布日期:2022-09-07 12:31阅读:390来源:国知局
基于GPU和GDAL的超大尺寸遥感影像交互展示方法
基于gpu和gdal的超大尺寸遥感影像交互展示方法
技术领域
1.本发明涉及遥感影像处理技术邻域,特别设计一种基于gpu和gdal的超大尺寸遥感影像交互展示方法。


背景技术:

2.随着遥感技术的飞速发展,遥感影像的尺寸正在变得越来越大,但对交互反馈和加载速度的要求却越来越高。遥感影像处理软件的用户经常涉及影像的缩放、旋转、平移等几何操作;通道像素范围拉伸、算法实时预览等像素级处理;以及多影像叠加、卷帘、多影像叠加运算等多层采样操作。用户通常希望这些操作的反馈尽可能快,甚至是可以实时反馈。但超大尺寸的影像必然要求更多的处理时间,导致更慢的交互响应。
3.如何在有限的空间开销下,快速对用户的操作进行交互并快速呈现处理结果,是各大遥感影像处理软件都必须面对的问题。目前的处理方法主要可以分为以下几类:
4.(1)一次性加载技术[1-6],这类技术通常将影像一次性加载到内存里。优点是后序的操作将拥有较高的处理速度,对几何操作较为友好。但缺点也很明显,首先受到内存尺寸的限制,对超大规模影像兼容性很差。同时由于影像数据在加载时已经被固化,无法进行像素拉伸、多层采样等像素级操作。这类技术的用度很差,主流的处理软件基本不会采用此类技术。
[0005]
(2)基于cpu处理的分块加载剪裁技术[7-9]。这类技术利用诸如gdal这类拥有区域加载功能的底层,只加载处于视口中的特定区域和特定分辨率的影像。由于像素被降低到视口范围,使cpu进行实时处理成为可能。这类技术通常有不错的交互性、适用性也很强。这类技术的优点在于使用范围较广,同时有着尚可的交互体验,一些商业软件也采用这一技术来实现[10-11]。但随着用户交互界面的进步,视口需要承载的像素也变得越来越多。这类技术通常会出现较大的延迟。尤其对于多影像叠加的场景,由于cpu要同时负责几何和像素操作,还需要在多个影像上进行采样操作,会大大增加操作延迟。
[0006]
(3)基于gpu的分块加载技术。以otb的monteverdi
[12]
为代表,这类技术采用gpu来进行渲染,会有较好的呈现速度呈现效果。这类技术通常需要较为复杂的实现,像monteverdi本身包含一个非常复杂的实现、并引入许多第三方影像切割和分块库来进行实现。另外此类技术对机器的显卡有一定要求,兼容性较第二种技术会稍差。不过随着硬件的发展,这一缺点通常不再是主要问题。
[0007]
[1].卞利涛,刘绍堂,姜斌.多时相大数据量遥感图像快速显示方法研究[j].测绘与空间地理信息,2020,43(7):4.
[0008]
[2].王亚楠,赖积保,周珂,等.基于gdal的多类型遥感影像文件标准接口设计与实现[j].河南大学学报:自然科学版,2012,42(6):5.
[0009]
[3].赵岩,王思远,毕海芸,等.基于gdal的遥感图像浏览关键技术研究[j].计算机工程,2012,38(23):5.
[0010]
[4].张利娜,张东芳,白亚彬.基于gdal的遥感影像快速读取与显示方法研究[j].
西部资源,2014(1):3.
[0011]
[5].杨学博.基于gdal库的遥感图像处理[j].城市地理,2015(4x):2.
[0012]
[6].王昀,陈浩,万红霞.基于qt,gdal处理遥感影像geotiff数据的应用[j].网络新媒体技术,2012,1(5):3.
[0013]
[7].张宏伟,童恒建,左博新,等.基于gdal大于2g遥感图像的快速浏览[j].计算机工程与应用,2012,48(13):159-162.
[0014]
[8].陈星雨.基于opengl和gdal的卫星遥感图像处理系统的研究[d].华南理工大学.
[0015]
[9].袁梓琦.基于gdal的遥感图像变化检测对照查看工具研建[d].北京林业大学.
[0016]
[10].l3harris.envi.https://www.l3harrisgeospatial.com/software-technology/envi[eb/ol]
[0017]
[11].航天宏图.pie.https://www.piesat.cn/product/pie-basic/index.html[eb/ol]
[0018]
[12].grizonnet,m.,michel,j.,poughon,v.et al.orfeo toolbox:open source processing of remote sensing images.open geospatial data,softw.stand.2,15(2017).https://doi.org/10.1186/s40965-017-0031-6。


技术实现要素:

[0019]
本发明的目的在于克服现有方法的不足,提供一种基于gpu和gdal的超大尺寸遥感影像交互展示方法,加载速度快,交互实时性好。
[0020]
为了实现上述发明目的,采用的技术方案如下:
[0021]
一种基于gpu和gdal的超大尺寸遥感影像交互展示方法,主要步骤可以分为预处理,视口剪裁、块加载、渲染展示和多影像叠加展示五个部分,如下:
[0022]
1、预处理步骤
[0023]
1.1、用户加载影像,先预处理加载的影像此时并不读取影像像素细节,只读取影像的基本信息,例如长、宽、通道数目、地理信息等。对影像进行逻辑分块,分块尺寸由用户操作窗口尺寸和显卡支持纹理格式决定。根据不同分辨率层次,建立金字塔的逻辑层次。
[0024]
1.2、加载影像几何信息,生成像素坐标系到交互坐标系的变换矩阵mi。2维空间的变换矩阵是3
×
3的齐次变换矩阵,有以下形式:
[0025][0026]
齐次变换矩阵用于从某个二维齐次向量执行线性变换变换到另一个齐次空间。其中m
11
、m
12
、m
21
、m
22
四个分量描述旋转、错切、对称缩放等变换,m
13
、m
23
描述平移变换,m
31
、m
32
描述投影变换,m
33
是整体缩放系数。
[0027]
由于需要在将结果投影到视口平面对应的三维平面(z=0)上。因此需要扩充该矩阵到三维空间的齐次变换矩阵,并舍弃掉其中的z轴分量,所得到的变换矩阵为:
[0028][0029]
下文中所有的变换矩阵(如mv、mb)都遵循这一方式得到。
[0030]
1.3、调用gdal计算影像通道的像素范围,作为后续进行像素拉伸等操作的参数。
[0031]
2、视口剪裁步骤
[0032]
2.1、维护一个视口坐标系到交互坐标系(影像的地理坐标系)的变换矩阵mv。该变换矩阵由用户的缩放、偏移、斜切、旋转等各类线性变化合成。
[0033]
2.2、当发生交互导致视口发生变化或者用户新加载影像时,触发更新。
[0034]
2.3、视口定位:方法是视口四点边界由视口矩阵变换到影像像素坐标系,确定视口范围:
[0035]
pi=pv×mv
×mi-1
[0036]
其中,pi表示影像像素坐标;pv表示像素坐标。
[0037]
本步骤中,可以通过适当扩充视口范围,预加载一部分块。避免用户微小移动造成的频繁加载。
[0038]
2.4、剪裁范围确定:视口范围与逻辑分块求交,将视口范围内的块放入更新序列。根据剪裁尺寸选择合适的金字塔层次。例如在一个实际应用中,使用与视口像素尺寸大小一致的金字塔影像,保证影像的精度。将逻辑分块与视口求交,确定需要加载块的范围。
[0039]
2.5、使用增量更新方式处理更新序列的更新,保留相同属性的块,标记为已加载。卸载新序列中不存在的块。加入新增的块并标记为未加载。这一步的目的是进一步降低加载的负担。
[0040]
3、块加载步骤
[0041]
3.1、使用gdal加载更新序列中未加载的块,对每个块,根据其在整体块中的位置,计算块像素到整体坐标系的变换矩阵mb。
[0042]
3.2、根据用户选择的通道,使用gdal加载数据到opengl纹理。本步骤可以根据影像格式选择合适的纹理格式以加速加载过程,也可以归一化到某个纹理格式上。
[0043]
4、渲染展示步骤
[0044]
4.1、合成变换矩阵:对更新序列中的每个块,需要经过以下矩阵变换,映射到视口的像素:
[0045]
pv=pb×
mb×
mi×mv-1
[0046]
其中,pv表示映射到视口的像素坐标;pb表示分块影像上的像素坐标。
[0047]
绑定渲染时,还需要对pb执行纹理坐标的逆变换m
t
转换到对应的像素上,以及对pv执行视口的归一化处理mn,因此完整的变换为:
[0048]
pv=pb×mt
×
mb×
mi×mv-1
×mn
[0049]
将该矩阵设为顶点着色器的参数,由gpu执行几何变换。
[0050]
4.2、绑定片段着色器:根据用户交互,绑定对应的片段着色器。以通道像素拉伸为例,使用下面的公式对像素进行计算:
[0051][0052]
其中,tm为通道波段的采样值,u、l分别为波段值的上下界,由用户决定,c是最终呈现的颜色。用户对u、l做的调整实时作为着色器参数传递片段着色器,调用gpu完成各类像素拉伸。
[0053]
4.3、绑定预定义的面片(标准正方形),再由alpha test等其他后处理执行渲染。
[0054]
5、多影像叠加展示步骤
[0055]
具体的,影像和视口坐标系的转换均通过矩阵执行最后归一化到交互坐标系后再统一由视口变换矩阵mv转换到视口。因此很容易进行多影像的叠加。只需要用替换所使用影像的mi即可。
[0056]
由上述对本发明的描述可知,与现有技术相比,本发明具有如下有益效果:
[0057]
本发明一种基于gpu和gdal的超大尺寸遥感影像交互展示方法,包括预处理步骤、视口剪裁步骤、块加载步骤和渲染展示步骤,通过这些步骤的处理,本发明在对超大尺寸遥感影像进行交互展示时,加载速度快,交互实时性好。相对于monteverdi这类重型、需要大量引用外部框架实现的技术,本发明的架构更为精简,所有变换均使用矩阵来实现,各类剪裁和变换更为简洁,对项目维护和二次开发也更为友好,执行效率也更高,与monteverdi相比,本发明能提升大约50%左右的加载速度。
附图说明
[0058]
图1为本实施例的基于gpu和gdal的超大尺寸遥感影像交互展示方法的流程图;
[0059]
图2为本实施例的完整的流程处理框图;
[0060]
图3为本实施例的建立多分辨率影像金字塔的示意图;
[0061]
图4为本实施例的视口坐标系变换示意图;
[0062]
图5为本实施例的影像分块与视口剪裁示意图;
[0063]
图6为本实施例的分块增量加载示意图;其中(a)表示原更新序列;(b)表示增量加载;
[0064]
图7为本实施例的多影像叠加示意图。
具体实施方式
[0065]
下面结合附图对本发明做进一步的说明。
[0066]
参见图1和图2所示,本实施例一种基于gpu和gdal的超大尺寸遥感影像交互展示方法,包括如下步骤:
[0067]
s101,预处理步骤:接收用户加载影像指令,对影像进行逻辑分块;根据不同分辨率层次,建立多分辨率逻辑金字塔;加载影像几何信息,生成像素坐标系到交互坐标系的变换矩阵mi;调用gdal计算影像通道的像素范围;
[0068]
s102,视口剪裁步骤:生成视口坐标系到交互坐标系的变换矩阵mv,基于用户更改视口属性的操作对mv进行更新;将视口四点边界由视口矩阵变换到影像像素坐标系,以计算视口范围;根据视口像素的尺寸选择合适的金字塔层次,将视口范围内的逻辑块加入到更新序列中;使用增量更新方式处理更新序列的更新;
[0069]
s103,块加载步骤:调用gdal加载更新序列中未加载的块,根据用户选择的通道,使用gdal加载数据到opengl纹理;
[0070]
s104,渲染展示步骤:对更新序列中的块,将各个矩阵序列合成几何变换矩阵,绑定到顶点着色器上;根据用户交互,绑定通道拉伸的片段着色器;绑定预定义的顶点和面,执行渲染。
[0071]
本实施例中,将以一张某地区的3通道,8位像素的高分彩色影像为例进行说明,该彩色影像由谷歌地球卫星图拼接而来,交互展示方法如下:
[0072]
第一步:参见图3所示,用户点击加载影像,用gdal加载影像并进行初始化,以2n的倍率建立多分辨率逻辑金字塔(并不真正加载,仅是逻辑上建立金字塔关系),加载影像的几何信息计算变换矩阵mi,初始化其他参数。
[0073]
第二步:参见图4所示,初始化或者用户更改视口属性(缩放、平移、旋转等),更新视口变换矩阵mv,并触发更新。
[0074]
第三步:参见图5所示,通过pi=pv×mv
×mi-1
计算视口范围(一个多边形区域),根据视口像素的尺寸选择合适的金字塔层次。视口范围内的逻辑块加入到更新序列中。
[0075]
第四步:参见图6所示,通过与原更新序列对比,增量加载新块,卸载不存在的旧块,保留两者相同的块。每个新块都记录局部到全局的变换矩阵mb。
[0076]
第五步:调用gdal根据影像金字塔的层次加载合适分辨率的新块,对于no data数据,将alpha通道赋值为0。到这一步所有影像已经加载完毕,开始执行渲染。
[0077]
第六步:对更新序列中的块,将各个矩阵序列:m
t
×
mb×
mi×mv-1
×mn
合成几何变换矩阵,绑定到顶点着色器上。
[0078]
第七步:根据用户交互,绑定通道拉伸的片段着色器。
[0079]
第八步:设置alpha test以剔除no data数据,绑定预先设置好的顶点buffer和面buffer,执行渲染。
[0080]
本实施例中,一种基于gpu和gdal的超大尺寸遥感影像交互展示方法,还包括多影像叠加展示步骤。
[0081]
具体的,参见图7所示,不同的影像,他们的m
t
、mb、mi这三项不同,但经过这三项变换m
t
×
mb×
mi后,他们的坐标系被变换到同一个地理坐标系下。之后只需要再使用相同的视口坐标系变换和归一化变化m
v-1
×mn
,就可以很容易实现多影像的叠加。
[0082]
上述仅为本发明的具体实施方式,但本发明的设计构思并不局限于此,凡利用此构思对本发明进行非实质性的改动,均应属于侵犯本发明保护范围的行为。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1