多种嵌入式平台影像组织与可视化研究

多种嵌入式平台影像组织与可视化研究

姬英杰

[摘要]嵌入式平台在计算、存储、显示等方面存在较大差异,运算能力远不及PC端。随着遥感技术飞速发展,影像分辨率越来越高,其在嵌入式环境下离线组织、渲染等效率问题日益突出,难以满足用户需求。本文提出一种适用于多种嵌入式平台的影像地图组织存储模型,并以WinCE、Android系统为例设计影像地图跨平台显示模式,降低内存占用的同时提高了空间利用率。实验测试分析表明该模式在效率和效果方面体现出对嵌入式环境较好的适用性。

[关键词]影像地图;金字塔;瓦片压缩;OpenGL ES;GDI

[分类号]P289

 Research on image organization and visualization of multiple embedded platforms

Ji Yingjie,Lu Yang,Zhao Pei,Liu Yang

Abstract  Embedded platform in computing, storage, display and other aspects of the larger differences, computing power is far less than the PC side. With the rapid development of remote sensing technology, the image resolution is getting higher and higher. the efficiency of offline organization and rendering in embedded environment is becoming more and more prominent, which is difficult to meet the needs of users. This paper proposes an image map organization and storage model suitable for many embedded platforms. taking WinCE and Android system as examples, the cross-platform display mode of image map is designed, which reduces the memory occupation and improves the space utilization. The experimental results show that the model has good applicability to embedded environment in terms of efficiency and effect.

Keywords  Image map; Pyramid; Tile compression; OpenGL ES; GDI

1 引言

       嵌入式地理信息系统(Embedded GIS,E-GIS),将地理信息系统(GIS)引擎进行专项优化、功能筛减,迁移至小型移动设备。E-GIS具备体积小、功耗低、携带方便等特点。各种嵌入式平台在操作系统及硬件配置方面存在较大差异,相比PC端GIS软件研制工作难度更大,且嵌入式地理信息系统要求固态化存储、编码模式需满足高质量和高稳定性、高实时性等特点。

       随着遥感与摄影技术的发展,遥感影像的分辨率不断提高,数据量日益增长,这对快速、高效地处理海量遥感影像数据提出了更高的要求,尤其在嵌入式地理信息系统离线数据管理方面,面临更严峻的挑战,如何有效、智能地存储和处理海量遥感数据成为研究热点。影像地图是地理信息系统中主要的一种地图数据类型,由于嵌入式环境下瓦片地图数据组织受到系统资源有限的限制,常规影像组织模型与检索方式多类型嵌入式终端难以完全满足。因此,提出一套适用于多种嵌入式系统的通用影像数据组织模型与可视化方案,经实际应用验证,该模式具备了良好的跨平台特性,屏蔽了嵌入式系统差异,在运行内存占有、空间利用率、渲染效率等方面具有很大优势[1]。

2 影像地图组织与存储

       地理信息系统中,影像金字塔模型作为一种关键空间数据组织形式和应用模型,它集影像分层、分块处理、重采样等技术为一身。为应对遥感影像数据多源化、多态化、海量化不断发展趋势,提升用户体验,众多学者对其已有广泛的研究,研究成果颇丰,但在嵌入式地图数据组织模型方面主要集中于矢量数据组织模式研究,影像瓦片金字塔模型研究多基于服务器端,离线数据专项管理研究较少[1-2]。

      影像金字塔将原始栅格影像作为金字塔的最底层,通过降采样方法构建一系列反映不同详尽程度影像层,其中原始影像层分辨率最高,降采样得到的图像分辨率随着金字塔层级的升高逐渐降低。利用金字塔结构,可根据渲染影像范围直接调用影像地图目标层级与瓦片集合,如图1所示。

1金字塔组织模型示意图

       结合嵌入式应用环境差异性及资源限制特性,利用多源空间数据融合技术,将数据组织类型、数据压缩、数据安全等特色技术融入金字塔构建过程中,形成一套适用于嵌入式端离线影像组织与存储方案,可划分为参数指定、瓦片裁剪、瓦片压缩、瓦片生成四个模块,如图2所示。

2 影像地图组织与存储流程图

