基于GDAL大于2G遥感图像的快速浏览
张宏伟,童恒建,左博新,等:基于GDAL大于2G遥感图像的快速浏览2012,48(13)
161
传统的金字塔结构如图1所示;本文采用的内存图像金字塔的逻辑结构如图2所示。
图1
传统金字塔结构图
tileWidth
tilelod=6CountX=4
He
lod=5CountY=4ighlod=4maxLod=7
t
maxTile=16lod=3
lod=2lod=1
lod=0
图2
新型金字塔结构图
这里假定原图像被分成了16块,编号0~15。动态金字塔一共有7层,第0层为原图像,每个图像块的大小为tileWidth×tileHeight(tileWidth和tileHeight一般取256或512个像素),tileWidth和tileHeight随着lod的增加以2的倍数递减,从而形成不同分辨率下的图像块数据。不同于传统的金字塔结构,本文的金字塔结构每一层的块数都一样,只是大小不一样,有利于放大和缩小操作,并有利于实现渐变显示的效果,给用户快速和平滑的感觉。
4快速浏览算法
图像浏览的操作主要包括漫游、放大和缩小三
种操作。动态调度的过程请参考图3进行理解。
4.1图像漫游
漫游操作是在显示窗口内按住鼠标左键上、下、
左、右等各个方向移动图像,是在某一分辨率下的操作。假定金字塔的总层数为N,图像在第n层上进行漫游操作,数据读取的算法过程如下:
(1)该块是否在内存金字塔中?如果在内存金字塔中,则读取该块数据,显示该块图像,该块读取结束;如果不在内存金字塔中,进行第(2)步。
n+p层
后
n层
变
换
0123内
存
4567
8
91011
GDAL12
13
14
15读取后
n-q层
图3动态调度的示意图
(2)该块在内存金字塔的下面的[n-1,0]层是否
有对应块?如果有对应块,找到其中最接近图层n的图层中的块,在内存中缩小,得到该块数据,显示该块图像,将该块加入到内存金字塔中,如果超过设定的内存上限,执行LRU替换算法移除一些图像块,直到有足够的空间容纳新加入的图像块数据,该块读取结束;如果没有对应块,则进行第(3)步。
(3)该块在内存金字塔的[n+1,N-1]层是否有对应块?如果有对应块,找到其中最接近图层n的图层中的块,在内存中放大,得到该块数据(实现渐变的效果,放大的块数据不加入到内存金字塔中,而是将从文件中读取后,再加入内存金字塔中),显示该块图像后进行第(4)步;如果没有对应块,直接进行第(4)步。
(4)利用GDAL类库中的函数RasterIO()从文件中读取块数据,将该块加入到内存金字塔中,如果超过内存上限,执行LRU替换算法移除一些图像块,直到有足够的空间容纳新加入的图像块数据,然后显示该块图像,该块读取过程结束。
4.2图像放大操作
假定金字塔的总层数为N,图像在第n层上第i
块进行放大操作,放大后图层为n-q(图3所示),数据读取的算法过程如下:
(1)如果金字塔图层n-q上有对应块的数据,则直接读取并显示。
(2)如果金字塔图层n-q上没有对应块的数据,则首先用第n层上第i块进行放大操作,实现渐变显示效果;然后,查找该块在内存金字塔的下面的[n-q-1,0]层是否有对应块:①如果有对应块,找到其中最接近图层n-q的图层中的块,在内存中缩小到n-q层,得到n-q层对应块数据,显示该块图像,并将该块加入到内存金字塔中n-q层,如果超过设定的内存上限,执行LRU替换算法移除一些图像块,直到有足够的空间容纳新加入的图像块数据,
该块读
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于GDAL大于2G遥感图像的快速浏览(3)在线全文阅读。
相关推荐: