基于MPI的海量遥感影像并行处理技术探析*

2012-08-29 05:47石晓春邱宏华
全球定位系统 2012年6期
关键词:海量金字塔切片

申 焕,石晓春,邱宏华

(广东省国土资源测绘院,广东 广州510500)

0 引 言

随着遥感技术和数字摄影技术的快速发展,遥感影像数据的应用越来越广泛,已成为重要的数据源和数据更新的手段[1]。近年来,遥感技术研究的力度不断加大,各种新卫星不断升空,遥感数据源呈现出高空间分辨率、高光谱分辨率、高时间分辨率的发展趋势,传感器常常接收到超过1G的大数据量遥感影像[2]。

有效处理海量遥感影像数据,是解决诸如气象预报、资源普查、导航定位、农业生产、环境监测等领域遥感产品生产系统的大规模复杂应用的关键。国内外许多学者已进行大量研究,如袁帅等[3]在ArcInfo和Oracle8i的基础上,通过对影像数据分块存储、建立空间索引、元数据存储、完成了海量影像数据的管理;王俊等[4]对多图幅海量数据电子地图快速显示做了一系列研究;朱江等[5]基于Geo-Raster实现了海量影像数据的在线发布和共享;王佳等[6]提出了一种面向海量空间数据的并行UNION查询技术。针对目前通用的顺序处理已不能满足海量数据运算要求的问题,基于MPI并行处理开发环境,进行了海量遥感影像并行处理研究,大幅度地提高了海量遥感影像数据的运算速度。

1 技术背景

1.1 遥感影像切分与合成

遥感影像切分即将整幅遥感影像按照其金字塔分层的级别分割成若干小的图片,每个切片单独存储为一个文件,并按照一定的规则存储在文件系统中。遥感影像合成即将切片目录中的所有切片拼合在一起,形成一幅完整的影像,且该完整影像需复制切片的空间参考、仿射变换等信息。在影像切分之前,必须预先定义一组标准的影像切分参数,影像切分参数既能保证影像切分过程的一致性,也能保证影像切分后的影像切片信息描述的完整性。影像切分参数是影像根据以切片为单位显示或处理时坐标映射、影像显示的核心参数,包括:

1)切片大小(TileSize:xSize,ySize)

影像经过切分后生成许多小块的图片,称为切片(tile)。切片的宽(xSize)和高(ySize)一般相等,亦即我们通常使用正方形的切片,以像素为单位,通常有

切片的宽、高的尺寸应以大于等于128像素为佳。

2)图片格式

可以选用Png或Jpeg,图像质量比较好,并支持Alpha通道。

3)坐标系统

国际上坐标系统普遍采用的是欧洲石油勘探组织(EPSG),坐标参考系数集的编码表示法,各大GIS软件厂商几乎都支持EPSG表示法,GDAL同样支持EPSG表示法。开放地理信息联盟(OGC),标准中间参考系统的(SRID)与EPSG的空间参考系统的ID是一致的。

4)金字塔分级数

金字塔分级数是根据切片的尺寸来计算的。对于同一幅影像,不同大小的切片对应不同的金字塔分级数。确定了金字塔分级数,对原始影像重采样,建立影像金字塔。

5)仿射变换

仿射变换用含有6个元素的双精度浮点数数组来表示,描述了地图上像元行列坐标到地理参考空间的映射。

6)颜色对照表

16位的遥感影像(含1个波段)通常含有一个颜色对照表的记录,其DN值(Data Number)在0~255区间内取值,0~255内的每一个值对应着一个颜色值,DN值与颜色值的一一对应,便构成了颜色对照表。

1.2 MPI简介

消息传递接口(MPI)是目前比较流行的并行计算开发环境之一。MPI是一个并行计算消息传递接口标准,由 MPI论坛(MPI Forum)推出,该标准的目的是提高并行程序的可移植性和开发效率。MPI论坛是由欧美主要的并行计算机生产商,大学、政府实验室和工厂研究人员组成的一个非官方组织。MPI论坛在1994年6月正式推出了MPI的第一个版本MPI 1.0,又于1995年6月推出了MPI 1.1,对原有的版本进行了修改、完善和补充。1997年7月推出的MPI 2.0版本中,又加入了远程存储访问、并行I/O、动态进程管理等内容。MPI现在已经成为产业界广泛支持的并行计算标准。

1.3 MPI.NET开发环境配置

MPI.NET开发环境配置前需安装以下应用程序:首先安装 Microsoft Visual Studio 2005或更高版本;其次安装 MS-MPI,可安装 Microsoft HPC SDK 或者 Microsoft Compute Cluster Pack SDK,其中包含编写MPI程序需要的 MS-MPI的头文件。

上述文件安装之后,即可安装MPI.NET软件开发包,接着在Path环境变量中加入“C:\Program Files\Microsoft Compute Cluster Pack\Bin\mpiexec.exe”,再打开命令提示符窗口,将当前目录改变到MPI.NET的安装目录下(默认为C:\Program Files\MPI.NET),最后输入命令“mpiexec.exe–n 8PingPong.exe”,执行效果如图1所示。

图1 MPI运行示例

图1中所示,mpiexec程序启动了PingPong程序的8个进程,在PingPong中,秩(rank)为0的进程(这里为主进程)向其它进程发送ping命令,然后返回运行这些进程的计算机名,因为这里的8个进程运行在一台计算机上,这8个进程返回的计算机名是相同的。如果PingPong程序运行正确的话,说明MPI.NET安装成功,其后就可以开发MPI并行程序。

2 基于MPI的海量遥感影像并行处理技术实现

