4. 光谱匹配度评价指标:SAM、SID 与相关系数
评价光谱匹配的好坏,不能光靠眼睛看。你想想看,两条光谱曲线画在一起,肉眼觉得挺像,但机器算出来可能差得很远。所以我们需要一套客观的数学指标。我个人习惯用三个:SAM(光谱角)、SID(光谱信息散度)和相关系数。它们各有侧重,配合使用效果最好。
4.1 SAM(光谱角)—— 最直观的“方向差”
SAM 的核心思想很简单:把光谱看成高维空间里的一个向量。两条光谱的差异,就是这两个向量之间的夹角。夹角越小,匹配度越高。
公式长这样:
SAM(x, y) = arccos( (x·y) / (||x|| * ||y||) )
其中 x·y 是内积,||x|| 是向量的模。结果是一个弧度值,通常在 0 到 π 之间。
实际经验:我在做高光谱矿物识别时,SAM 对“形状”非常敏感。比如两种矿物光谱的反射率绝对值不同,但波形起伏一致,SAM 值会很小。这恰恰是我们想要的——它不受光照强度变化的影响。
但 SAM 有个坑:它对光谱的“整体亮度”不敏感。两条光谱如果只是整体抬升或压低,SAM 值可能很小,但实际物质可能不同。嗯,这里要注意,不能只看 SAM。
4.2 SID(光谱信息散度)—— 基于概率的“信息差”
SID 的思路不一样。它把光谱看成概率分布,然后计算两个分布之间的“信息距离”。说白了,就是看一条光谱相对于另一条,到底损失了多少信息。
公式稍微复杂一点:
SID(x, y) = D(x||y) + D(y||x)
其中 D(x||y) 是相对熵(KL 散度)。SID 的值越小,说明两条光谱的信息分布越接近。
避坑指南:我曾经用 SID 做植被光谱匹配,发现它对噪声特别敏感。如果光谱中有几个波段的反射率异常低(比如接近零),SID 会直接爆炸。所以用之前,一定要做好光谱平滑和去噪。
SID 和 SAM 是互补的。SAM 看“方向”,SID 看“分布”。我建议在项目中两个都算,然后综合判断。
4.3 相关系数—— 线性关系的“温度计”
相关系数大家应该不陌生。它衡量两条光谱之间的线性相关程度,取值范围在 -1 到 1 之间。1 表示完全正相关,0 表示不相关,-1 表示完全负相关。
公式:
r = Σ((x_i - x̄)(y_i - ȳ)) / sqrt(Σ(x_i - x̄)² * Σ(y_i - ȳ)²)
在光谱匹配中,我们通常只看绝对值。|r| 越接近 1,匹配越好。
注意:相关系数只描述线性关系。如果两条光谱是非线性相关的(比如一条是另一条的平方),相关系数可能很低,但实际匹配度并不差。所以它不能单独使用。
4.4 三个指标的对比与选择
我把这三个指标放在一起对比过,它们的特性差异很明显。下面这个表格是我自己整理的,你可以直接拿去用:
| 指标 | 核心思想 | 对光照不敏感 | 对噪声敏感 | 适用场景 |
|---|---|---|---|---|
| SAM | 向量夹角 | 是 | 中等 | 矿物、地物分类 |
| SID | 信息散度 | 否 | 高 | 精细光谱分析 |
| 相关系数 | 线性相关 | 部分 | 低 | 波形相似性判断 |
我个人习惯的用法是:先用相关系数快速筛选,再用 SAM 做精细匹配,最后用 SID 验证。三步下来,基本不会漏掉或误判。
4.5 知识结构图
下面这张图把三个指标的关系和适用场景串起来了,你可以对照着理解:
4.6 实战建议
最后给你几个我在项目中总结出来的经验:
- 不要只用单一指标。每个指标都有盲区,三个一起用才稳妥。
- 设定阈值要结合数据。比如 SAM 阈值设 0.1 还是 0.3,取决于你的光谱分辨率和噪声水平。我一般先跑一批样本,看看分布再定。
- 注意光谱预处理。去噪、归一化、连续统去除,这些步骤会直接影响指标计算结果。尤其是 SID,对预处理非常敏感。
- 可视化辅助判断。算完指标后,把匹配度最高的几条光谱画出来看看。有时候指标很好,但实际波形有偏移,这时候需要人工介入。
一个小技巧:如果你在做实时匹配(比如无人机载高光谱),SAM 的计算速度最快,优先用它。SID 计算量较大,适合离线分析。