2.1参数指定

      影像金字塔构建依赖多个参数,可根据指定具体参数灵活生成瓦片数据,详情见表1。

1影像金字塔构建主要参数说明

参数名称

说明

影像地图路径

用于指定影像地图数据源路径

瓦片数据路径

用于指定瓦片存储路径

瓦片类型

影像瓦片存储类型离散型或紧凑型

瓦片尺寸

单个瓦片尺寸的选定。例如:512*512;256*256;128*128

金字塔层数

指定构建层数

量化系数

用于指定影像压缩过程中量化系数

比例尺

指定比例尺数据

2.2瓦片裁剪

       针对生成的各层级影像数据,根据指定的瓦片尺寸,按照从左至右、从上到下的光栅扫描顺序进行裁剪,结果如图3所示,其中Layer_0至Layer_2表示各层级影像及其中包含的瓦片。对于图层边缘长宽不足瓦片裁剪尺寸的部分,若有效数据不存在,采取补零处理,减少了计算量,裁剪结果数据利用缓存形式交由瓦片压缩模块进行压缩处理。

3各级瓦片结构示意图

2.3瓦片压缩

       利用libjpeg-turbo库进行影像地图压缩,该开源库扩展于libjpeg库,并在其基础进行了汇编优化,支持SIMD指令,如X86架构的MMX、SSE以及ARM架构的NEON等,可交叉编译实现跨平台应用[3]。在编解码速度上,经实验测试libjpeg-turbo速度约为libjpeg的2~4倍。

      将瓦片缓存数据(例如:bmp,png等)进行缓存压缩处理,以缓存形式交由瓦片生成模块,进行压缩处理,形成标准JPEG数据缓存于地图显示,易于跨平台数据组织与渲染。

2.4瓦片生成

      将JPEG影像缓存数据按照一定的格式存储于磁盘文件,根据金字塔构建模式,分为离散型和紧凑型两种。离散型将瓦片按不同层级进行分别管理,每层影像数据存储至层级文件夹内,使用行列序号进行标识,单个瓦片名称结合行列二维坐标进行命名,便于查看与管理[4]。紧凑型模式则将瓦片按特定格式存储于瓦片包系列文件中,在地图渲染时直接从瓦片包中抽取待显示数据。

      依托从左至右、从上到下的光栅扫描顺序,各层级瓦片以编码形式依次存入瓦片包相关文件。从影像数据安全角度出发,将瓦片包及索引文件采用自定义模式实现,如图4所示,为后缀的为瓦片包文件,以为后缀的为索引文件。

 

4 *.tile和*.indx文件结构图

        瓦片包文件中,表示层编号瓦片的编码数据项,依次类推,表示层编号瓦片的编码数据项。同理,索引文件中,表示层编号瓦片的索引项,表示层编号瓦片的索引项。每个索引项包含了和两个子项,子项存储对应瓦片的起始地址,子项存储编码长度。影像数据压缩与自定义存储,扩展了存储空间利用率,且无法利用商用软件解析,从而提高了影像地图数据安全性。

3影像地图可视化

       多种嵌入式下影像地图可视化,须屏蔽各嵌入式平台绘图方式的差异,提供统一的图形绘制模式。将通用控件设计及跨平台开发方法进行融合,根据项目应用特点设计出了跨平台解决方案,并将其应用于WinCE、Android系统平台。

3.1实现原理

       影像地图可视化技术包括地图数据准备与显示两部分,其中数据准备部分涉及瓦片数据的检索、调度、存储等环节,为各终端平台准备地图显示所需内容;数据显示是各终端平台利用所支持的图形库完成地图渲染的模块。

       多种嵌入式平台下图形绘制机制存在较大差异。因此,将瓦片数据检索、调度、存储等各平台通用 的数据准备逻辑进行封装,作为程序的核心组件,便于各平台图形库调用,最终通过交叉编译生成各平台可执行程序[5-6],原理如图5所示。

5影像地图可视化原理图

3.2影像地图可视化

     嵌入式平台影像地图可视化可分为瓦片检索、缓存调度、瓦片存储、地图显示四大模块。

