遥感卫星数据预处理功能扩展模型设计与实现
2021-01-20肖鹏李景山
肖鹏,李景山
(1.中国科学院大学,北京 100094;2.中国科学院空天信息创新研究院,北京 100094)
0 引言
遥感卫星地面接收站接收的遥感卫星下行的遥感原始数据是二进制的码流数据,这些数据无法直接应用于社会各领域,必须先进行帧同步、解扰、译码、去格式、解压缩、相对辐射校正、系统几何校正等处理,将所获取的二进制码流数据处理生成用于归档的0级数据或初级的产品数据,这个阶段就是遥感卫星数据预处理过程[1-2]。数据预处理是将遥感原始数据加工生成初步产品的过程,是遥感卫星数据从原始码流到能实际应用产品的关键步骤。遥感卫星技术的快速发展,给社会各领域带来了巨大的经济效益,但同时由于在轨运行的卫星遥感器种类的不断增长,也给遥感卫星地面系统数据预处理功能的集成与扩展带来了难题。以高分系列卫星为例,从2013年至今就已发射了7颗,这7颗高分卫星所获取和下传的遥感原始数据格式和预处理方式各不相同。例如高分一号与高分四号的卫星数据,前者为线阵电荷耦合元件(charge coupled device,CCD)图像传感器成像,而后者为面阵CCD图像传感器成像,因此二者原始数据中图像数据和卫星辅助姿态数据的排列格式互不相同;同时高分一号卫星原始数据中的图像数据在下传之前经过了压缩处理,而高分一号卫星的图像数据则未经过压缩处理,所以预处理过程中,前者包含解压缩操作,而后者无需解压缩操作。由此可见,如何建立一个通用的、多卫星适用的遥感卫星数据预处理框架模型,以实现地面系统预处理功能扩展是遥感卫星地面系统设计的必须解决的一个技术难题。
针对遥感卫星数据预处理难点的研究,国内外已有学者对此提出来一些探讨和设计。比较有代表性的比如,陈元伟[3]提出基于面向对象的设计方法以及工厂模式的设计思想,设计实现了通用多卫星地面预处理系统中功能模块的框架,该框架可以在不改变模块结构的前提下实现新卫星数据处理功能的添加,以此实现多卫星的功能扩展性。李传荣等[4]提出了通用遥感数据并行处理框架,该框架集成了遥感数据预处理并行任务调度、消息和数据交换、故障管理等公共功能,并设计实现了简单易用的插件接口规范,以支持多载荷、多种遥感数据预处理功能的扩展以实现并行处理,具有较好的通用性和功能扩展性。
虽然国内外学者对于遥感卫星数据预处理的研究众多,但在实现模型的多卫星适用性时,采取的主流设计方法都是基于简单工厂方法的设计模式。在具体的设计实现中,为每一颗特定的卫星设计一个特定的处理方法,这样在实际应用过程中,针对特定的卫星型号,调用与之对应的处理方法,以此实现该设计对于多卫星、多载荷的适用性。简而言之,传统的实现遥感卫星数据预处理模型可扩展性的方法,其本质只是多个卫星数据处理类方法的叠加。对于一个新的卫星,传统的模型要实现对这颗卫星数据预处理功能,就需要在算法层面增加新卫星的处理类方法代码,工作量大且操作复杂。
针对上述中传统遥感卫星数据预处理模型在实现可扩展性时存在的缺点,本文通过分析不同光学成像遥感卫星数据的格式特点以及数据预处理的基本原理,对数据预处理中的各项业务流程实现模型化,提出了一种适用于多颗光学成像遥感卫星的数据预处理功能扩展模型。通过对主要业务流程模块化,建立各业务流程模块的子模型,使得只需在该功能扩展模型中添加新卫星在各个子模型中的配置文件,无需增加新的处理程序代码,就能实现对该卫星的数据预处理功能。
1 模型的建立
由于我国目前的主流卫星都采用高级在轨系统协议(advanced orbiting systems,AOS)标准作为数传系统的数据标准组织格式,所以本文提出的数据预处理功能扩展模型适用于遵循AOS格式标准的卫星数据。从数据预处理的具体流程来说,遥感卫星数据预处理主要包括帧同步、解扰、译码、去格式、解压缩等处理生成0级数据进行归档,或者再进行相对辐射校正、系统几何校正等处理生成初级产品数据进行归档[5]。后续产品处理基于0级数据或者初级产品数据进行处理。其主要流程如图1所示。
图1 遥感卫星数据预处理流程图
本文提出的数据预处理功能扩展模型旨在利用若干个模块步骤,将上述流程都包含在各个模块之中,并对各个模块实现模型化,以此确立整个遥感卫星数据预处理流程的标准模型。
1.1 模型的整体结构
根据数据预处理所完成的基本功能,结合实际的应用需求,本文提出的功能扩展模型将预处理流程分为通道数据分离、条带数据形成、分景、相对辐射校正和系统几何校正5个流程模块,对每个流程模块都建立相应的子模型,每个子模型主要包括各自的输入文件、模块执行程序、模块配置文件以及输出文件。功能扩展模型结构如图2所示。
图2 功能扩展模型结构图
如图2所示,本文提出的数据预处理功能扩展模型由5个子模型构成,每个子模型都由输入文件、执行程序、配置文件和输出文件4个部分组成。图中的通道数据表示卫星的有效载荷数据,例如高分五号卫星的可见光短波红外高光谱数据,称为一组通道数据,它又是由4片并列的面阵CCD探测器所得到的信号数据所组成,文中将一片CCD所探测并下传的数据称为一个虚拟信道数据。通道数据分离模块所完成的工作为将所输入的原始码流数据,根据该卫星的AOS帧数据格式,进行相应的帧同步、解交织、解扰等操作。再根据解扰之后的数据中特定的虚拟信道标识位,将属于同一通道的若干个虚拟信道的有效数据从中提取出来,形成对应的各通道数据。
条带数据形成模块则是从通道数据中包含的各虚拟信道数据中将卫星辅助姿态数据以及图像数据分离出来,根据虚拟信道之间的关系将其图像数据进行拼接,形成完整的该通道的条带数据。分景模块所完成的工作为从条带数据解析出以景为单位的TIFF影像。相对辐射校正模块所完成的工作主要为消除每景影像的CCD成像拼接处的条带黑色拼缝以及影像的系统椒盐噪声。系统几何校正模块所完成的工作为根据相应的严格成像模型,对输入的影像进行系统几何校正,以输出具有地理坐标信息的二级影像。
在实际运用中,对于添加新卫星的数据预处理流程,首先配置该卫星在模型中各模块子模型的配置文件,模型各模块程序通过读取各自的配置文件,获得该卫星的基本参数信息,实现自动处理。本文所提出的数据预处理功能扩展模型由5个子模型组成,所以本文模型的主要研究重点,就是对各个模块进行模型化,建立各模块对应的子模型,确定各个子模型中输入文件和输出文件的标准格式、模块执行程序的主要功能以及模块配置文件的内容信息。
1.2 子模型的建立
整个功能扩展模型中各个子模型的建立是本文的主要内容,整体的研究思路就是分析各个模块中所涉及的卫星参数,并参照这些卫星参数在不同的卫星数据中格式的异同,总结出卫星参数的所有格式情况,以配置文件的形式,在配置文件中统一表示出模块所需的所有卫星基本信息。同时定义各个模块子模型输入文件以及输出文件的标准格式,为各个模块子模型执行程序的设计实现提供理论依据。简单来说,每个子模型都是由特定的输入文件、配置文件、执行程序和输出文件4个部分构成。以下将就功能扩展模型中5个子模型的建立和实现进行详细描述。
1)通道数据分离。通道数据分离模块的输入文件为卫星的原始码流数据,输出文件为由若干个虚拟信道数据组成的通道数据。其主要工作包括帧同步、解交织、解扰、解格式,再将属于同一通道的若干个虚拟信道的数据组合成对应的各通道数据。对于不同的卫星,此时得到的通道数据一般都采用了不同的压缩算法进行过压缩,或者未经过压缩。所以在实际应用中,对于通道数据经过压缩的卫星数据,在得到了各通道数据之后,一般还需第三方软件进行解压缩,进一步输出解压缩后的各个通道数据。通道数据分离模块所涉及的卫星基本信息主要为从卫星原始码流中提取的AOS帧格式信息,以高分四号卫星数据为例,其原始码流数据的AOS帧格式如表1所示。
尽管不同的卫星所采用的AOS帧格式在具体细节上各不相同,但在整体内容上基本一致。通道数据分离主要包括帧同步、IQ解交织、解扰、解格式等操作,其中涉及的具体卫星信息参数除AOS帧格式外,主要还包括IQ交织信息、加扰信息等。所以只要能够在配置文件中包含这些卫星基本信息,就能够实现通道数据分离模型对所有卫星的适用性。由此定义通道数据分离模块的子模型如图3所示。
表1 高分四号卫星AOS帧数据格式表
图3 通道数据分离模块子模型图
其中,配置文件的主要内容和标准格式如下。
<通道信息>
<通道1>
……
通道1>
通道信息>
……
2)条带数据形成。条带数据形成模块的输入文件是上一模块所输出的通道数据,输出文件为该通道长条带状的影像二进制文件和对应的卫星辅助姿态数据文件等。对于高分四号这种面阵CCD成像的卫星数据,其条带数据定义为一轨中所有景影像按成像时间顺序所排列组合成的长条带状的影像二进制文件。
每组通道数据都有若干个虚拟信道数据,其中包含卫星遥感影像的辅助数据和图像数据。在条带数据形成时,必须根据虚拟信道数据中特定的编排格式将其中的辅助数据和图像数据进行解析,然后再重组成条带数据。
这一模块所涉及的卫星参数主要为虚拟信道数据中辅助数据和图像数据的编排方式。具体来说:一是辅助数据和图像数据在每一帧数据中所处的位置;二是辅助数据区和图像数据区自身内部的数据格式。以高分一号卫星数据说明,图4为8 m虚拟信道中的辅助数据及图像数据编排格式。
图4 高分一号卫星虚拟信道数据格式图
不同卫星的虚拟信道中每帧数据虽然格式上各不相同,内容上都包含图像数据和辅助数据2种。辅助数据排列方式虽然各不一样,但都包含轨道6根数、时间、卫星位置、卫星速度、卫星姿态角、星敏四元数这些参数中的若干个。
综上确定条带数据形成模型配置文件的基本信息包括:通道内各虚拟信道数据之间的关系,以及虚拟信道数据中的辅助数据和图像数据的编排格式。前者包括虚拟信道数据的拼接顺序、重叠像素量等,后者包括虚拟信道中每一帧的数据格式以及该虚拟信道对应的成像CCD的基本信息。由此定义条带数据形成模型如图5所示。
图5 条带数据形成模块子模型图
图6 条带数据形成模块子模型附图
其中,配置文件的主要内容和标准格式如下。
<虚拟信道信息>
…
虚拟信道信息>
<辅助数据和图像数据相互关系信息>
…
辅助数据和图像数据相互关系信息>
<辅助数据排列信息>
…
辅助数据排列信息>
<图像数据排列信息>
…
图像数据排列信息>
3)分景。分景模块的输入文件为上一模块输出的各条带的影像二进制文件,输出文件为条带数据所包含的各景影像的TIFF文件。约定条带数据采用BIL的存储方式,所以该模块涉及的信息仅包括该卫星不同通道单景影像的波段数、影像行列数以及相邻影像之间重叠的行数。对于面阵CCD成像的卫星数据,其配置文件中重叠行数严格为0,影像行数应严格等于面阵CCD的实际行数,否则会导致分离出单景影像内地物不连续;对于线阵CCD成像的卫星数据,默认其配置文件中重叠行数为单景影像的15%,单景影像行数一般设置为与列数相等,但不做强制要求。由此定义分景模块的模型如图7所示。
图7 分景模块子模型图
其中,配置文件主要内容和标准格式如下。
<影像信息>
<通道1>
通道1>
<通道2>
……
通道2>
……
影像信息>
4)相对辐射校正。相对辐射校正模块的输入为分景模块中输出的某景的TIFF影像,输出文件为经过相对辐射校正的TIFF影像。在本文中,相对辐射校正主要为对影像CCD成像拼接处的条带黑色拼缝的消除,采用基于矩匹配的条带去除模型[6-7]。此外,采用统计的方法统计出影像上系统椒盐噪声点的像素坐标信息,并将其写入卫星载荷的相对辐射定标文件中,后续用均值滤波的方法进行噪声点去除。
经过前3个模块的处理,卫星数据在这一模块已不存在较大格式上的差异,由此定义相对辐射校正模块的子模型如图8所示。
图8 相对辐射校正模块子模型图
其中配置文件的内容为对应相对遥感器辐射定标文件的路径。
5)系统几何校正。系统几何校正模块的输入文件为相对辐射校正输出的TIFF影像以及影像对应的辅助姿态数据文件,输出文件为经过系统几何校正具备地理信息的TIFF影像。不同的卫星数据在这一模块主要表现为辅助姿态数据文件的格式与内容各不相同。例如高分一号卫星为线阵CCD成像,其影像每一行都有对应不同的卫星辅助姿态数据,包含卫星GPS位置、卫星速度、卫星姿态角、星敏四元数等;而高分四号卫星为面阵CCD成像,其一幅影像只有一组辅助姿态数据,包括卫星轨道6根数、卫星姿态角、星敏四元数等。
根据输入的辅助姿态数据的格式不同,系统几何校正采用的校正模型又分为2种[8-9]。当辅助姿态数据为卫星姿态角时,采用地心地固坐标系(earth-centered earth-fixed,ECEF)下严格成像模型,该模型的计算需要经过4次坐标转换,成像如式(1)所示。
(1)
当辅助姿态数据为星敏四元数时,采用地心惯性坐标系(earth centered inertial,ECI)下的严格成像模型。其原理与前者基本相同,不同点在于该模型下本体坐标会转换到地心惯性坐标系下,因此本文需要将地心惯性系转换到地心地固系,其成像如式(2)所示。
(2)
综上定义系统几何校正模型如图9所示。
图9 系统几何校正模块子模型图
配置文件主要内容和标准格式如下所示,其中传感器几何定标文件内容为对应卫星载荷的内外方位元素。
<几何校正信息>
<辅助数据信息>
辅助数据信息>
几何校正信息>
2 模型的算法实现
本文提出的功能扩展模型的5个模块子模型都是由输入文件、执行程序、配置文件和输出文件4部分组成,其中配置文件的规范化、模型化是该模型具有多卫星适用性的前提,而执行程序则是模型能够实际应用的前提。所以,本节内容将详细讲述各个模块在建立子模型之后,如何在算法层面实现执行程序的实际设计。
2.1 通道数据分离
通道数据分离模块的执行程序在算法层面主要包含AOS格式帧同步、IQ解交织、解扰和解格式4个功能函数。其算法结构如图10所示。
图10 通道数据分离程序算法结构图
其中,Synchronize()函数通过读取卫星的基本配置文件,获取同步字、加扰信息、虚拟信道信息等卫星基本信息,匹配到每一帧数据的帧头位置,输出帧同步之后的数据。Deinterlever()函数将输出的帧同步数据进行IQ解交织,在算法实现层面上,即每一次读取2倍帧长的数据,将其中的奇数位bit数据和偶数位bit数据分离,形成新的2帧数据。Descramble()函数则将上述输出的数据根据特定的扰码序列,对每一帧数据中的加扰区域进行解扰。最后的Interpretate()函数则根据解扰后的帧数据,从中提取出各通道包含的各个虚拟信道的数据。
2.2 条带数据形成
条带数据形成模块的执行程序在算法层面主要包含虚拟信道数据帧同步、辅助数据解析和图像数据解析3个功能函数。其算法结构如图11所示。
图11 条带数据形成程序算法结构图
其中的Synchronize()函数为将虚拟信道的数据进行帧同步操作,基本原理和通道数据分离模块中的AOS格式帧同步一致。PosDataDeal()函数通过读取模块配置文件中的卫星参数信息,确定虚拟信道数据中卫星辅助姿态数据的位置,并对各个属性值进行解析,主要包括卫星3个姿态角、星敏四元数、卫星位置、卫星速度等信息的解析。ImgDataDeal()函数先确定图像数据的位置及排列方式,对影像灰度值进行解析。再形成影像条带数据二进制文件,统一约定采用2个字节表示单个像素的排列方式,其中第一字节为低bit位,第二字节为高bit位,存储方式为BIL方式。
2.3 分景
分景模块的执行程序在算法层面主要包含影像行信息计算、星上切机判断和影像成图3个功能函数。其算法结构如图12所示。
图12 分景程序算法结构图
其中,ComputeLineInfo()函数通过读取模块配置文件,获取影像的行列数以及相邻影像的重叠行数,以此计算当前该景影像在该轨条带数据中的起始行和末尾行,并从条带数据中读取对应的影像灰度值信息。假设某卫星在分景模块的配置文件中,该卫星数据的第n景影像的起始行和末尾行分别记作startline和endline。那么startline和endline的计算如式(3)、式(4)所示。
startline=(i-k)*(n-1)
(3)
endline=(i-k)*(n-1)+i-1
(4)
式中:单景影像行数为i;相邻影像重叠行数为k。
对于线阵CCD推扫式成像的卫星,经常出现星上切机的情况,这时就不能够简单地通过配置文件信息来判断当前景的起始行和末尾行。IsMoveCamra()函数读取模块配置文件,当相邻影像重叠行数为0时,判断该卫星为面阵CCD成像卫星,不存在星上切机,函数返回值为false,影像始末行信息不变;否则为线阵CCD成像卫星,进行是否星上切机判定。通过分析其行时文件的连续性,当检测到行时文件中计时器值出现跳变或倒转时,则判定出现星上切机情况。此时,设置该景影像的末尾行为切机的前一行。
CreatImgTif()函数为影像生成函数,主要为影像灰度值的解析和借助GDAL库生成影像TIFF文件。
2.4 相对辐射校正
相对辐射校正模块的执行程序主要包括条带拼缝去除和系统椒盐噪声去除2个功能函数,其算法结构如图13所示。
图13 相对辐射校正程序算法结构图
其中,PieceFit()为条带黑色拼缝去除函数,本文涉及采用矩匹配的去除模型,模型计算如式(5)所示。
(5)
式中:X,Y分别为第i列影像像素校正前后的灰度值;σr,μr为理想状况下的参考列灰度值的标准方差、均值;σi,μi为待校正列的影像灰度值的方差、均值。
SpNoiseFit()函数为系统椒盐噪声点的去除,通过去读取相对辐射校正定标文件中噪声点的像素坐标,采用均值滤波进行平滑处理。CreatTif()函数为影像生成函数。
2.5 系统几何校正
由于系统几何校正采用的严格成像模型分为2种,所以在该模块执行程序实现中,在算法层面采用工厂设计模式,添加了CtsSensorModel类方法和CisSensorModel类方法,分别应用于ECEF坐标系下的严格成像模型和ECI坐标系下的严格成像模型。其中基类AbstrCorrect中主要包括旋转矩阵的计算、像素坐标到经纬度的计算、经纬度到像素坐标的计算、影像灰度值重采样成图这4个功能函数。程序算法结构如图14所示。
图14 系统几何校正程序算法结构图
其中,ImgimgRay()函数主要为旋转矩阵的计算,2种不同类方法包括2种不同的计算方法。LineSampleToWorld()函数是基于严格成像模型公式的影像像素坐标到经纬度坐标的计算函数,WorldToLineSample()函数分别为经纬度坐标到影像像素坐标的转换,其计算主要依据LineSampleToWorld()函数的反酸迭代。CorrectTiff()函数根据经纬度计算出的影像像素坐标,在原影像上利用双线性插值的方法进行灰度值重采样,生成校正过后的影像TIFF文件,并写入地理信息。
3 实验验证与分析
本文以高分一号、高分二号、高分四号、高分五号以及高分六号的原始码流数据作为实验数据,并借助第三方软件对高分一号、高分二号、高分五号、高分六号所输出的通道数据进行解压缩处理。各个模块程序运行在有5台机器组成的机群服务器上,每台服务器配置2颗4核的Intel Xeon E5620处理器和24 GB内存;实验数据存储在服务器内部署的LUSTRE并行文件系统之上。以下将详细描述本文提出的功能扩展模型中各个子模型应用于高分系列卫星数据适用性实验与相关实验结果。
通道数据分离模型程序的测试输入数据为高分四号卫星原始码流数据文件,得到可见光近红外通道数据(包括5个虚拟信道数据)和中红外通道数据(包括1个虚拟信道数据)。
条带数据形成模型程序的测试输入数据为高分一号、高分二号、高分四号和高分五号的通道数据,输出文件为该通道的条带数据、辅助姿态数据以及行时数据文件。
用ENVI软件依次打开各颗卫星条带数据的实验结果如图15所示,其中从左往右依次为高分一号、高分二号、高分四号、高分五号卫星,显示行数都为10 000行。
图15 高分系列卫星条带数据图
分景模型程序的测试输入文件为上文中5颗卫星的条带数据,输出文件为该条带所包含的所有景影像TIFF文件,为高分五号卫星的分景输出数据(图16)。
图16 高分五号分景数据输出文件图
相对辐射校正程序的测试输入文件为各卫星的原始TIFF影像,输出文件为去除了条带拼缝和系统椒盐噪声点的TIFF影像。图17显示了高分二号卫星影像相对辐射校正前后对比图,选取校正后影像的均匀地物,利用平均标准差法测得相对辐射精度为2.1%[10],满足基本需求。
图17 高分二号影像相对辐射校正前后对比图
系统几何校正程序的测试输入文件为各卫星经相对辐射校正后的TIFF影像,输出文件为具备地理信息的TIFF影像。图18为高分一号卫星影像系统几何校正前后对比图。通过在天地图上选取影像同名控制点,测得校正后影像的几何定位精度约为120 m。后期经过分析影像内同名点的误差,方向大小基本一致。将影像上的地物与地理控制点信息库进行同名点匹配,根据匹配得到的地理位置偏差,将影像再进行仿射变换,可达到2~3个像素的精度。对比资源卫星同一影像,其几何定位精度为30~40 m,经过仿射变换达到的1~2个像素的精度。结合二者的精度对比,可知本文模型的实验结果,满足基本需求。
经过上述实验证明,本文研究的功能扩展模型具备高分一号、高分二号、高分四号、高分五号和高分六号卫星数据的预处理功能,可通过添加配置文件的方式添加功能扩展模型对于目前已有的高分系列光学卫星的数据预处理功能。
图18 高分一号影像系统几何校正前后对比图
4 结束语
本文针对遥感卫星数据预处理功能难以扩展的问题,通过分析不同卫星数据的格式特点以及数据预处理的基本原理,提出并实现了一种适用于多卫星的遥感卫星数据预处理功能扩展模型。文章以高分系列卫星的数据格式为参考标准,充分考虑了已有的各种光学卫星数据可能出现的格式。从数据的编排格式,到成像CCD的种类,再到卫星辅助姿态数据的格式,在配置文件中统一规范地表示了目前已知的卫星格式参数信息,以此实现了只须添加新卫星在各个子模型中的配置文件,就能添加对该卫星的数据预处理功能的数据预处理功能扩展模型。
实验结果表明,本文提出的功能扩展模型对于高分系列光学卫星数据具有良好的适用性,各个模块的配置文件都能统一体现出目前已有的高分系列卫星的数据格式特点。但随着遥感卫星技术的快速发展,卫星数据的格式也可能出现新的样式,各模块的配置文件也需要与时俱进的更新。后续有待于对模型进行进一步优化,采用配置文件的方式描述尽可能多系列的卫星数据格式,进一步提高模型的适应性。此外,本文提出的模型只适用于光学成像遥感卫星,对于高分三号这种雷达遥感卫星却并不适用。如何用配置文件的方式描述出非光学卫星的数据格式特点,将是本文模型更深一步的研究方向。