一种基于金字塔和影像绘制引擎的超大遥感影像显示方法

文档序号:6519749阅读:301来源:国知局
一种基于金字塔和影像绘制引擎的超大遥感影像显示方法
【专利摘要】一种基于金字塔和影像绘制引擎的超大遥感影像显示方法,采用金字塔的数据结构实现图像显示的动态管理,以显示窗口的地理位置为输入,以动态金字塔为第一数据源,直接为显示引擎提供待绘制的图像数据,以静态金字塔为第二数据源,直接从静态金字塔块中恢复出动态金字塔块,以影像文件为第三数据源,根据动态金字塔块的需求,从对应文件的对应区域读取影像数据,并根据显示需要转换。本发明通过动态金子塔和静态金字塔协同工作的方式避免了超大遥感影像在显示过程中大量内存IO的时间消耗,起到快速显示的作用。另外,本发明保存了特定区域的显示参数,并通过静态金字塔文件保存完整的影像数据,支撑后期基于特定区域的影像快速显示。
【专利说明】一种基于金字塔和影像绘制引擎的超大遥感影像显示方法
【技术领域】
[0001]本发明涉及一种遥感图像的处理方法。
【背景技术】
[0002]随着对地观测技术的不断发展,卫星对地观测的分辨率不断提升,卫星影像的数据量急剧增加。另一方面,由于利用卫星获取地面影像时往往受卫星本身轨道参数的影响,单景卫星影像难以覆盖整个感兴趣的区域,需要多景影像数据才能获得感兴趣区域的整体情况。在特殊情况下,当一颗卫星的影像数据无法覆盖整个感兴趣区域时,还需要联合其它卫星数据或航空数据。这就给面向区域的遥感影像数据显示带来了几个问题:1、数据量大,很多卫星单景影像数据就达到2G以上,面向区域的遥感影像整体的数据量相当大;2、数据格式、影像分辨率、投影方式不一致;3、透明色、图层显示顺序对显示效果有影响。
[0003]传统的图像显示技术基于单幅小图像处理,将图像的数据读入内存,能较好的满足用户对图像浏览的需求。遥感影像的显示,特别是面向区域的(即多幅影像一起)遥感影像的显示,由于需要考虑的因素多,往往很难实现快速的影像显示。一些遥感软件,如国外的 Erdas、Env1、ArcGIS、QGIS,国内的 SuperMap、Titan Image、Geostar 都能实现面向区域的遥感影像的显示,但打开影像的速度以及图像缩放和漫游的体验能力不同。对于软件的使用者来说,是否快速的打开区域的遥感影像以及具备良好的漫游和缩放功能是评价遥感软件好坏的一个重要的因素之一。整体来讲国外商业软件在这方面要比国内软件好。Erdas软件减少了软件缩放时对文件IO读取的时间。ENVI软件推出对应的Envi Zoom功能,在打开影像时不仅自动建立对应的图像文件,而且图像显示多线程实现影像显示从粗糙到精细渐变的过程,提升用户体验。不过,作为商业软件其对应的遥感影像的可视化方法不公开,只能通过使用该软件或利用其对应的二次开发包才能使用。

【发明内容】