遥感影像的存储是二维数组,大部分遥感影像的处理都是对像素值的逐点处理,因此遥感影像的并行处理过程如下:

1)影像切分

利用影像切分算法将遥感影像切分成若干个合适的切片,具体算法如下:

①计算金字塔分级数

假设原始影像的宽度为RasterXSize,高度为RasterYSize,切片的尺寸为TileSize,则有:

将xLevel和yLevel两者取整后的最大整数作为金字塔的分级数。

②建立金字塔并重采样

GDAL提供的重采样的方法有Nearest、GAUSS、CUBIC、AVERAGE、MODE、AVERAGE_MAGPHASE等,这里选用Nearest方法。

这样便建立了影像金字塔,每一个overview对应金字塔的一层,overviewId=-1代表原始影像,overviewId的值越小,其比例尺越小,其分辨率越大。

③计算金字塔各层的仿射变换参数

如上所述,overviewid=-1代表原始影像,Transform[1]和Transform[5]分别表示影像在X方向和Y方向的分辨率,那么影像金字塔overviewid所对应的分辨率为

式中,xResolution、yResolution分别为原始影像在x方向和y方向的分辨率。

④坐标系统

利用GetProjection()方法读取原始影像的坐标系统:string proj=ds.GetProjection();

该方法的返回值为WKT格式的空间参考系,再利用SetProjection()方法设定切片的坐标系统:dsTile.SetProjection(proj);

⑤设定颜色对照表

利用GetRasterColorTable()方法获取原始影像相应波段的颜色对照表:ColorTable ct=bandIn.GetRasterColorTable();

再利用原始影像相应波段的颜色对照表设定切片相应波段的颜色对照表:

bandOut.SetRasterColorTable(ct);

⑥切图,生成切片

已知原始影像的宽为RasterXSize,高为RasterYSize,切片尺寸为TileSize。

其中,nTileX、nTileY分别为在X、Y 方向上能够切分的足额切片数,nPixelRemX、nPixelRemY分别为在X、Y方向上剩余部分。首先切分足额的切片部分,再切分X、Y方向的剩余部分,当剩余部分的宽度或高度<TileSize,无DN值处,以0值填充。

⑦记录原始影像大小

为了以后将切片合成为整幅影像的需要,需使用一个文本文件,记录原始影像的尺寸(因切片的综合尺寸与原始影像的尺寸不一定相符)。

2)按行对影像进行分块计算

每个切片的高度为h,并行运算计算机的节点数为n.将切片分成n块,每块有连续r行向量,r=h/n的整数部分,余数部分留给主节点处理。

3)将n块数据用send方法发送到各个计算节点因采用主从模式,秩(rank)为0的节点为主节点,主节点负责发送n块数据,接收各个节点的计算结果,并处理第0块数据和余数部分的数据。

4)各个子节点通过Receive方法接收从主节点发送来的数据块,采用一定的算法进行影像处理运算,并将运算结果通过Send方法发回主节点。

5)主节点利用Receive方法接收各个子节点的运算结果,将各运算结果合并,生成影像切片的最终处理结果。

6)继续循环,并行处理下一个影像切片。

7)影像合成

各切片均处理完成后,应用影像合成算法合成完整影像的最终运算结果,影像合成算法如下:

①从切片目录下的sizenote.txt文件中读取完整影像的尺寸信息,读取得到影像的宽度和高度,分别记为xSize、ySize;②创建用户指定格式的数据类型的驱动以用来创建新的栅格文件;③读取空间参考、仿射变换等信息;④创建数据集,并给其设置空间参考、仿射变换等信息;⑤遍历读取切片的DN值,并写入新建的数据集中;⑥保存文件。

3 结 论

当前所使用的并行处理遥感影像的技术是将主节点运算量按计算机节点平均分配,各子节点处理完后,将处理结果发回主节点,主节点将运算结果合并。这种不考虑子节点性能和运算时间的并行处理方式称为静态负载均衡。在今后的研究中,应该考虑使用动态负载均衡技术,即主节点负责发送数据,子节点负责处理数据,子节点处理完将结果返回给主节点,主节点接收到处理结果后,再次向该子节点发送待处理数据。这样,子节点一直有任务在进行,直至所有任务结束。

[1]王永会,宋晓宇,沈 晖.基于OLE Automation的GIS系统的开发方法[J].沈阳建筑工程学院学报,2000,16(2):140-142.

[2]王 桥,郑丙辉.环境遥感技术研究与应用进展[J].卫星应用,2006,14(1):35-40.

[3]袁 帅,宋晓宇,王永会,等.GIS海量影像数据管理系统的设计与实现[J].沈阳建筑工程学院,2003,19(3):236-239.

[4]王 俊,张文诗,王建涛.多图幅海量数据电子地图快速显示的研究与实现[J].测绘工程,2003,12(3):18-20.

[5]朱 江,张立立,曾志明,等.海量影像数据的发布集群系统与应用[J].地球信息科学,2006,8(2):101-105.

[6]王 佳,杨树强,贾 焰.面向海量数据的并行UNION查询技术研究与实现[J].微电子学与计算机,2006,23(10):68-71.

猜你喜欢
海量金字塔切片
“金字塔”
一种傅里叶域海量数据高速谱聚类方法
Great Vacation Places
新局势下5G网络切片技术的强化思考
5G网络切片技术增强研究
海量快递垃圾正在“围城”——“绿色快递”势在必行
网络切片标准分析与发展现状
浅析5G网络切片安全
金字塔是用金子造的吗
一个图形所蕴含的“海量”巧题