6影像地图可视化流程 

      1.影像瓦片检索

      实时根据当前视口中心点地理坐标和屏幕分辨率推算屏幕显示范围内所需加载的金字塔层级、图幅集合及每个图幅所涉及的瓦片集合,为瓦片包解析和调度环节提供运行依据。

      移动终端平台为基础的移动地图显示,可以认为是终端显示屏幕在影像数据上移动显示的过程。当进行地图漫游操作时,需实时根据屏幕窗口中心点地理位置计算出确定预加载的图幅集瓦片集信息。

     地图缩放操作本质为各层级金字塔瓦片的切换显示,由于各金字塔层级瓦片的对应关系比较明确,在进行地图缩放操作时,可根据当前地图显示层级动态确定下一视图需要显示目标层级(上已级别或下一级别),依托中心点坐标及屏幕分辨率推算出待显示的图幅集和瓦片集。

      2.缓存调度模块

       由于嵌入式系统内存有限,应按照实际情况读取当前待显示数据进入内存,确保低内存使用率,最大限度规避无关计算。根据数据区与视图窗口的关系,以视图区域中心点为中心,以瓦片数据块为基本单位,由内向外对整幅地图进行区域切分,可以分为三类:可见区域、预可见区域、不可见区域,如表2所示。

2  区域划分要素说明

要素名称

说明

可见区域

视口范围内数据块,浅灰色

预可见区域

可见区域合理扩展,深灰色

无关区域

与显示无关,白色

屏幕视口

终端屏幕

7 可视区域划分及漫游示意图

       结合嵌入式硬件环境特点,仅将浅灰色及深灰色区域的瓦片缓冲。影像地图缩放本质为视口范围内瓦片完全更新,优化空间较小。在影像地图漫游方面,实现数据动态更新设计:若视口漫游范围在所开辟的内存数据块范围之内,所用数据已经装载,不必更新缓冲区瓦片;若数据块范围无法满足,则进行动态更新数据块(如图7所示,虚线部分为卸载部分,黑色部分为更新部分)。

      根据影像地图显示比例尺调用合适的金字塔层,利用屏幕视口范围明确所相关数据块范围。内存中仅保留索引数据和缓存内影像数据,实现了瓦片数据的动态装载更新,减实时内存占用的同时极大地提高了绘制效率,调度策略如图8所示。

8调度策略示意图

       3.瓦片存储

       为了避免影像显示过程中数据重复处理,将瓦片检索数据存储在设备内存中,为各终端平台提供无差异的影像数据。瓦片容器类是瓦片存储的实现主体,用于存储瓦片数据的属性和像素信息,提供了类似于标准库容器类的操作,包括插入、删除、查找等操作。其中,瓦片的属性信息包括瓦片ID,屏幕坐标,长宽尺寸等信息,像素信息为每个瓦片的像素块数据。

 

9瓦片容器类结构示意图

       如图9所示,瓦片容器类的内部实现采用双向链表结构,可有效避免频繁的数据插入与删除所引起的过高性能消耗。地图漫游时,待显示的瓦片数据会插入容器中,而处于屏幕显示范围外的瓦片数据则会从容器中删除;地图缩放时,首先将清空容器中当前图层的所有对象,然后再根据瓦片检索及缓存调度模块提供的数据插入新的节点,整个容器内的节点始终处于动态更新状态。

       4.影像地图显示

      根据瓦片容器对象中保存的瓦片数据信息,结合各终端平台对应绘图模式,完成地图显示。从瓦片容器对象中获取每个待显示瓦片的屏幕坐标、像素数据等信息,各终端平台调用所支持的图形API,即可将所有瓦片显示于屏幕的对应位置。虽然各终端平台支持的图形API不尽相同,但通过访问瓦片容器类对象,都可无差别获取地图显示所需全部完整的瓦片数据与属性信息,进而实现跨平台地图显示。

      a)Android平台地图显示

       Android平台支持的图像数据渲染大致包含JNI、OpenGL ES、Windows API三种模式[7]。

3 Android图像渲染模式

渲染方式

说明

JNI

部分版本可用,使用原生代码访问操作Bitmap缓存

OpenGL ES

具有跨编程语言、跨平台接口规范,针对嵌入式环境进行优化,支持2D/3D。

Windows API

