简介:《GOCI2 说明手册 波段信息说明》面向海洋遥感、水色数据处理与卫星传感器定标方向的学习者,系统梳理GOCI-II各波段的中心波长、带宽和辐射亮度指标,帮助理解波段设置与海洋观测能力之间的对应关系。压缩包内仅1个PDF文件,约2.93MB,以技术演示页和参数表为主,涵盖GOCI与GOCI-II波段对比、名义辐射亮度、最大海洋/阈值/最大云辐射亮度、NEdLSNR,以及月球定标计划、MTF测量、视场与月球成像可行性等内容。已有1161人学习,适合用于传感器参数查阅、波段匹配和辐射定标流程入门。读者可据此快速定位关键表格与结构示意,建立从波段参数到定标验证的整体认识,并作为海洋色遥感数据预处理的参考材料。
1. 12 个波段和一张月历:GOCI-II 为什么要去月球上做定标
翻开 GOCI2 的波段信息说明,最容易被一眼扫过去的是两张表:一张 12 行的波段表,列着中心波长、带宽、名义辐射亮度和等效噪声;一张按月份排的月球成像窗口表,列着每个月能拍几天、几点开拍、能拍多久。前一张看着像出厂参数抄录,后一张看着像排班表,但它们回答的是同一个问题——一颗每天盯着同一片海的静止轨道传感器,在轨跑上几年之后,凭什么让下游相信它测到的辐亮度还是准的。水色遥感的信号动态范围窄,离水辐亮度只占入瞳辐射的一小部分,绝对精度要求却很高;太阳漫反射板会衰减会污染,光学件在真空里也在缓慢变化。于是定标参考被搬到了月球:没有大气、没有天气、光照几何可以精确算出来、表面反射特性在几十年尺度上稳定。搞懂这条链路,那些看起来枯燥的参数是怎么定的、为什么这么定,就都顺了。
2. 波段表不是参数罗列:中心波长、带宽与四种辐射亮度指标
2.1 中心波长选在哪:每一个数都对应一条水体的光谱特征
12 个波段的中心波长分别是 380、412、443、490、510、555、620、660、680、709、745、865 纳米,另外第 13 个是中心波长 643.5 纳米、带宽 483 纳米的宽带通道。这串数字排在一起看不出什么,拆开就是一套针对水体光学特性的组合拳。
380 和 412 纳米站在短波端,主要对付有色溶解有机物和悬浮颗粒的短波吸收,蓝紫波段的离水信号弱、大气瑞利散射强,属于典型的高难度波段,但少了它们,黄色物质的吸收系数就解不出来。443 纳米是叶绿素 a 的强吸收峰附近,是水色反演最核心的通道之一;490 和 510 纳米作为蓝绿过渡,用来分辨不同藻种的吸收斜率,也用来在浑浊水体里做校正。555 纳米是叶绿素的反射峰位置,常作为归一化基准,把其他波段的反射率除上它,消掉一部分观测几何和大气带来的公共项。
红光段是重头戏。620 纳米靠近悬浮泥沙的反射上升段,660 纳米落在叶绿素反射峰的另一侧,680 纳米带宽只有 10 纳米,是为了把叶绿素荧光那条窄发射线和周围的红光分开——带宽再放宽几纳米,荧光信号就被背景红光淹掉了。709 纳米同样是 10 纳米窄带,对应藻华和赤潮在高生物量时的后向散射峰,这个位置既要能分辨峰位,又不能被 680 纳米的荧光拖尾污染。745 纳米是经典的近红外大气校正基线,水在这个波长几乎全吸收,卫星看到的离水辐射近似为零,所以测到的值基本就是气溶胶散射加地表反射,拿它去约束大气校正模型;865 纳米带宽放宽到 40 纳米,因为它主要服务气溶胶光学厚度和水汽柱的反演,那些光谱特征本身很平缓,没必要浪费带宽去换取并不存在的分辨能力。
| 波段 | 中心波长 (nm) | 带宽 (nm) | 名义辐亮度下 SNR |
|---|---|---|---|
| B1 | 380 | 20 | 998 |
| B2 | 412 | 20 | 1050 |
| B3 | 443 | 20 | 1145 |
| B4 | 490 | 20 | 1128 |
| B5 | 510 | 20 | 1180 |
| B6 | 555 | 20 | 1124 |
| B7 | 620 | 20 | 1102 |
| B8 | 660 | 20 | 1060 |
| B9 | 680 | 10 | 914 |
| B10 | 709 | 10 | 914 |
| B11 | 745 | 20 | 903 |
| B12 | 865 | 40 | 788 |
| B13 | 643.5 | 483 | 未定义 |
最后一行值得单独说一句。643.5 纳米、483 纳米带宽这一行,手册里只给了中心波长和带宽,辐射亮度和噪声指标全是空的。这种通道通常不承担定量反演任务,它横跨红光到近红外一大片,作用是云检测和防止亮目标饱和:云顶反射率比海面高两三个数量级,窄带通道很容易打满,宽带的积分能量大、动态范围粗,拿来判云、判陆地、判异常亮目标刚好合适。看到规格表里有一行"缺指标"就跳过,是最常见的误读。
2.2 带宽与信噪比的兑换关系:为什么窄带必须付出代价
带宽定多宽,本质上是在光谱分辨率和信噪比之间做兑换。在被散粒噪声限制的探测器里,信号光电子数正比于入瞳能量,而它能做到的上限又受光学口径和积分时间约束,所以实际可用带宽的收窄,等于直接拿 SNR 去换光谱分辨。
这一点在表格里能直接读出来:20 纳米带宽的波段,名义辐亮度下的 SNR 普遍在 1100 上下;收窄到 10 纳米的 680 和 709,SNR 掉到 914;而 745 纳米虽然保留 20 纳米,SNR 是 903,因为它对应的辐亮度本身低——近红外波段的太阳光谱辐照度已经明显下降,海面又几乎不反射,落到探测器上的能量就不多。865 纳米把带宽放到 40 纳米,SNR 却只有 788,是全表最低,原因同样是信号太弱,加带宽只是止血,止不住。
我一般会这么理解这张表:每个波段的 SNR 数字不是"做得越高越好"的结果,而是"在这个带宽下,给定口径、积分时间和探测器噪声,能拿到多少就是多少"的产物。反过来推,如果某个波段的 SNR 明显低于同带宽的邻居,那多半是它的目标辐亮度本来就低,或者是探测器在该波段的量子效率有坑。做数据质量排查时,这张表比任何文档都好用:某景影像某波段的噪声突然变大,先对一下是不是回到了表里的量级,再往下查,能省掉大量时间。
2.3 四种辐射亮度:一个波段为什么要写四个数
波段表里除了中心波长和带宽,还有四个容易混淆的量:名义辐亮度、最大海洋辐亮度、阈值辐亮度和最大云辐亮度,加上一个等效噪声辐亮度。
名义辐亮度是"典型海洋场景"下的期望值,它是所有 SNR 指标的定义点。手册里写"SNR @ Nominal radiance",意思是 SNR 这个数只在名义辐亮度处成立,辐亮度往低调,信号变弱,SNR 会跟着掉,不是全动态范围恒定的。最大海洋辐亮度对应最亮的合法海洋场景,比如高浑浊度近岸水、密集藻华,它决定了量化位深和增益档位的上限。阈值辐亮度是保证不饱和的门槛,超过它就进入非线性区。最大云辐亮度则是为云准备的余量——云不是观测目标,但传感器不能因为云就把整景数据废掉,云检测本身也需要云顶信号不被截顶。
这四个数一起,才描述清楚一个波段的动态范围设计。只盯 SNR 一个指标去评价传感器,是把动态范围压成一个点来看,很容易得出错误结论:一个 SNR 很高的波段,如果阈值辐亮度定得低,遇到藻华就饱和,实际可用性反而不如一个 SNR 略低但动态范围宽的波段。
2.4 光机结构里和波段直接相关的那几个部件
波段怎么切分,最终要落到硬件上。这份手册给出的光机组成里,和光谱直接挂钩的是滤光轮、焦平面组件和指向镜机构,外面罩着遮光罩和快门罩,通过四个双脚架式的安装点接到卫星接口上,焦平面上还配了热分流结构。滤光轮负责在波段之间切换,这就解释了一个关键设计事实:GOCI-II 不是一台同时成多波段像的推扫式相机,而是靠滤光轮分时曝光,每个波段单独一帧。
分时曝光的直接后果是,不同波段看到的海面不是同一时刻的。对静止轨道上的慢变化目标影响不大,但对月球这种在视场里快速移动的目标,就是硬约束——每个波段的积分时间必须足够短,否则波段之间月球已经挪了位置,配准会出问题。这也是后面过采样校正必须认真做的根源。
3. 视场与月球成像窗口:静止轨道上的几何约束是怎么变成一张月历的
3.1 ±8.6° 和 ±11.4°:视场余量是为月球留的
手册给出的视场是东西方向 ±8.6°、南北方向 ±11.4°。把这两个数拆开看,能看出很明确的设计意图。
东西方向:地球全盘张角约 8.06°,加上 0.5° 的指向偏差余量,凑成 8.6°。也就是说东西向的视场基本就是"刚好装下地球再留一点瞄准误差",没有多余空间。
南北方向:地球盘 8.7°,加仪器视场 1.1°,加月球和恒星可用的 1.1°,再加 0.5° 指向余量,正好 11.4°。多出来的 2.2°,全部是为了让月球和恒星能在不做姿态机动的前提下进入视场。
这就是整个月球定标方案的第一块基石。静止轨道卫星做一次滚转机动,代价远不止耗燃料:姿态扰动会传导到平台上其他载荷,热控和电源要重新平衡,数据下传计划要重排,一次计划外的机动可能牵连一整天的观测任务。所以方案里把"不做机动"写成第一优先级,靠视场本身的设计把月球"接"进来。月球每个月沿白道穿过视场一次,卫星什么都不用做,等着就行。
3.2 七条优先级准则:把"能不能拍"翻译成可执行的判据
月球进视场只是第一步,能不能拍、拍出来的能不能用,要靠一串判据筛。手册列了七条,按优先级排,这个排序本身就是设计思想。
第一条,月球必须在视场内,且不做姿态机动。这条是硬门槛,不满足直接出局。第二条,必须在标称运行时段内,也就是卫星本地时的 05:15 到 19:45 之间。这个时段之外,能源和热控状态不在设计包线里,成像质量没有保证。第三条,月相照明面积要超过 50%。这条直接关联模型精度:ROLO 模型在中小相位角区间拟合得最好,越靠近满月,可用信号越强、相对不确定度越低;但满月一个月只有一次,不一定落在窗口里,所以门槛放到一半,剩下的交给模型去消化。
第四条,成像时间不能和平台上另一台载荷的操作时间完全重叠。静止轨道平台的资源是共享的,数据率、电源、热耗都有配额,两个载荷同时满负荷工作会互相挤占。第五条,单日连续可观测时长不小于 10 分钟。一次月球定标不是拍一张照片就完事,要覆盖多个波段、要拍多帧做平均、要做暗电流和背景扣除,10 分钟是完成一整套序列的最低需求。
第六条容易被忽略:要避开地球杂散光区。月球图像如果离地球盘太近,地球散射光会从遮光罩边缘漏进来,把月面边缘的辐亮度抬高,积分出来的辐照度整体偏大。手册给出的保护带是距地球盘 1°。这一条的优先级排在月相之后,意味着当月相和杂散光冲突时,宁可牺牲一点月相也不要把地球光放进来——因为杂散光是系统性偏差,月相带来的模型误差至少还能量化。
第七条,相位角要落在最优区间。原因是 ROLO 模型相对不确定度随相位角变化,典型量级在 1% 左右,不是全区间均匀;同时漫射板老化监测装置也需要特定相位角范围才能给出有效结果。这条是"精益求精"级别的约束,前六条筛完还有多个候选窗口时,用它来挑最好的那个。
注意:这七条是有顺序的,不是并列打分。前一条不满足,后面几条再漂亮也没意义。实际排窗口时先做几何筛选(第一条、第六条),再做时序筛选(第二条、第四条、第五条),最后才用月相和相位角排序,顺序错了会白算很多候选。
3.3 一年 12 个月的观测窗口:为什么有的月份只有 3 天
按这套准则筛出来的 2019 年月历,是这样的:
| 月份 | 可观测天数 | 推荐成像时长 |
|---|---|---|
| 1 月 | 21 | 30 分钟 |
| 2 月 | 3 | 30 分钟 |
| 3 月 | 12 | 38 分钟 |
| 4 月 | 12 | 46 分钟 |
| 5 月 | 11 | 29 分钟 |
| 6 月 | 21 | 30 分钟 |
| 7 月 | 22 | 39 分钟 |
| 8 月 | 22 | 43 分钟 |
| 9 月 | 11 | 30 分钟 |
| 10 月 | 21 | 11 分钟 |
| 11 月 | 4 | 12 分钟 |
| 12 月 | 3 | 44 分钟 |
可观测天数从 3 天到 22 天,跨度接近一个数量级;推荐成像时长从 11 分钟到 46 分钟,也差四倍。这两个量的变化都来自同一个原因:月球相对视场的穿越路径。白道与赤道的夹角、月球赤纬的月变化,决定了月球在南北方向上穿过 ±11.4° 视场时的弧长和速度。赤纬接近极值时,月球贴着视场边缘走,能停留的时间短、满足全部七条准则的日子就少;赤纬接近零时,月球横穿视场中心区域,可用的日子多、单次可用时长也长。
10 月和 11 月那两个 11 分钟、12 分钟的窗口,是最难处理的情形。时长刚好卡在 10 分钟门槛之上,留给多波段序列的余量很薄,任何一个环节超时——比如滤光轮切换慢了、姿控稳定需要更长的建立时间——整套序列就得截断。排计划的时候,我会把这类短窗口当作"低置信度候选",优先用长窗口的数据做趋势,短窗口的数据只做补充,并且在处理链里明确标记来源,避免在做长期序列拟合时把两种质量的数据混在一起平均。
4. ROLO 模型:月球反射率为什么要写成一个九项多项式
4.1 对数域里的九项展开:每一项在描述什么
月球定标的核心参考是 ROLO 模型给出的全盘等效反射率。手册里给出的形式是:
ln Ak = Σ(i=0..3) ai·g^i + Σ(j=1..3) bj·Φ^(2j-1) + c1·θ + c2·φ + c3·Φ·θ + c4·Φ·φ + d1·exp(-g/p1) + d2·exp(-g/p2) + d3·cos((g-p3)/p4)其中 Ak 是第 k 个波段的全盘等效反射率,g 是绝对相位角,θ 是卫星在月面坐标系下的纬度,φ 是卫星的月面经度,Φ 是太阳的月面经度,其余是逐波段标定出来的系数。
这个式子看着吓人,拆开其实就四组物理含义。第一组是相位角的三次多项式,是主导项,描述月相从新月到满月再到新月过程中整体亮度的变化,月球表面是强后向散射的,相位角一小,亮度陡增,所以低阶项撑起主趋势,高阶项修形状。第二组是太阳月面经度的奇次幂(一次、三次、五次),描述太阳照射方位变化带来的亮度调制,用奇次幂是为了保持符号反对称——经度正负对称的两侧,几何关系镜像,亮度变化应当反号。第三组是线性与交叉项,把卫星的月面纬度和经度引进来,描述天平动:月球虽然有潮汐锁定,但轨道偏心和轨道倾角会让地面站看到月面边缘之外的一点点区域,视角的微小变化会对全盘反射率产生可测的影响。第四组是三个特殊项,前两个是指数衰减项,描述小相位角时的冲效应——月球表面颗粒的阴影在接近零相位角时被完全隐藏,亮度出现陡峭的非线性上升;第三个是余弦项,描述冲浪的形状细节。
取对数不是数学上的偏好,是工程上的必然。月球反射率在不同相位角之间能变一个数量级以上,用乘法结构去拟合,各波段的系数会跳得没法看;取对数之后变成加性结构,各波段可以共用同一套函数形式,只是系数不同,标定和版本管理都简单得多,而且指数映射天然保证反射率恒为正,不会出现负反射率这种物理上无意义的拟合结果。
逐波段的系数表长得像这样(这里只摘几个代表性波段,实际表覆盖全部 12 个波段):
| 波段 | 中心波长 (nm) | a0 | a1 | a2 | a3 | d3 |
|---|---|---|---|---|---|---|
| B1 | 380 | -2.53875 | -1.73218 | 0.424342 | -0.22212 | -0.00502 |
| B3 | 443 | -2.32145 | -1.71791 | 0.375473 | -0.19491 | 0.008859 |
| B8 | 660 | -1.89995 | -1.58457 | 0.308405 | -0.18034 | 0.012067 |
| B12 | 865 | -1.74580 | -1.58485 | 0.350134 | -0.19572 | 0.009775 |
从这张表能读出一点东西:a0 随波长单调上升(-2.54 到 -1.75),因为红端月面反射率整体高于紫外端;a1 的量级都在 -1.6 到 -1.7 之间,说明相位角的一次项在各波段上行为接近,这是月球表面散射相函数的共性;d3 从负变正,说明冲浪的形状在短波和长波之间发生了翻转,短波的冲效应更尖锐,长波更平缓。这种跨波段的规律性,是检查系数表有没有抄错的最好工具——如果某个波段的 a1 突然偏到 -1.2 或 -2.0,八成是排版或版本错位。
4.2 从反射率到辐照度:为什么必须在光谱响应函数上做积分
有了 Ak,下一步是把它变成卫星能测到的辐照度。手册给出的积分月球参考光谱辐照度是:
IROLO_Ref(B,t) = (ΩM/π) · ∫ E_SUN(λ)·R(λ,B)·A(B,t) dλ / ∫ R(λ,B) dλ单位是 W·m⁻²·μm⁻¹。这里面每个符号都有讲究。E_SUN 是参考太阳光谱辐照度,R(λ,B) 是第 B 个波段的光谱响应函数,A(B,t) 是 ROLO 给出的全盘反射率,ΩM 是月球在卫星处张开的立体角,手册给的常数是 6.4177×10⁻⁵ 球面度。除以 π 是把双向反射分布函数转换成朗伯等效辐射亮度,再乘立体角得到辐照度。
分母那个 ∫R(λ,B)dλ 是关键。它是一个归一化因子,保证分子分母同量纲,等价于把光谱响应函数看成一条带权重的采样窗,而不是一个点。为什么不能省掉这一步、直接用中心波长的值乘一下?
原因在两个地方。一是太阳光谱本身在 20 纳米宽度内不是平的,短波端尤其陡,380 纳米附近的太阳光谱梯度大,直接用中心波长的值会引入系统性偏差;二是月球反射率在波段内也有斜率,红端比蓝端更平缓,但仍有可测的倾斜。两者相乘,等效于在波段内做了一次加权平均,中心波长的值只是这个加权平均的一个粗糙近似。更麻烦的是夫琅禾费线——太阳光谱在 400 到 700 纳米之间布满窄吸收线,如果某条线正好落在响应函数的峰值附近,中心波长取值的误差会明显放大。
短波波段的偏差最大,这不是巧合:太阳光谱在紫外和蓝端的梯度最陡,夫琅禾费线的密度也最高。所以做这条链路的时候,光谱响应函数的采样间隔至少要 1 纳米,响应小于万分之一的地方也建议保留一两个点再截断,别在响应函数的边缘硬切,那里一个采样点的差异会直接传到积分结果上。
import numpy as np def rolo_disk_reflectance(coef, g_deg, theta_deg, phi_deg, phi_sun_deg): """按 ROLO 模型计算全盘等效反射率 Ak(对数域九项展开) coef: 逐波段系数字典,含 a0..a3, b1..b3, c1..c4, d1..d3, p1..p4 g_deg: 绝对相位角,单位度,内部转弧度 theta_deg / phi_deg: 卫星在月面坐标系下的纬度 / 经度 phi_sun_deg: 太阳月面经度 """ g = np.deg2rad(g_deg) theta = np.deg2rad(theta_deg) phi = np.deg2rad(phi_deg) phis = np.deg2rad(phi_sun_deg) ln_a = coef['a0'] + coef['a1'] * g + coef['a2'] * g**2 + coef['a3'] * g**3 # 太阳经度项用奇次幂,保证经度符号翻转时调制量反对称 ln_a += coef['b1'] * phis + coef['b2'] * phis**3 + coef['b3'] * phis**5 # 天平动线性项与交叉项 ln_a += (coef['c1'] * theta + coef['c2'] * phi + coef['c3'] * phis * theta + coef['c4'] * phis * phi) # 冲效应:两个指数项 + 一个余弦项 ln_a += coef['d1'] * np.exp(-g / coef['p1']) ln_a += coef['d2'] * np.exp(-g / coef['p2']) ln_a += coef['d3'] * np.cos((g - coef['p3']) / coef['p4']) return np.exp(ln_a)这段代码严格照着公式写,没有任何优化。工程上唯一值得改动的地方是相位角接近零时的数值稳定性:指数项 exp(-g/p1) 在 g 趋于零时趋近于 1,本身没问题,但 g 的测量误差在这个区间会被指数放大,所以相位角小于零点几度时,建议把相位角的精度来源(星历版本、时间戳精度)一并记录下来,否则后面追溯不出偏差是谁贡献的。
4.3 CDIS 距离校正:为什么参考辐照度不能直接用
ROLO 给出的参考辐照度是在一组参考距离下标定的,而实际观测时,日地距离在一年内变化约 3.4%,地月距离在月内变化超过 10%。这两个变化都按平方反比进入信号,量级远大于模型本身的 1% 不确定度,不做校正,比值因子会被轨道几何彻底带偏。
手册的写法是 IROLO(B,t) = IROLO_Ref(B,t) · CDIS(t),其中 CDIS 是日月与月卫之间的距离校正因子。常见的实现思路是把两个平方反比项乘起来:
CDIS(t) = (AU / d_sun_moon(t))² · (d_ref / d_sat_moon(t))²第一个因子把太阳辐照度从 1 AU 归一到当时的日地距离,第二个因子把月球辐照度从参考地月距离归一到当时的地月距离。两个因子都必须是时间 t 的连续函数,从星历里插值得到,不能用当天的平均值——月球在 30 分钟的成像窗口里走过的距离变化虽小,但对 1% 量级的精度目标来说,已经不是可以忽略的量。
这里有个容易忽略的细节:d_sun_moon 是日月距离,不是日地距离。月球绕地球转,日月距离在月内也有变化,虽然相对日地距离只有千分之几,但和模型精度同量级。手册给出的符号写得很清楚,照着做就行,不要图省事用日地距离近似。
5. 常见问题与排查:这条定标链路上最容易翻车的几个环节
5.1 光谱与系数层面的坑
第一条,拿上一代传感器的系数直接套到新一代上。现象是算出来的比值因子出现随波段的系统性台阶,短波偏高、长波偏低,怎么调时间窗都调不平。原因很直接:两代仪器的中心波长、带宽、光谱响应函数全变了,ROLO 系数是按各自的光谱响应函数重新标定的,手册里逐波段给出的那 12 组系数就是为此单独准备的,不是通用常数。解决的办法是把光谱响应函数文件和系数表绑成一个版本单元,一起入库、一起打标签;代码里读系数时不接受"默认表",必须显式指定版本号,缺了就直接报错退出。
第二条,用中心波长代替光谱响应函数的积分。现象是蓝光波段的比值因子比红光波段偏得更厉害,而且偏差随季节轻微摆动。原因是太阳光谱在短波端梯度陡、夫琅禾费线密集,中心波长取值只能近似加权平均,偏差在蓝端被放大;季节摆动则来自日地距离变化改变了光谱的整体形状。解决办法是把积分做扎实:响应函数按 1 纳米采样,边界外延到响应小于万分之一再截断,积分用梯形法就够了,误差远小于采样本身带来的误差。
5.2 几何与时序层面的坑
第三条,时区换算把日期算错。现象是拍出来的月球图像偏出视场,或者只剩小半个盘面。原因是手册里的窗口时间用的是卫星本地时,转成协调世界时时,凌晨附近的窗口会跨日,如果只减小时不加日期偏移,就会整整差一天。这个坑我在不止一个项目里见过,属于典型的"血泪经验"。解决办法是全链路内部统一用协调世界时,本地时只在最后展示层出现;写一个转换函数,里面加断言,转换前后日期差必须落在合理区间,不满足就抛异常,别让它静默通过。
第四条,优先追满月,结果撞上地球杂散光。现象是满月图像的月面边缘辐亮度异常抬高,积分辐照度比邻近月份的同样月相数据高出几个百分点,比值因子曲线上出现孤立尖峰。原因是满月时月球离地球盘角距最小,地球散射光最容易从遮光罩边缘漏进视场,而月相和杂散光这两条准则在排序上是冲突的。解决办法是把"距地球盘 1° 保护带"当硬约束,在候选窗口上先做几何筛选,再做月相和相位角排序;筛选逻辑固化在脚本里,不要靠人肉看图判断。
5.3 模型与后处理层面的坑
第五条,过采样校正的乘除搞反。现象是比值因子随积分时间单调漂移,积分时间越长偏得越多,而换成短积分时间的数据又能对上。原因是 GOCI-II 用的是二维面阵加步进凝视成像,没有推扫相机那种扫描速率问题,但积分时间内月球和卫星都在动,图像在焦面上被拉长,校正因子的定义是"月球实际角直径除以图像中的角尺寸",图像拉长时这个比值小于 1,它应该乘在哪一侧、除在哪一侧,取决于前面辐亮度是"拉长前"还是"拉长后"的量。定义链一旦搞混,方向就反了。解决办法是拿同一晚的短积分和大积分两组数据做交叉验证:如果校正后两组结果一致,方向就是对的;差得越多说明方向越错。
第六条,直接拿比值因子去更新逐像元的辐射增益。现象是定标后图像出现块状条纹,平坦区域反而不平了。原因是月球像在单次成像里只落在探测器的一部分像元上,而 ROLO 模型只能给出全盘积分辐照度,没有空间分布信息;用这样一个全局标量去改逐像元增益,等于把整机级别的老化量硬摊到每个像元头上,遮蔽了真实的不均匀性。正确的用法是:比值因子只做整机级别的长期趋势监测,逐像元的变化靠像素响应非均匀性数据配合均匀源来评估,两条线分开走,最后再合。
6. 设计取舍:月球定标能给出什么,又给不出什么
把这条链路走完,会得到一个不太舒服但很诚实的结论:月球定标测的是"变化",不是"真值"。
比值因子定义为卫星测得的积分月球辐照度除以 ROLO 模型给出的参考辐照度。分子里带着仪器的绝对响应误差,分母里带着模型约 1% 的相对不确定度,两者相除,模型那部分误差并没有被消掉,只是被固定下来了。所以这个比值不能当绝对定标系数用,它的价值在于时间序列:只要模型本身不随时间变,比值的变化就只反映仪器的变化,这正是老化监测需要的东西。手册里把月球老化因子写成参考辐照度与实测辐照度的比值,再接一句"配合像素响应非均匀性可以评估逐像元辐射性能变化",这个措辞是很克制的,没有许诺做不到的事。
几种常见在轨参考源的取舍,大致是这样的:
| 参考源 | 优势 | 局限 | 适用场景 |
|---|---|---|---|
| 太阳漫反射板 | 信号强、频次高、可覆盖全视场 | 板面自身衰减与污染,无法自证 | 高频相对监测 |
| 月球 | 无大气、长期稳定、几何可精确计算 | 每月窗口有限、只覆盖部分像元、模型有约 1% 不确定度 | 多年尺度趋势 |
| 恒星 | 点源、光谱已知、适合质心与传递函数 | 信号弱,难以做辐射定标 | 几何与调制传递函数 |
| 地面场地 | 可溯源到标准源 | 受大气影响,频次低 | 绝对定标交叉验证 |
月球这一栏里,"只覆盖部分像元"是最容易被低估的限制。静止轨道传感器看月球,月面在焦面上只占一小片,剩下的像元根本没被照到,所以任何依赖月球的空间均匀性校正都做不了。这也是为什么手册里明确写了"逐像元更新辐射增益通常不适用于月球定标"——不是不想做,是物理上做不到。
另一个取舍在积分时间上。手册算得很清楚:GOCI-II 的平均轨道角速度约 72.9 微弧度每秒,单个像元的视场约 7 微弧度,所以一秒内月球在焦面上就挪过大约 10 个像元;积分时间放到 4.5 秒,最坏情况拖出 50 个像元。积分时间越长,信噪比越好,拖尾越严重;积分时间越短,图像越干净,噪声越大。这个矛盾没有两全解,只能靠过采样校正去补,而校正模型本身又依赖对月球运动、卫星运动和指向稳定度的精确建模。手册把校正公式给到"用月球实际角直径除以图像角尺寸"这一步,然后写明"如果确认需要,详细的运动模型留待下一步"——这是一个诚实的边界,说明这条链路在当时还没完全闭合。
从那以后,我每次接手一份新的波段说明手册,都强制先把三样东西的版本号对一遍再动代码:光谱响应函数文件、ROLO 系数表、月球成像窗口表。三者的版本必须互相指认,缺一个就不往下走。这个习惯救过我很多次——有一次系数表更新了但响应函数没更新,蓝光波段的比值因子整条曲线平移了三个百分点,靠版本核对十分钟就定位了,靠数据比对得查一个星期。希望帮到你。
本文还有配套的精品资源,点击获取