[0004]本发明的技术解决问题是:克服现有技术的不足,提供了一种基于金字塔和影像绘制引擎的超大遥感影像显示方法,可以提高超大遥感影像的显示效率。
[0005]本发明的技术解决方案是:一种基于金字塔和影像绘制引擎的超大遥感影像显示方法,步骤如下:
[0006](I)利用开源GDAL作为遥感文件的读取库,获取遥感影像,然后利用开源Pro j4库获取与遥感影像对应的投影信息;
[0007](2)初始化显示窗口的位置和显示分辨率,确定在初始位置下显示窗口所对应的遥感影像的地理位置信息,从遥感影像中读取显示窗口在初始位置下所包含的影像块在初始显示分辨率下的图像信息,并将该影像块的位置、分辨率信息保存至静态金字塔;在内存中划分出内存池构建动态金字塔,将显示窗口所对应的影像块的位置、分辨率信息保存至动态金字塔;所述的静态金字塔和动态金字塔中的各影像块均单独设置有引用次数的标识,引用次数的初始值为零;[0008](3)获取用户所需要的显示窗口,确定用户所需显示窗口对应的遥感影像地理位置信息,并读取用户指定的显示分辨率信息,然后在动态金字塔内搜索对应区域和对应分辨率的影像块,如果存在满足要求的影像块则直接显示该影像块所在的区域,并将该影像块的引用次数加1,转步骤(5);如果不存在满足要求的影像块,则在动态金字塔内搜索对应区域但分辨率与用户需求不相同的影像块,如果存在满足要求的影响块则先显示与用户需求分辨率不相同的影像数据,同时将用于显示的数据块的引用次数加I后转步骤(4);如果不存在用户需求区域内的影像块则直接转步骤(4);
[0009](4)从静态金字塔中搜索用户所需显示窗口内对应分辨率的影像块,用搜索到的满足用户需求的影像块刷新显示窗口,并将该影像块加入到动态金字塔中;在向动态金字塔中加入影像块时,要对内存池的大小进行判断,如果内存池的剩余空间能够装载要加入的影像块,则直接装载影像块,如果内存池的剩余空间不能够装载要加入的影像块,则按照引用次数从低到高的顺序依次从内存池中释放影像块直至内存池的剩余空间能够装载要加入的影像块后装载影像块;从内存池中释放影像块时,要判断静态金字塔中是否存在对应的影像块,如果存在则转步骤(5),如果不存在则将释放的影响块写入到静态金字塔中后转步骤(5);
[0010](5)完成用户需求关闭显示影像时,判断静态金字塔文件中是否存在当前显示的影像块,如果存在则退出,如果不存在,则将该影像块写入到静态金字塔中后退出。
[0011]本发明与现有技术相比的优点在于:
[0012](I)本发明利用开源 GDAL (Geospatial Data Abstraction Library)库作为遥感文件的读取库,可以解决不同格式遥感影像数据的读取能力,使得本发明方法具备支持目前常见的绝大多数遥感影像的可视化的能力;
[0013](2)本发明方法利用开源Proj4库与GDAL库一起,实现不同投影间的转换功能,解决了不同投影遥感影像同时可视化时无法正确显示对应地理位置的问题;金字塔块(包括静态金字塔和动态金字塔)根据投影后的影像块来建立,减少投影转换所需要的时间;
[0014](3)本发明方法利用工程文件保存当前整个区域遥感影像显示时的特征,如当前区域内遥感影像在计算机上的路径,每个遥感影像的长、宽、波段数、分辨率、投影信息等,以及整个区域的投影信息,整个区域的最小外接矩形的长、宽等。然后采用静态金字塔保存影像对应不同分辨率的数据内容,通过构建不同分辨率时影像对应的现实文件减小对硬盘IO的读取压力;
[0015](4)本发明方法采用动态金字塔,在内存中保持使用频率相对较高的遥感影像数据块,一方面可以根据计算机本身的内存容量合理利用内存资源,另一方面减少了对硬盘的访问量,提升了显示速度;
[0016](5)本发明方法采用金字塔的数据结构实现动态管理,能实现多幅遥感影像之间的金字塔集管理,且方便使用LRU (Least Recent Used)方法对使用频率少的金字塔块进行剔除,提升显示效率;使用自定义结构对静态金字塔文件进行保存,采用索引技术寻找对应的金字塔块,与相应的显示工程文件对应,减少用户缩放或全图显示时读取文件IO的操作,以及提升第二次显示工程文件的速度;
[0017](6)针对遥感影像后期应用的需求,本发明方法保存了特定区域的显示参数,并通过静态金字塔文件保存完整的影像数据,支撑后期基于特定区域的影像快速显示。【专利附图】

