高光谱成像基础(二)光谱角映射 SAM
<p>在第一篇中我们已经提到:<strong>高光谱图像的每一个像素,本质上是一个高维光谱向量。</strong><br>如果一个像素有 100 个波段,那么它就可以表示为:</p>
<p></p><div class="math display">\[\mathbf{x} = (I_1, I_2, \dots, I_{100})
\]</div><p></p><p>既然每个像素是一个向量,我们又知道了高光谱图像的经典应用就是识别物质,那么一个很自然的问题就出现了:</p>
<blockquote>
<p><strong>如何判断两个像素是否属于同一种物质?</strong></p>
</blockquote>
<p>在 RGB 图像中,我们可能比较颜色是否接近。但在高光谱图像中,我们更关心的是:</p>
<blockquote>
<p><strong>两个光谱曲线的“形状”是否相似。</strong></p>
</blockquote>
<p>从此出发,就引出了一个非常经典的方法:<strong>光谱角映射(Spectral Angle Mapper,SAM)</strong>。</p>
<hr>
<h1 id="1-什么是-sam-">1. 什么是 SAM ?</h1>
<p>SAM 起源于 1993 年的论文<strong><em>The Spectral Image Processing System (SIPS) — Interactive Visualization and Analysis of Imaging Spectrometer Data</em></strong>,作为高光谱图像分析中一种经典的光谱相似性度量方法被提出。<br>
它的核心思想非常直观:</p>
<blockquote>
<p><strong>不比较光谱的“大小”,而比较光谱的“方向”。</strong></p>
</blockquote>
<p>换句话说:我们把每一个光谱向量看作高维空间中的一个点,那么两个像素之间的相似度,就可以用它们之间的“夹角”来表示。<br>
<strong>实际上,你可以把它理解为高光谱成像领域的余弦相似度</strong>。<br>
其逻辑并不复杂,下面就来具体展开:</p>
<h1 id="2-光谱角为什么是角度而不是距离">2. 光谱角:为什么是角度而不是距离?</h1>
<p>假设现在有两个像素:</p>
<p></p><div class="math display">\[\mathbf{x} = (x_1, x_2, \dots, x_n)
\]</div><p></p><p></p><div class="math display">\[\mathbf{y} = (y_1, y_2, \dots, y_n)
\]</div><p></p><p>它们可以看作是 n 维空间中的两个向量。<br>
在几何上,这两个向量的夹角满足:</p>
<p></p><div class="math display">\[\cos(\theta) = \frac{\mathbf{x} \cdot \mathbf{y}}{|\mathbf{x}||\mathbf{y}|}
\]</div><p></p><p>于是我们可以计算反余弦来得到夹角:</p>
<p></p><div class="math display">\[\theta = \arccos\left(\frac{\mathbf{x} \cdot \mathbf{y}}{|\mathbf{x}||\mathbf{y}|}\right)
\]</div><p></p><p>这个角度 <span class="math inline">\(\theta\)</span> 就叫做:<strong>光谱角(Spectral Angle)</strong><br>
角度越小,说明这两个向量在高维空间中越接近,两个光谱曲线就越相似。<br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260303140157657-1412346283.png" alt="image.png" loading="lazy"></p>
<p>到这里,你应该会有这样的问题:<strong>比较两个光谱向量,为什么是用“角度”而不是“距离”?</strong><br>
我们知道,在机器学习的部分任务中,向量长度可能受模型缩放影响而大小不一,方向才能代表其语义,因此我们使用余弦相似度来消除长度的影响。<br>
那么在光谱向量的关系中,为什么我们同样要使用余弦相似度而不是直接计算欧式距离呢?</p>
<p>实际上,这和高光谱图像的采集有关:在真实场景中,<strong>光谱强度会受到很多因素影响</strong>。如光照强度变化、阴影、传感器增益等。<br>
<strong>这些因素会影响光谱的“整体幅值”,但往往不会改变光谱曲线的“形状”。</strong></p>
<p>举个简单的例子:<br>
如果我们在阳光下和阴影下拍摄一座山:<br>
同一座山,在阳光下光强整体更高,而阴影下光强整体则会更低。<br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260303140157437-1004018422.png" alt="image.png" loading="lazy"><br>
<strong>但是,这座山在光谱曲线的“相对比例关系”基本保持一致。</strong><br>
因此,如果使用欧氏距离进行比较,则会因这类因素而让度量结果产生较大差异,但如果使用 SAM 计算光谱角来进行比较,那么它会认为这两个像素依然非常接近。<br>
这就是 SAM 的核心优势:<strong>对光照强度变化具有一定鲁棒性。</strong></p>
<p>到这里还没结束,通过计算光谱角,我们可以量化两个像素的光谱向量间的相似度。<br>
但是在实际任务中,SAM 往往用来进行像素级的图像分类或检测,<strong>我们要如何根据光谱角正确识别物质并进行分类,才是关键所在。</strong><br>
这便涉及到 SAM 中的另一个关键概念:<strong>参考光谱(Reference Spectrum)</strong>。</p>
<h1 id="3-参考光谱同一物质的参考答案">3. 参考光谱:同一物质的“参考答案”</h1>
<p>在实际应用中,SAM 常用于地物分类、材料识别、矿物匹配等分类或检测任务。<br>
而在这些具体任务中,我们使用 SAM 进行识别,并不是让高光谱图像数据的像素间两两计算光谱角,而是<strong>让每个像素和每类物质的参考光谱逐一计算光谱角,选择夹角最小的一类作为结果。</strong></p>
<p>道理不难理解,我们知道每种物质都有其固定的属性,比如石头是硬的,草是软的。<br>
<strong>而在高光谱成像中,每种物质对不同波长的光的吸收和反射能力自然也只会稳定在某个固定区间内,而不可能产生过大波动</strong>。<br>
这就为我们测量物质的参考光谱提供了依据,通过测量和建立参考光谱,我们便能得到分类的“标准答案”。</p>
<p>在个人任务中,想要得到参考光谱的最简单也是较可靠的方法就是<strong>使用标准光谱库</strong>,如业内较权威的 USGS 光谱库和 ASTM 光谱标准。这种方法无需标注,科学可靠,可直接应用于分类或匹配。</p>
<p>而如果是较小众的领域或者机密的数据,我们也有较符合直觉的方法来建立参考光谱,那就是<strong>对数据集中的某一类别的多个像素光谱求平均,得到该类别的代表光谱。</strong></p>
<p>举个例子,假设高光谱图像中某一类植被在 5 个窄波段上的光谱强度如下(单位为反射率,0–1 范围):</p>
<table>
<thead>
<tr>
<th>像素编号</th>
<th>波段1</th>
<th>波段2</th>
<th>波段3</th>
<th>波段4</th>
<th>波段5</th>
</tr>
</thead>
<tbody>
<tr>
<td>Pixel 1</td>
<td>0.12</td>
<td>0.35</td>
<td>0.50</td>
<td>0.60</td>
<td>0.55</td>
</tr>
<tr>
<td>Pixel 2</td>
<td>0.10</td>
<td>0.37</td>
<td>0.52</td>
<td>0.58</td>
<td>0.57</td>
</tr>
<tr>
<td>Pixel 3</td>
<td>0.11</td>
<td>0.36</td>
<td>0.51</td>
<td>0.59</td>
<td>0.56</td>
</tr>
</tbody>
</table>
<p>求平均光谱时,对每个波段求所有像素的均值:</p>
<p></p><div class="math display">\[\text{平均光谱} = \left[
\frac{0.12+0.10+0.11}{3},\ \frac{0.35+0.37+0.36}{3},\ \frac{0.50+0.52+0.51}{3},\ \frac{0.60+0.58+0.59}{3},\ \frac{0.55+0.57+0.56}{3} \right]
\]</div><p></p><p>计算得到:</p>
<p></p><div class="math display">\[\text{平均光谱} =
\]</div><p></p><p>这个平均光谱就可以作为该类别的<strong>参考光谱</strong>,用于 SAM 计算时与未知像素进行光谱角匹配。<br>
这种方法简单直观,同时也能在数据量足够的情况下有效抑制单个像素的噪声影响,提高分类或匹配的稳定性。<br>
这样,我们就得到了使用 SAM 进行相关任务的完整流程,我们以高光谱图像分类任务为例来进行说明:<br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260303140156970-80236452.png" alt="image.png" loading="lazy"></p>
<h1 id="4-sam-的优缺点">4. SAM 的优缺点</h1>
<p>作为早期的经典方法,SAM 有其优势所在,但同样也存在可优化的空间,简单列举一下:</p>
<table>
<thead>
<tr>
<th><strong>类别</strong></th>
<th><strong>内容</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>优点</strong></td>
<td>物理意义明确、对光照变化具有鲁棒性、不需要复杂训练,计算简单。</td>
</tr>
<tr>
<td><strong>缺点</strong></td>
<td>对噪声敏感、 无法处理复杂混合像素问题、 属于像素级方法,不考虑空间信息。</td>
</tr>
</tbody>
</table>
<p><strong>其中,一个很明显的缺陷在于 SAM 并不会像卷积一样学习到图像的空间结构。</strong><br>
它将图像分割为一个个像素,类比到深度学习中,这种做法其实更类似于使用全连接学习图像的孤立形式。因此,SAM 也提供了明确的优化思路。</p>
<p>总之,SAM 在高光谱图像分析发展初期提供了<strong>简单可行的像素级分类与匹配方法</strong>,成为遥感、矿物识别和材料检测等领域的基准工具。<br>
它的提出奠定了<strong>光谱相似性度量的基础思想</strong>,对后续复杂算法(如引入空间信息、深度学习方法)起到了启发和参考作用。</p><br><br>
来源:https://www.cnblogs.com/Goblinscholar/p/19662838
頁:
[1]