面向云端存储的遥感影像文件优化技术

2022-11-16 02:16常思腾龙小祥公雪霜徐启龙魏红
电子技术与软件工程 2022年16期
关键词:压缩算法金字塔字节

常思腾 龙小祥 公雪霜 徐启龙 魏红

(中国四维测绘技术有限公司 北京市 100048)

1 引言

随着卫星载荷技术的强化和信息技术不断发展,卫星传感器获取的遥感图像地面分辨率越来越高,遥感影像也越来越大。同时,在遥感卫星更新频次上,观测周期越来越短,在短时间内形成大量的遥感影像数据。遥感影像的日益丰富,数据量急剧增加,呈现出明显的体量大、种类多、变化快等大数据特征[1]。不断涌现的海量遥感数据需要大量的存储和计算机资源,而传统的台式机或服务器受到CPU、内存等硬件条件的制约,且读取性能低下,难以满足日益增长的容量需求,难以实现弹性扩容。

云计算的发展为遥感大数据提供了机遇,云存储技术将存储的资源和信息存储在由广域网和互联网连接的多台虚拟服务器上,有着存储空间大、数据安全高、使用便捷性高等优势[2]。在海量遥感影像文件存储在云端的场景下[3],将整景影像全部读入内存中的传统遥感影像读取方式已经无法适用,因此,寻求更高效的面向云端存储的遥感影像的读取方式是当下需要解决的重要问题之一。

目前主流的影像快速读取技术主要有两种:一是建立影像金字塔;二是影像分块读取[4‐7]。本文针对存储在云端的遥感影像,在分析影像文件格式的基础上,结合影像金字塔模型和网络请求HTTP Range 特性,同时利用数据无损压缩技术节省网络传输时间,提升网络读取效率,研究了更适用于云端存储的遥感影像文件组织结构,进而提升遥感影像的读取性能。

2 理论依据

2.1 GeoTIFF格式文件

在遥感应用中,目前遥感影像、航测数据以及DEM 数据均采用GeoTIFF 文件格式,这是因为遥感行业要求图像具有地理编码信息,如图像坐标系系统、比例尺、像素坐标与地理坐标对应关系、长度单位及角度单位等,而纯TIFF 格式的图像文件很难做到存储和读取这些信息[8‐11]。GeoTIFF作为TIFF 的一种扩展,在TIFF 的基础上定义了一些地理标签,用于定义和存储诸如椭球基准、投影信息等地理编码信息,实现了图像数据和地理数据在同一图像文件中的共存,这使得广大用户制作和使用带有地理信息的图像成为可能。

GeoTIFF 文件基本格式与TIFF 文件保持一致,以.tif或.tiff为扩展名,其数据格式是一种3 级体系结构,内部结构可以分成三个部分,分别是:文件头(ImageFileHeader,IFH)、图像文件目录(ImageFileDirectory,IFD)和图像数据区,如图1 所示。每个文件只能有一个文件头,但可以有多个文件目录和多个图像数据区;一个图像文件目录和一个图像数据区对应一幅图像,图像文件目录包含对应图像的基本信息以及图像数据在文件中的位置。

图1:GeoTIFF 数据格式

文件头是一个8 字节的头块区,如表1 所示,前两个字节描述TIFF 文件产生时字节的顺序;第3‐4 字节是TIFF 文件的特定标志,值为42 的整数,由该值可以判断对应图像是否为标准的TIFF 图像文件;第5‐8 字节是第一个IFD 在文件中的地址或字节偏移量,一般IFD 的存储位置在数据区之后,如果该4 字节的值转换成整数时为8,则说明对应图像为BigTIFF,则需要从第9 个字节开始读取8 个字节,转换为长整型作为第一个IFD 的存储位置。

图像文件目录(ImageFileDirectory,IFD)是非常重要的数据结构,一个TIFF 文件可以包含多个IFD,这时表示此文件包含多个图像,一个IFD 标识一个图像的属性。如表2 所示,IFD 以链表的形式存放,长度不固定,其中前两个字节是IFD 中存放的目录项的个数,随后是一系列12 个字节的目录项,最后4 个字节是指向下一个IFD 的偏移量。

一个图像数据区记录一个图像的属性,例如图像的长、宽、分辨率等。其存储结构如表3 所示,每一个数据项包含标签的代码、数据的类型代码、存放数据的长度、偏移地址。

2.2 影像金字塔技术

影像金字塔是利用不同分辨率、不同维数来表示同一幅影像,类似于古埃及金字塔的一种多层数据结构,影像金字塔技术已经广泛的应用在影像处理系统中,特别是针对海量遥感影像数据的快速读取效果尤为明显。

影像金字塔是一种能对遥感影像按照逐级降低分辨率的拷贝方式存储方法,通过重采样技术生成不同比例尺的各层影像数据,并且各层划分为多个尺寸大小相同的图像块。如图2 所示,金字塔模型组成部分包括多种不同层次的多分辨率影像模型,该影像模型全部来自于相同的原始影像,按照顺序从最底层金字塔原始图像中重采样获取下层图像,当满足某个设定条件时结束采样,该流程中获取的影像分辨率逐层下降,而金字塔全部层数可表示相同的地理区间。原始数据作为金字塔的底层,分辨率最高,数据量最大,随着金字塔层数的增加,影像分辨率降低,数据量减少。