【附图说明】
[0018]图1是本发明方法的原理框图;
[0019]图2是本发明方法中影像区域信息初始化流程图;
[0020]图3是本发明方法中影像数据可视化原理图;
[0021]图4是本发明方法中动态影像金字塔工作原理示意图。
【具体实施方式】
[0022]本发明方法采用金字塔和绘制引擎技术来共同实现大区域遥感影像的可视化。其中,金字塔分为静态金字塔和动态金字塔。静态金字塔是保存在本地的影像块索引文件,该索引文件保存整体影像和影像块的地理位置、分辨率、使用频率、存在状态信息。动态金字塔是一块固定大小的内存池,实现影像块在内存中的管理,并保存影像块的地理位置、影像块大小、使用频率、分辨率信息。
[0023]金字塔管理以显示窗口的地理位置为输入,以动态金字塔为第一数据源,直接为显示引擎提供待绘制的图像数据,以静态金字塔为第二数据源,直接从静态金字塔块中恢复出动态金字塔块,以影像文件为第三数据源,根据动态金字塔块的需求,从对应文件的对应区域读取影像数据,并根据显示需要转换。响应用户的操作时,首先向金字塔管理中取对应的数据进行显示。金字塔管理动态金字塔块,将已有的金字塔块,和没有的金字塔块以默认块的形式返回给显示影像。金字塔显示模块再根据显示的需求向静态金字塔以及文件中提取获得金字塔块。
[0024]如图1所示,为本发明方法的流程框图,主要步骤如下:
[0025]第一步,输入待显示的影像数据,并获取初始显示窗口 ;
[0026]第二步,计算显示窗口所对应的遥感影像地理位置信息,并读取用户指定的显示分辨率等信息;
[0027]第三步,在动态金字塔内搜索对应区域和对应分辨率的影像块,如果存在,则直接显示该区域,并将该数据块的引用次数加1,结束操作。如果不存在,转第四步;
[0028]第四步,在动态金字塔内搜索对应区域但分辨率不同的数据,如果存在,则先显示低分辨率的影像数据,并将该数据块的引用次数加1,然后转第五步;如果不存在,直接转第五步;
[0029]第五步,从静态金字塔中搜索对应区域对应分辨率的数据块,以该数据块刷新显示窗口,并将该块加入到动态金字塔中,转第六步;
[0030]第六步,动态金字塔在加入影像块时,根据内存大小进行判断,如果内存池剩余空间能够装载影像块,则直接装载,如果不能,则将使用频率较低的影像块从内存池中释放,并判断静态金字塔中是否存在对应的影像块,如果存在则不操作,如果不存在,则将该块内存更新到静态金字塔中;
[0031]第七步,关闭显示影像时,判断静态金字塔文件中是否存在当前显示影像块的数据,若不存在,则将该数据块全部写入静态金字塔文件中。
[0032]以下对几个关键环节作进一步的说明。
[0033]影像区域信息初始化的构建流程如图2所示,主要过程如下:[0034]Sl-1首先利用GDAL库读取区域内各影像的基本信息(如长度、宽度、波段数、图像位数、投影信息等),使用ImgTraits结构体用来保存这些基本信息。
[0035]S1-2使用Proj4以首张影像的投影信息作为区域的投影信息,并计算在该投影方式下的地理位置范围。以第一张遥感影像的分辨率作为区域初始分辨率,计算整个区域的长度和览度。
[0036]S1-3以区域的左上角为初始显示区域,并结合显示窗口,完成整个影像区域信息初始化工作。
[0037]显示过程的流程如图3所示,主要过程如下:
[0038]S2-1响应用户的要求,通过绑定鼠标按钮、键盘按键响应用户的输入,并对应窗口显示区域的变化。S2-1为界面窗口线程,保证操作过程中不会假死。
[0039]S2-2绘制引擎以固定的时间间隔利用动态金字塔提交显示区域要求,由动态金字塔立即返回对应区域的金字塔瓦片。绘制引擎将瓦片内容绘制到显示缓存上显示给用户,即完成影像的显示。
[0040]S2-3的主要工作示意图如图4,采用RasterCacheTile来保存金字塔瓦片,RasterLayerSetCache来保存影像金字塔集,RasterImageSet来保存区域影像集。显示引擎提交需要的显示区域信息,动态金字塔查找范围内的瓦片,并将对应的瓦片数据返回。对于属于当前显示区域,但不在动态金字塔内的,先返回特殊瓦片,其图像数据区全部为默认颜色,满足显示引擎绘制的需求。动态金字塔内的数据读取线程从静态金字塔或影像数据中读取对应的瓦片信息,并生成新的瓦片数据。由于计算机内存有限,每次显示过程中,动态金字塔都会统计记录每块金字塔瓦片的使用频率,利用LRU算法更新动态金字塔的内容。
[0041]S2-4主要是对静态金字塔的管理。静态金字塔保存的信息与动态金字塔一致,通过索引的方式,可以快速从静态金字塔中找到需要显示的金字塔瓦片数据。静态金字塔与GDAL的金字塔格式以及各类基于栅格影像的金字塔格式不相同,主要针对对应影像区域的(多幅影像)。
[0042]S2-5主要实现从影像数据中读取相应区域的数据。在数据读取上,利用GDAL针对影像区域的读取方式,读取对应的图像信息并转换为金字塔瓦片对应的分辨率。读取影像后,在利用投影转换功能将数据块转换为整个区域对应的投影方式。
[0043]本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
【权利要求】
1.一种基于金字塔和影像绘制引擎的超大遥感影像显示方法,其特征在于步骤如下: (1)利用开源GDAL作为遥感文件的读取库,获取遥感影像,然后利用开源Proj4库获取与遥感影像对应的投影信息; (2)初始化显示窗口的位置和显示分辨率,确定在初始位置下显示窗口所对应的遥感影像的地理位置信息,从遥感影像中读取显示窗口在初始位置下所包含的影像块在初始显示分辨率下的图像信息,并将该影像块的位置、分辨率信息保存至静态金字塔;在内存中划分出内存池构建动态金字塔,将显示窗口所对应的影像块的位置、分辨率信息保存至动态金字塔;所述的静态金字塔和动态金字塔中的各影像块均单独设置有引用次数的标识,引用次数的初始值为零; (3)获取用户所需要的显示窗口,确定用户所需显示窗口对应的遥感影像地理位置信息,并读取用户指定的显示分辨率信息,然后在动态金字塔内搜索对应区域和对应分辨率的影像块,如果存在满足要求的影像块则直接显示该影像块所在的区域,并将该影像块的引用次数加1,转步骤(5);如果不存在满足要求的影像块,则在动态金字塔内搜索对应区域但分辨率与用户需求不相同的影像块,如果存在满足要求的影响块则先显示与用户需求分辨率不相同的影像数据,同时将用于显示的数据块的引用次数加I后转步骤(4);如果不存在用户需求区域内的影像块则直接转步骤(4); (4)从静态金字塔中搜索用户所需显示窗口内对应分辨率的影像块,用搜索到的满足用户需求的影像块刷新显示窗口,并将该影像块加入到动态金字塔中;在向动态金字塔中加入影像块时,要对内存池的大小进行判断,如果内存池的剩余空间能够装载要加入的影像块,则直接装载影像块,如果内存池的剩余空间不能够装载要加入的影像块,则按照引用次数从低到高的顺序依次从内存池中释放影像块直至内存池的剩余空间能够装载要加入的影像块后装载影像块;从内存池中释放影像块时,要判断静态金字塔中是否存在对应的影像块,如果存在则转步骤(5),如果不存在则将释放的影响块写入到静态金字塔中后转步骤(5); (5)完成用户需求关闭显示影像时,判断静态金字塔文件中是否存在当前显示的影像块,如果存在则退出,如果不存在,则将该影像块写入到静态金字塔中后退出。
【文档编号】G06F9/44GK103678501SQ201310582904
【公开日】2014年3月26日 申请日期:2013年11月18日 优先权日:2013年11月18日
【发明者】童俊涛, 李申阳, 邹同元 申请人:航天恒星科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1