ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

国产卫星定标系数与光谱响应函数:6S大气校正参数包详解

国产卫星定标系数与光谱响应函数:6S大气校正参数包详解 简介国产卫星定标系数与光谱响应函数数据包面向遥感数据处理、GIS应用开发与科研人员用于解决高分系列GF和资源系列ZY卫星影像辐射定标、大气校正及地表参数反演中的关键参数获取问题。包内含94个文件以txt、json、xls、doc等格式为主其中json文件便于程序化读取xls/doc提供历年官方定标系数与光谱响应函数文档pdf和jpg则包含补充说明与元数据信息整体仅1.85MB。已有156人学习下载。数据覆盖GF-1、GF-2、GF-4、GF-6、ZY-3、ZY-1 02C、HJ-1A/B等多型卫星定标系数按年份整理2011—2019年光谱响应函数区分传感器与波段可与6S辐射传输模型无缝对接也可直接嵌入遥感处理流程用于批量大气校正。这份整理好的资料可帮助用户省去逐份查找官方参数的麻烦尤其适合需要精确辐亮度/反射率转换的科研与工程场景。1. 国产卫星定标系数和光谱响应函数一份能直接喂给6S和ENVI的参数包做国产卫星影像处理的人最先被卡住的往往不是算法而是定标系数和光谱响应函数这两个基础参数。很多人在ENVI里打开GF-1或者ZY-3的L1级影像直接做大气校正结果反射率高得离谱或者植被指数完全失真。问题就出在你用的还是传感器出厂时的默认参数而不是年度外场定标后的绝对辐射定标系数波段响应函数也是随便找了个相近的传感器顶上。这份《国产卫星定标系数和光谱响应函数.zip》其实是把国产卫星遥感数据处理最底层的黑匣子打开了——它整理了高分系列GF-1/GF-2/GF-4/GF-6、资源系列ZY-1 02C/ZY-3、环境系列HJ-1A/B、中巴CBERS-04等卫星从2011年到2019年的绝对辐射定标系数以及各传感器对应的光谱响应函数大部分数据同时提供了JSON和TXT两种格式方便程序直接读取。对于做定量遥感反演、长时间序列分析、或者用6S模型做大气校正的从业者来说这份参数包能直接用起来省掉大量到处找参数的时间。2. 定标系数读法JSON结构、Gain与Bias的物理含义以及从DN到反射率的完整换算2.1 为什么国产卫星必须用官方定标系数而不是随便填一个值卫星传感器在发射前会做实验室定标但入轨之后由于光学系统衰变、探测器老化、滤波器性能变化等因素传感器的响应特性会发生漂移。这就意味着出厂时的定标系数在几个月后就不再准确了。国产陆地观测卫星每年都会组织外场定标实验利用地面同步测量的数据反算传感器的定标系数更新增益和偏置参数。这份资源包里按年份整理的doc和pdf文档就是历年外场定标的官方记录。从资源包里的文件名能看出一个规律2012年、2013年、2014年、2015年、2016年、2017年、2018年、2019年基本上每年都有对应的定标系数文档。这说明不是随便找一套系数套用到所有年份就完事了必须按影像的获取日期选择对应年份的定标系数。实际工作中很多人图省事直接用最新的定标系数处理历史影像这在做长时间序列分析时会造成系统性偏差。定标系数的物理意义在于它把传感器记录的无量纲DN值转换成了具有物理含义的辐亮度或表观反射率。这个转换是定量遥感的基础——没有这一步你拿到手的只是一堆亮度值而不是地物真实的辐射特性。常见的转换公式是L Gain × DN Bias其中L是辐亮度Gain是增益Bias是偏置这两个参数就是定标系数的核心。2.2 JSON里的字段不是只有Gain和Bias从GF1_PAN1.json看标准结构资源包里有一个a.txt文件列出了所有文件的清单同时还提供了3个人整理的RadiationParam目录里面是各个传感器对应的JSON文件。以GF1_PAN1.json为例这个文件对应的是高分一号卫星的全色相机包含两个波段全色相机通常只有一个波段但GF-1的PAN1和PAN2分别对应两个全色传感器。打开这个JSON你会看到类似这样的结构{ Satellite: GF-1, Sensor: PAN1, BandNumber: 1, CalibrationDate: 2014-09, Gain: [0.1897], Bias: [0.0], CenterWavelength: [675.0], Bandwidth: [200.0] }逻辑说明这个JSON首先声明了卫星和传感器名称告诉使用者这套参数适用于哪颗星的哪个载荷。BandNumber表示波段数量Gain和Bias数组分别存储了每个波段的增益和偏置值数组中元素的位置与波段顺序一一对应。CenterWavelength和Bandwidth是辅助信息描述传感器的中心波长和带宽单位通常是纳米。参数说明Gain的值0.1897表示DN值每增加1辐亮度增加0.1897个单位辐亮度的单位一般是W/(m²·sr·μm)。Bias为0.0说明这个传感器的暗电流已经包含在定标处理中不需要额外加偏置。CenterWavelength和Bandwidth用于和光谱响应函数配套使用在6S模型模拟时作为初始参考值。不过在实际处理中你会发现JSON里Gain和Bias的值会随着定标年份变化。例如GF1_WFV4.json和GF1_WFV4.txt记录的是多光谱相机WFV4的四个波段2014年和2016年的系数明显不同。这意味着在使用时必须先确认影像的获取时间再选择对应年份的JSON文件。2.3 用Python把定标系数应用到L1级影像脚本、参数与验证拿到定标系数JSON之后最直接的应用就是把影像DN值转换为辐亮度。以下是完整的处理流程我用Python实现import json import numpy as np from osgeo import gdal # 读取定标系数 with open(RadiationParam/GF1_WFV4.json, r) as f: calib json.load(f) # 打开L1级影像 dataset gdal.Open(GF1_WFV4_L1A.tif) bands_count dataset.RasterCount # 检查波段数是否与定标系数匹配 if bands_count ! len(calib[Gain]): raise ValueError(波段数不匹配请检查影像和定标系数) # 逐波段应用定标系数 for i in range(bands_count): band dataset.GetRasterBand(i 1) dn band.ReadAsArray().astype(np.float64) # 关键定标公式L Gain * DN Bias radiance dn * calib[Gain][i] calib[Bias][i] # 保存结果为辐亮度 driver gdal.GetDriverByName(GTiff) out_ds driver.Create(fradiance_band{i1}.tif, dataset.RasterXSize, dataset.RasterYSize, 1, gdal.GDT_Float32) out_ds.GetRasterBand(1).WriteArray(radiance) out_ds.SetGeoTransform(dataset.GetGeoTransform()) out_ds.SetProjection(dataset.GetProjection()) out_ds.FlushCache() print(定标完成辐亮度单位W/(m²·sr·μm))逻辑说明这段脚本用GDAL库读取L1级影像的DN值然后从匹配的JSON文件里提取Gain和Bias数组。因为不同传感器定标系数的数组长度可能不同脚本先做了波段数校验避免后续数组越界。核心操作是那行radiance dn * calib[Gain][i] calib[Bias][i]这一步将每个像元的DN值线性转换成了辐亮度。参数说明定标系数的Gain数组中的每个元素对应一个波段顺序不能搞混。GF1_WFV4的Gain数组应该是四个值分别对应蓝、绿、红、近红外四个波段。Bias通常很小或者为0但不要忽略它在高动态范围场景下Bias的影响不可忽略。做完定标后可以随机选取几个像元手动用计算器验证取DN值乘以Gain再加Bias和脚本输出的辐亮度对比如果完全一致就说明处理正确。这是我每次都强制走一遍的验证步骤可以杜绝代码逻辑错误导致的批量异常。3. 光谱响应函数怎么用从TXT/XLS到6S模型波段响应文件3.1 光谱响应函数是大气校正的关键输入不是可有可无的元数据光谱响应函数描述的是传感器在每个波长位置上的响应灵敏度。理论上说传感器的波段并不是严格意义上正好覆盖某段波长而是在中心波长附近有一个响应曲线边缘波长的响应逐渐衰减到零。6S模型、MODTRAN等辐射传输模型在模拟大气校正参数时需要输入每个波段的光谱响应函数才能精确计算大气透过率和路径辐射。很多人做大气校正时图省事直接用中心波长和带宽近似代替光谱响应函数。但对于宽波段传感器来说比如GF-1的WFV相机单波段带宽接近100纳米忽略光谱响应函数的形状会造成几个百分点的反射率误差。在植被指数等比值运算中这个误差会被放大导致NDVI出现明显偏差。这就是为什么需要真实的光谱响应函数数据。资源包里光谱响应函数分几种格式GF系列主要是xls和xlsx表格ZY系列和HJ系列是txt文本还有一份汇总的SRF.txt。TXT格式的波长单位一般是微米比如ZY-3多光谱相机的响应函数就是每行一个波长值和一个响应值。3.2 TXT、XLS、XLSX三种格式的差异以及SRF.txt这个汇总文件三种格式虽然都是表达波长-响应值的对应关系但使用场景不同格式优势适用场景代表文件TXT直接读取无依赖程序批量处理和6S输入HJ1A-CCD1-光谱响应函数.txtXLS可查看曲线方便手动检查数据分析和归档GF-1-16m多光谱相机1-光谱响应函数.xlsXLSX容量更大兼容性好表格数据管理GF-6 WFV1-光谱响应函数.xlsxSRF.txt是一个汇总文件把所有传感器的光谱响应函数合并在一起用传感器名称作为分段标识。这个文件适合快速查找但实际做6S输入时还是建议用单独的传感器文件避免解析错误。打开GF-1的光谱响应函数xls文件你会看到两列第一列是波长单位通常是纳米第二列是对应波长上的响应值归一化后最大值为1。其中GF-1-16m多光谱相机1到4对应的是WFV1到WFV4四个多光谱相机。虽然都是16米分辨率的多光谱传感器但四个相机的光谱响应函数并不完全相同这一点在处理GF-1影像时要特别注意。3.3 把xls格式转成6S需要的.txt注意波长范围和归一化处理6S模型要求的光谱响应函数输入格式相对固定纯文本一行两个数值第一列是波长微米第二列是相对响应值。但原始xls文件的波长单位可能不统一有的是纳米有的是微米有的响应值已经归一化有的还是原始计数值。我通常用Python做格式转换import pandas as pd import numpy as np # 读取xls格式的光谱响应函数 df pd.read_excel(GF-1-16m多光谱相机1-光谱响应函数.xls, headerNone, skiprows1) wavelength_nm df.iloc[:, 0].values # 第一列是波长纳米 response df.iloc[:, 1].values # 第二列是响应值 # 波长从纳米转换为微米 wavelength_um wavelength_nm / 1000.0 # 归一化处理确保响应值最大为1 response_norm response / np.max(response) # 过滤掉无效值 valid ~np.isnan(wavelength_um) ~np.isnan(response_norm) wavelength_um wavelength_um[valid] response_norm response_norm[valid] # 按波长升序排序 sort_idx np.argsort(wavelength_um) wavelength_um wavelength_um[sort_idx] response_norm response_norm[sort_idx] # 输出为6S格式的txt文件 with open(GF1_WFV1_srf_6s.txt, w) as f: for w, r in zip(wavelength_um, response_norm): f.write(f{w:.6f} {r:.8f}\n) print(f转换完成共{len(wavelength_um)}个采样点) print(f波长范围{wavelength_um[0]:.3f} ~ {wavelength_um[-1]:.3f} 微米)逻辑说明这个脚本先把xls文件读取为DataFrame结构第一列当作波长第二列当作响应值。因为6S模型要求波长单位为微米脚本对波长做了单位换算。归一化的操作很重要——有些传感器的原始响应值是探测器计数数值从几万到几十万不等如果不归一化6S模型在计算等效辐照度时会把振幅当作权重导致模拟结果完全错误。参数说明跳过的第一行通常是表头信息比如波长nm和响应值之类的文字。不同整理者的xls文件表头位置可能不同我做转换时会先手动打开文件确认前两行的内容。归一化使用最大峰值作为分母但严格意义上应该用整个波长范围内的积分面积做归一化这一点在后面的避坑章节细说。4. 用6S做大气校正的完整链路以GF-1 WFV1为例4.1 搭建6S输入参数几何、气溶胶、水汽以及定标系数的作用点6S模型是太阳光谱波段的卫星信号模拟程序做大气校正时它的作用是从表观反射率中去除大气散射和吸收的影响得到地表真实反射率。要跑通6S需要准备几类输入参数传感器和太阳的几何角度、大气模式、气溶胶模式及光学厚度、目标海拔和传感器高度、以及传感器的光谱响应函数。几何参数从影像头文件里能直接读取。GF-1的L1级产品自带RPC文件和元数据XML里面记录了太阳高度角、太阳方位角、卫星观测天顶角等参数。对于GF-1 WFV1来说一个场景内的角度变化可以忽略不计取头文件里的平均值就行。大气模式选择中纬度夏季或中纬度冬季具体看影像的获取季节。气溶胶模式一般选大陆型能见度根据当天空气质量设定如果没条件查当天的气溶胶光学厚度数据默认用23公里能见度也能出一个可以接受的结果。定标系数在这个链路里的作用点是把DN值转换为辐亮度然后再换算成表观反射率输入给6S作为校正对象。在6S的交互式运行中需要逐项输入参数最后6S会输出大气校正的系数用来把表观反射率转换为地表反射率。4.2 生成6S配置文件并批量跑多个波段6S模型可以用交互式命令行运行也可以通过输入文件实现批处理。为了把WFV1的四个波段全部跑完我用Python脚本生成6S的输入文件# 6S输入文件示例GF1_WFV1_B1.txt # 几何参数太阳天顶角30.5太阳方位角160.2观测天顶角8.4观测方位角112.3月份8日期15 0 30.5 160.2 8.4 112.3 8 15 # 大气模式中纬度夏季 2 # 气溶胶模式大陆型 1 # 能见度23公里 23 -1000 # 目标海拔0.1公里传感器高度-1000表示卫星平台 0.1 -1000 # 光谱响应函数文件 1 GF1_WFV1_srf_6s.txt # 输出选项 0生成6S输入文件的Python脚本如下import json # 读取定标系数JSON获取波段中心波长范围 with open(RadiationParam/GF1_WFV1.json, r) as f: calib json.load(f) # 6S输入文件的公共部分模板 def generate_6s_input(filename, srf_file, solar_zenith, solar_azimuth, view_zenith, view_azimuth, month, day): content f0 {solar_zenith:.1f} {solar_azimuth:.1f} {view_zenith:.1f} {view_azimuth:.1f} {month} {day} 2 1 23 -1000 0.1 -1000 1 {srf_file} 0 with open(filename, w) as f: f.write(content) print(f已生成{filename}) # 为WFV1的每个波段生成输入文件 # 不同波段使用各自对应的光谱响应函数文件 for band in range(1, 5): srf_file fGF1_WFV1_band{band}_srf_6s.txt out_file fGF1_WFV1_band{band}_6s_input.txt generate_6s_input(out_file, srf_file, solar_zenith30.5, solar_azimuth160.2, view_zenith8.4, view_azimuth112.3, month8, day15)逻辑说明脚本通过读取JSON定标系数中的波段信息为WFV1的每个波段生成一个独立的6S输入文件。每个波段的输入文件都会指向该波段专属的光谱响应函数文件避免不同波段混用。参数说明sun_elevation和satellite_zenith是几何参数需要从影像头文件获取。month和day是影像获取日期用于确定太阳辐射模型。气溶胶模式选1对应大陆型能见度设置为23公里是6S的默认推荐值。目标海拔设为0.1公里表示影像覆盖区域近似平原。4.3 从6S输出的反射率怎么换算成地表反射率一个完整示例6S模型运行完成后会输出一组相关系数通常在结果文件末尾。我重点看的是其中三个COEF1表示表观反射率和地表反射率之间的线性斜率COEF2是截距COEF3是表征大气路径辐射的参数。然后利用6S输出的总透射率数值把表观反射率校正为地表反射率import numpy as np # 6S输出参数假设已经手动从结果文件中读取 # 这些值会因几何参数和大气条件变化每次运行都有可能不同 coef1 0.9872 # 斜率 coef2 0.0035 # 截距 total_trans 0.7421 # 大气总透过率 # 读取定标后的辐亮度 radiance np.fromfile(radiance_band1.raw, dtypenp.float32) radiance radiance.reshape((1024, 1024)) # 计算表观反射率需要太阳辐照度和太阳天顶角 # ESUN是波段等效太阳辐照度单位W/(m²·μm) esun 1923.5 # 表观反射率 π * L * d² / (ESUN * cos(θ)) pi np.pi d 1.0 # 日地距离订正因子8月中旬约等于0.97 solar_zenith_rad np.radians(30.5) rho_toa pi * radiance * d**2 / (esun * np.cos(solar_zenith_rad)) # 用6S输出系数计算地表反射率 # 地表反射率 (ρ_TOA - Coef2) / (Coef1 * 总透过率) rho_surface (rho_toa - coef2) / (coef1 * total_trans) # 限制异常值范围 rho_surface np.clip(rho_surface, 0.0, 1.0) print(f表观反射率范围{rho_toa.min():.4f} ~ {rho_toa.max():.4f}) print(f地表反射率范围{rho_surface.min():.4f} ~ {rho_surface.max():.4f})逻辑说明这段代码先读取辐射定标后的辐亮度数据然后利用太阳辐照度将辐亮度转换为表观反射率。这个转换是标准公式关键在于ESUN值的选取这个值由光谱响应函数和太阳光谱共同决定6S模型在模拟时会自动给出该波段的等效太阳辐照度。参数说明日地距离订正因子d随日期变化1月约0.9837月约0.967如果对精度要求不高可以近似为1。6S输出的coef1和coef2直接用于地表反射率的校正total_trans代表大气透过率这些参数的具体数值每次运行都可能不同即使是同一景影像的两个波段也一样。我一般会在6S运行完成后先检查coef1是否在0.8到1.2之间coef2是否接近0。如果偏离太多往往是光谱响应函数文件有问题或者气溶胶参数设置不合理。5. 避坑指南这些参数配错定标和大气校正全白做5.1 2017年外场定标系数为什么不能直接套到2020年影像上现象用2017年的定标系数处理2020年获取的GF-2影像计算出来的地表反射率整体偏低特别是近红外波段NDVI值异常偏高。原因卫星传感器在轨运行期间会发生持续的辐射衰减尤其是多光谱波段探测器灵敏度和光学系统透过率逐年下降。外场定标实验得到的定标系数只反映当时的传感器状态2020年传感器的实际响应已经发生变化。解决必须使用与影像获取年份最接近的定标系数。如果影像获取年份在资源包中没有对应的系数比如2020年获取的GF-2影像建议用2019年的系数作为近似或者找中国资源卫星应用中心当年发布的最新定标系数。做长时间序列分析时最好对每一年做一次定标一致性检查。5.2 GF1_WFV4.json存在但GF1_WFV1-3只有txt没有json怎么办现象代码统一读取JSON文件时发现GF1_WFV1、GF1_WFV2、GF1_WFV3只有TXT格式没有JSON格式直接报文件不存在错误。原因资源包整理时按不同的数据来源批次整理GF1_WFV4可能是后补的JSON格式其他几个相机只保留了TXT格式。不同批次的整理格式没有完全统一。解决先用a.txt文件或者直接看RadiationParam目录确认每个传感器的实际格式。对于TXT格式的定标系数其内容通常是两列Gain和Bias或者是一行标题行加一组数值。读TXT时注意跳过首行注释然后手动构造和JSON相同的字典结构。我一般会写一个小的转换函数把TXT格式统一转成JSON后续代码逻辑就不用区分格式了。5.3 HJ1A_CCD1只有json没有txtZY3_02只有json没有txt直接拿json替换可能会有坑现象在6S模型中输入HJ1A_CCD1的光谱响应函数时按txt读取失败因为该文件在资源包里是JSON格式。强行把JSON中的数据按txt格式解析波长和响应值的对应关系混乱。原因光谱响应函数资源的格式在整理过程中存在不一致不同传感器维护的格式版本不一样。解决在脚本中对每个文件做格式探测根据文件扩展名选择解析方式。JSON格式的光谱响应函数通常是一个数组每个元素包含wavelength和response两个字段,直接提取即可。如果是xls格式还需要额外处理表头和单位信息。建议先把所有格式统一下来再进入6S流程。5.4 光谱响应函数归一化时用错了最大值现象6S模拟得到的大气透过率和等效太阳辐照度异常表观反射率换算系数偏离正常范围。原因部分传感器的原始光谱响应数据没有做归一化最大值不是1而是探测器计数。直接除以这个原始最大值做归一化会导致6S模型在计算过程中把单位当作相对比例造成量纲错误。解决归一化应该除以整个波长范围内的积分面积而不是简单地除以峰值。因为我发现有些整理者在导出的txt里已经做了峰值归一化而有些保留了原始值。稳妥的做法是读取数据后先检查最大值是否接近1误差在1%以内如果明显大于1则除以整个波长范围内响应值的积分而不是峰值。5.5 定标系数的单位不是你想的那样现象用GF-2的定标系数计算出来的辐亮度数值在10的3次方量级但手动核对后发现和官方文档提供的示例差了一个数量级。原因定标系数文档中辐亮度的单位可能是mW/(m²·sr·μm)而不是W/(m²·sr·μm)。高分系列卫星的定标系数文档在2016年之后统一使用W/(m²·sr·μm)但早期文档用的是mW/(m²·sr·μm)。解决在处理每一套定标系数之前先查看对应年份的doc或pdf文档里的单位说明。如果单位是mW在应用公式L Gain × DN Bias之后需要再乘以0.001转换为W单位或者直接在Gain值上乘以0.001。这个单位坑我第一次处理2013年HJ-1A数据时踩过一次从那以后每换一个年度或传感器都会先确认单位再批量跑。6. 一个进阶技巧用光谱响应函数合成GF-1的宽波段反射率做多星传感器一致性验证处理长时间序列的多源遥感数据时经常遇到不同传感器对同一种地物的观测结果不一致的情况。这种不一致除了定标误差外还有一个重要原因不同传感器的光谱响应函数不同即使是都叫近红外波段GF-1 WFV4的近红外波段中心在830纳米ZY-3多光谱相机的近红外波段中心也在相近位置但两者的响应曲线形状有差异。把不同传感器的波段反射率进行一致性分析时先用光谱响应函数做加权合成能大幅降低波段差异带来的系统误差。具体做法是以GF-1 WFV1的光谱响应函数为基准模拟其他传感器在该基准下的等效反射率import numpy as np # 读取GF-1 WFV1的光谱响应函数 def load_srf(filename): data np.loadtxt(filename) wavelengths data[:, 0] # 微米 responses data[:, 1] return wavelengths, responses # 读取ZY-3多光谱相机近红外波段的光谱响应函数 wavelengths_gf1, response_gf1 load_srf(GF1_WFV1_srf_6s.txt) wavelengths_zy3, response_zy3 load_srf(ZY3_01_MSS_srf_6s.txt) # 对ZY-3的响应函数插值到GF-1的波长网格上 response_zy3_interp np.interp(wavelengths_gf1, wavelengths_zy3, response_zy3) # 计算加权合成权重以GF-1响应为权重ZY-3响应为被积分对象 # 等效反射率 ∫(ρ_zy3(λ) * SRF_gf1(λ) * SRF_zy3(λ)) dλ / ∫(SRF_gf1(λ) * SRF_zy3(λ)) dλ numerator np.trapz(0.25 * response_gf1 * response_zy3_interp, wavelengths_gf1) denominator np.trapz(response_gf1 * response_zy3_interp, wavelengths_gf1) equivalent_reflectance numerator / denominator print(fZY-3近红外波段在GF-1 WFV1基准下的等效反射率{equivalent_reflectance:.4f})逻辑说明这个脚本先读取两个传感器的光谱响应函数然后通过插值把ZY-3的响应值对齐到GF-1的波长采样点。等效反射率计算时用两个传感器的响应函数乘积作为权重对反射率进行加权平均。公式中的0.25只是示意值实际使用时应代入ZY-3影像经过定标和大气校正后的真实反射率光谱值。实际操作中我会对同一地区的GF-1和ZY-3影像分别做辐射定标和大气校正然后提取各波段的反射率用上述方法把ZY-3的反射率转换到GF-1的等效波段。对比转换前后的NDVI差异如果两者的植被指数差超过0.05就要检查是定标系数的问题还是光谱响应函数文件选取的问题。这个流程在我处理高分辨率卫星时序数据时是固定的前置验证步骤它能帮我在进入正式的遥感反演之前排除掉由传感器差异引入的系统误差。参数说明np.trapz是SciPy库的数值积分函数积分区间是被积函数的横坐标范围。波长单位必须统一否则积分结果会出现数量级误差。插值时使用numpy的interp函数做线性插值如果两个传感器的波长范围重叠较少插值结果会失真这种情况建议换用重叠范围内的数据计算权重。每次处理新的传感器组合时我第一件事就是检查两者的光谱响应函数曲线重叠程度——如果重叠面积太小那这组数据不适合直接做交叉校正。从那以后我每次换传感器做长时间序列都会先跑一遍这个加权合成脚本检查波段响应差异再决定要不要做交叉校正。这份参数包现在还在我移动硬盘里躺着希望帮到你。本文还有配套的精品资源点击获取
返回列表