部分版本可用,原生代码直接调用,不依赖任何JAVA API

        利用JNI图形API渲染的方法实现较为简单,直接在原生层调用Android为JAVA层提供的图形接口,但显示过程涉及原生层代码与JAVA层代码的交互,渲染效率会有所降低。使用Windows API渲染方法可直接在原生代码中完成图形渲染,避免了原生层代码与JAVA层代码的交互,相对于第一种方法效率有所提高,但Windows API提供的图形接口函数较少,图形显示方式不够灵活,且无法使用帧缓存方式绘图,具有一定局限性。OpenGL ES渲染模式可直接在原生层完成图形渲染,避免了与JAVA层代码交互,且默认提供帧缓存绘图环境,因此方案选择以OpenGL ES图形库为Android平台提供图形显示。

       Android平台下的地图显示模块从瓦片存储模块中获取地图显示所须影像数据,包括待显示瓦片的编号、屏幕坐标、像素数据等信息,将瓦片像素数据以纹理方式贴附至三角网模型,形成影像地图的无缝拼接用于最终显示。

      b)WinCE平台地图显示

      WinCE平台支持的图像数据渲染大致可分为GDI、OpenGL ES。

4 WinCE图像渲染模式

渲染方式

说明

GDI

具体极强版本适用型,针对嵌入式设备进行优化,接口调用简便,易于实现

OpenGL ES

具有跨编程语言、跨平台接口规范,针对嵌入式环境进行优化,支持2D/3D

       虽然OpenGL ES库具有跨平台编译、兼容2D/3D等优越特性,但对于WinCE平台仅兼容高版本的操作系统和硬件设备[7-8]。通过调研分析,主流配发设备搭载WinCE5.0操作系统,且硬件不支持OpenGL ES渲染,因此选择GDI图形库进行影像瓦片的渲染工作,具有稳定性高、硬件兼容性强、易于开发等优点。

4 测试分析

       从不同数量影像金字塔构建前后磁盘占用情况与影像多图幅显示缩放耗时两个核心环节出发,进行抽样对比测试分析。如图10所示,随着原始影像数据量不断增大,对应瓦片包的磁盘占用空间始终处于较低水平,且缓慢增长;基于Android端(配置信息如表5所示)开展了多图幅缩放耗时情况进行分析,跨层数据更新响应速度均小于1.5s,满足用户体验需求,如图11所示。

 10金字塔构建前后对比分析

5 Android平台配置信息

配置项

说明

操作系统

Android4.4.2

处理器

ARM架构

主频

668.71MHZ

内存

800MB

11多图幅缩放耗时分析

5结论

       提出一种适用于多种嵌入式平台影像地图组织及显示方案,实现了满足设计要求与技术指标的影像数据组织与显示工具,很好地满足了移动终端特定应用需求。剖析数据组织流程,在影像瓦片数据加密、压缩等方面仍可做进一步深入研究,从而提高数据安全性及特定领域更好的适用性。

参考文献

[1]刘爱龙,杜清云,张东等;嵌入式环境下全球尺度瓦片地图数据组织与索引机制[J].武汉大学学报信息科学版,2015,40(4):516-520.

[2]杜清运,虞昌彬,任福;利用嵌套金字塔模型进行瓦片地图数据组织[J].武汉大学学报信息科学版,2011,36(5):564-567.

[3]libjpeg-turbo[EB/OL].2018. Https://libjpeg-turbo.org.

[4]方晓乐,吴永静,陈鑫祥等;一种适用于移动端瓦片地图的加密方法[J].测绘通报,2017,2017(2):116-119.

[5]刘爱龙,张东,陈涛等;跨平台嵌入式数字地图可视化中间件设计与应用[J].地球信息科学学报,2015,17(6):675-681.

[6]Chatterjee S, Strosnider J. Quantitative analysis of hard-ware support for real-time operating systems[J]. Real-Time Systems,1996,5(1):123-142.

[7]辛纳.Android C++高级编程-使用NDK [M].北京:清华大学出版社,2014.

[8]opengl在winCE系统的使用[EB/OL].2016.Https://blog.51cto.com/11496263/1828360.

作者基本信息

作者简介:姬英杰(1988-),男,硕士研究生,主要从事嵌入式GIS软件研制工作

联系方式:18710377670 邮箱:18710377670@163.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丢丢王子00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值