图2:金字塔示意图

表1:图像文件头IFH 格式

表2:图像文件目录IFD 格式

表3:图像数据区数据格式

表4:实验测试结果

2.3 数据无损压缩技术

数据是信息的载体,数据压缩是信息量基本不变的情况下,降低数据量的核心技术。而数据无损压缩技术通过压缩数据存储占据的空间,实现便于传输、处理及节省存储空间的目的,节省数据存储空间并提升信息的传递效率,同时保证了原始数据的完整性[12‐13]。

无损数据压缩算法按照压缩模型主要分为两类:基于统计压缩算法和基于字典压缩算法。基于统计压缩算法主要包括:游程长度编码、哈夫曼编码、算术编码;基于字典的压缩算法主要包括:LZ77 算法、LZ78 算法、LZW 算法和LZSS 算法。就当前的技术而言,使用无损压缩最大可以将数据文件的大小减少1/2‐3/4。目前使用最为广泛的压缩技术是LZW 和哈夫曼这两大类压缩算法。其中哈夫曼算法可以确保字符的二进制编码情况已经将数据空间压缩到极致,任何修改都难以对其空间进行进一步压缩。

2.4 HTTP Range请求

Range 是HTTP/1.1 规范中新增的一个请求头字段域。HTTP Range 请求允许服务器基于客户端的请求只发送响应包体的一部分给到客户端,而客户端自动将多个片段的包体组合成完整的体积更大的包体。这样的范围请求对于大型媒体、具有中断和恢复下载进度的下载文件请求很有帮助。如图3 所示。

图3:HTTP Range 请求流程

3 技术实现和对比实验

3.1 技术实现

本文面向云端存储的海量遥感影像文件优化技术,存储及读取操作的流程如图4 所示。通过优化数据存储格式,在遥感影像文件中预先生成相应的多层金字塔模型,按照“文件头‐IFD 区‐图像数据区”的字节顺序标准化,无损压缩后整理为云端存储格式,读取时利用HTTP Range 请求云端遥感影像文件随机数据。

图4:面向云端存储的遥感影像文件优化流程图

其中涉及的关键工作如下:

3.1.1 优化GeoTIFF 结构

本文优化了GeoTIFF 影像文件结构,如图5 所示。本文提前创建了金字塔模型,对同个影像创建了多个向下采样的版本,由此匹配一个遥感影像下的不同缩放级别。以标签的方式存储不同缩放级别下的影像数据在文件中的偏移地址,并在GeoTIFF 中IDF 区定义这些标签。

图5:GeoTIFF 优化后结构图

优化后的GeoTIFF 读取时,利用IDF 区中的标签信息仅需读取目标比例尺下的局部数据,而非全部影像数据,大大减少了获取遥感影像数据的时间和IO。

3.1.2 遥感影像文件无损压缩

本文在遥感影像文件存储至云端前,首先采用了哈夫曼编码对遥感影像文件进行无损压缩:用二进制的方式来表示每一个符号,数据的长度表示为某些特殊符号出现的频率次数;创建哈夫曼树将数据转换为对应编码,完成遥感影像文件数据内容的压缩。

本文通过对遥感影像文件的压缩,一方面减少网络传输时的数据量,进而减少云端读取耗时;另一方面降低遥感影像文件的数据量,节省云端存储资源。

3.1.3 借助HTTP Range

本文借助了HTTP 的1.1 版本中“Range‐范围请求”的功能,客户端通过GET 方法请求云端数据接口时,可在请求头中使用accept‐ranges 字段指定所需要数据的范围,分块读取需要的数据内容,提升网络读取性能。

3.2 对比实验

为验证本文提出的面向云端存储的遥感影像文件读取性能,本文面向不同卫星,各自选取了10 景标准GeoTIFF,分别将原始影像、本文提出的面向云端遥感影像文件优化后的遥感影像存储在相同云资源上,组成3 组、每组各20 个对比文件的数据集合。

采用相同的文件读取程序读取影像区域数据,并对比网络读取耗时和云端遥感影像文件大小,其每组实验数据均值指标如表4 所示。

4 结束语

通过实验结果可以看到,本文提出的遥感影像文件优化技术在读取存储在云端的遥感影像文件时,读取性能有明显的提升,实现了快读读取的目的。但,仍然存在一些问题,面向云端的遥感影像文件优化后和标准GeoTIFF 文件在文件大小方面并没有明显的提升,有可能是因为内建金字塔模型加大了文件大小,虽然后面经过了压缩,但最终结果和标准GeoTIFF 差别不大,未来还需研究如何在保障读取性能的情况下,进一步节省云端存储资源。

猜你喜欢
压缩算法金字塔字节
“金字塔”
A Study of the Pit-Aided Construction of Egyptian Pyramids
No.8 字节跳动将推出独立出口电商APP
基于参数识别的轨道电路监测数据压缩算法研究
No.10 “字节跳动手机”要来了?
海上有座“金字塔”
简谈MC7字节码
神秘金字塔
更正声明
PMU数据预处理及压缩算法