高光谱成像基础(九)光谱解混基础
<p>在之前的内容中,我们已经介绍了 LMM 的基本思想及其相关概念。根据这一模型,高光谱图像中每个像素的观测光谱都可以表示为若干端元光谱的线性组合。</p><p>而在此基础上,MF 和 ACE 这类高光谱目标检测算法,其实可以看作 <strong>LMM 的一种特殊应用形式</strong>。这类方法通过估计背景像素的统计特性,构建针对目标光谱的滤波器,从而实现对目标像素的检测。</p>
<p>但其实<strong>站在 LMM 的角度</strong>上,我们还可以用另一种方式来理解这两种方法,再再再看一遍公式:</p>
<p></p><div class="math display">\[\mathbf{x} = \mathbf{a} \mathbf{s} + \mathbf{b}
\]</div><p></p><p>在这个公式中,<span class="math inline">\(\mathbf{x}\)</span> 表示观测光谱,<span class="math inline">\(\mathbf{s}\)</span> 表示目标光谱,而 <span class="math inline">\(\mathbf{b}\)</span> 表示背景干扰。<br>
当我们通过估计方法得到背景 <span class="math inline">\(\mathbf{b}\)</span> 的统计特性后,其实就可以把它看作是<strong>已知的背景成分</strong>。这样一来,<strong>模型中唯一需要估计的未知量实际上只剩下 <span class="math inline">\(\mathbf{a}\)</span>,也就是目标光谱在该像素中的丰度。</strong></p>
<p>因此,当我们利用 MF 或 ACE 构建滤波器并得到响应值时,本质上是在干这样一件事:</p>
<blockquote>
<p><strong>估计目标光谱在该像素中的丰度。</strong></p>
</blockquote>
<p>显然:</p>
<ul>
<li>当 <span class="math inline">\(\mathbf{a}\)</span> 较大时,说明目标成分在像素中的比例较高。</li>
<li>当 <span class="math inline">\(\mathbf{a}\)</span> 较小时,则说明目标信号较弱,甚至可能不存在。</li>
</ul>
<p>从这个角度来看,这类目标检测方法实际上也可以理解为一种 <strong>简化形式的光谱解混</strong>。</p>
<p>而更一般的情况下,一个像素往往包含多种不同材料,此时我们需要同时估计多种端元在像素中的比例,这就是高光谱分析中的另一类重要问题:<strong>光谱解混(Spectral Unmixing)。</strong></p>
<p>光谱解混与目标检测密切相关,是高光谱成像中另一个重要的研究方向。本篇内容就关于<strong>光谱解混基础</strong>。</p>
<h1 id="1-最小二乘法与神经网络">1. 最小二乘法与神经网络</h1>
<p>任何领域的发展要经历从简单到复杂的演变,体现在计算机和统计领域的求解问题中,其实就是从线性到非线性的过程。<br>
而光谱解混最基础的理论来源之一,就是<strong>最小二乘法</strong>,这是线代中的基础内容,我们简单展开如下:<br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260316082416960-535438818.png" alt="image.png" loading="lazy"><br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260316083514427-1061569867.png" alt="image" loading="lazy"><br>
于是,拟合就变成了一个求最值的问题,通过导数求解后,我们就通过已知数据得到一条直线来描述数据间的关系。<br>
<strong>但是,这条直线并不是像标准函数那样的“精确解”,它只是对已知数据的最佳线性逼近,是“让误差最小的近似解”。</strong></p>
<p>而究其原因,是因为<strong>简单的直线无法精确描述图中数据的关系</strong>,当我们希望得到精度更高的结果时,自然而然的,就要引入非线性,就像这样:<br>
<img src="https://img2024.cnblogs.com/blog/3708248/202603/3708248-20260316082416742-1620516067.png" alt="image.png" loading="lazy"><br>
<strong>其实,这就是神经网络的理论基础</strong>,一个隐藏层神经元就是像上面的直线一样进行线性组合,激活函数则是引入非线性,让直线可以弯曲成这里的样子,最终,通过损失函数反向传播,学习到更精确的解。</p>
<p>了解了这一基础逻辑后,我们再来光谱混解本身。</p>
<h1 id="2-从最小二乘到光谱解混">2. 从最小二乘到光谱解混</h1>
<p>我们已经知道了:在高光谱图像中,每个像素往往不是单一材料,而是多种材料的混合。<br>
现在,假设我们已经从图像中提取了若干端元光谱,记作矩阵 <span class="math inline">\(S\)</span>:</p>
<p></p><div class="math display">\ \in \mathbb{R}^{L \times p}
\]</div><p></p><p>其中:</p>
<ul>
<li><span class="math inline">\(L\)</span>:波段数量。</li>
<li><span class="math inline">\(p\)</span>:端元数量。</li>
<li><span class="math inline">\(\mathbf{s}_i\)</span>:第 <span class="math inline">\(i\)</span> 个端元的光谱。</li>
</ul>
<p>那么,根据 LMM 的思想,一个像素的观测光谱 <span class="math inline">\(\mathbf{x} \in \mathbb{R}^L\)</span> 就可以用这些端元的线性组合来近似:</p>
<p></p><div class="math display">\[\mathbf{x} \approx S \mathbf{a} = \sum_{i=1}^p a_i \mathbf{s}_i
\]</div><p></p><p><strong>显然,这里的 <span class="math inline">\(\mathbf{a} = ^T\)</span> 就是我们想求的端元丰度向量</strong>。<br>
总结来说,<strong>光谱解混就是把每个像素的光谱分解为端元的加权和</strong>,权重就是材料在像素中的比例。<br>
<strong>同样的,如果我们想让对丰度的估计结果更精确,就要让观测光谱和近似光谱的误差最小</strong>,于是我们的目标就变成了:</p>
<p></p><div class="math display">\[\min_{\mathbf{a}} |\mathbf{x} - S\mathbf{a}|^2
\]</div><p></p><p>到这里,最小二乘法就可以排上用场了。</p>
<h1 id="3全约束最小二乘-fclsfully-constrained-least-squares">3.全约束最小二乘 FCLS(Fully Constrained Least Squares)</h1>
<p>在光谱解混领域,最基础的解混方法就是全约束最小二乘,它的英文全称是 <em>Fully Constrained Least Squares</em>,缩写为 <strong>FCLS</strong>。</p>
<p>值得一提的是,在 FCLS 之前,其实还有无约束最小二乘 UCLS 和非负约束最小二乘 NNLS 存在,只是这两种方法并没有太多的实用价值,也只是在约束上存在不同,就不再展开了。</p>
<p>在 FCLS 中, 为了保证解的物理合理性,需要加入两个约束,我们在 LMM 中也提到过:</p>
<ol>
<li><strong>非负约束</strong>:<span class="math inline">\(\mathbf{a}_i \ge 0\)</span></li>
<li><strong>和为 1 约束</strong>:<span class="math inline">\(\sum_i \mathbf{a}_i = 1\)</span></li>
</ol>
<p>这样,就保证了每个材料的比例是合理的,不会出现最佳线性逼近结果不切实际的情况。<br>
于是我们就得到了 FCLS 问题的完整形式:</p>
<p></p><div class="math display">\[\min_{\mathbf{a}} \; |\mathbf{x} - S\mathbf{a}|^2
\quad
\text{s.t.} \quad
\begin{cases}
\mathbf{a}_i \ge 0, & i = 1,2,\dots,p\\
\sum_{i=1}^{p} \mathbf{a}_i = 1
\end{cases}
\]</div><p></p><p>我们用一个简单的例子来进行演示,假设我们有 3 个端元的光谱矩阵 <span class="math inline">\(S\)</span>(3 波段):</p>
<p></p><div class="math display">\[S =
\begin{bmatrix}
0.6 & 0.3 & 0.1\\
0.2 & 0.5 & 0.3\\
0.1 & 0.3 & 0.6
\end{bmatrix}, \quad
\mathbf{x} =
\begin{bmatrix}
0.5\\
0.4\\
0.2
\end{bmatrix}
\]</div><p></p><p>这里,<span class="math inline">\(S\)</span> 每列是一个端元光谱,<span class="math inline">\(\mathbf{x}\)</span> 是观测像素光谱。<br>
如果<strong>不进行任何约束</strong>,我们可以直接对目标函数求导运算来得到解析公式:</p>
<p></p><div class="math display">\[\mathbf{a} = (S^T S)^{-1} S^T \mathbf{x}
\]</div><p></p><p>代入得到近似解:</p>
<p></p><div class="math display">\[\mathbf{a} \approx
\begin{bmatrix}
1.2\\
-0.1\\
-0.1
\end{bmatrix}
\]</div><p></p><p>可以看到: <span class="math inline">\(a_2\)</span> 和 <span class="math inline">\(a_3\)</span> 为负值 ,显然没有物理意义。<br>
对于这种情况,我们有一种手工求解的方法如下:</p>
<ol>
<li><strong>非负约束</strong>:将负值设置为 0</li>
</ol>
<p></p><div class="math display">\[\mathbf{a}^{(1)} =
\begin{bmatrix} 1.2 \\ 0 \\ 0 \end{bmatrix}
\]</div><p></p><ol start="2">
<li><strong>总和归一化</strong>:将向量除以总和,使 <span class="math inline">\(\sum a_i = 1\)</span></li>
</ol>
<p></p><div class="math display">\[\text{sum} = 1.2 + 0 + 0 = 1.2 \quad \Rightarrow \quad
\mathbf{a}_{\text{FCLS}} = \frac{\mathbf{a}^{(1)}}{\text{sum}} =
\begin{bmatrix} 1.2/1.2 \\ 0/1.2 \\ 0/1.2 \end{bmatrix} =
\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}
\]</div><p></p><p>这样可以得到一个可行的 FCLS 解。它<strong>展示了约束作用,但精度有限。</strong><br>
因此,实际应用中,我们都会使用高光谱解混软件和科研工具,通过<strong>迭代优化或二次规划</strong>来进行大规模计算求解 FCLS,而不是手工调整。</p>
<h1 id="4-光谱解混的现代技术">4. 光谱解混的现代技术</h1>
<p>光谱解混从最基础的线性最小二乘方法发展到现在,已经出现了多种技术路线,主要可按以下几个维度划分:</p>
<table>
<thead>
<tr>
<th>思路方向</th>
<th>主要特点</th>
<th>代表技术</th>
<th>适用场景与优势</th>
</tr>
</thead>
<tbody>
<tr>
<td>稀疏解混(Sparse Unmixing)</td>
<td>假设每个像素只含少数端元</td>
<td>SUnSAL、LASSO</td>
<td>高维端元库下有效,能抑制噪声和不相关端元影响</td>
</tr>
<tr>
<td>非线性解混(Nonlinear Unmixing)</td>
<td>考虑多光谱相互作用或多散射效应</td>
<td>核方法、多项式</td>
<td>当光谱混合不符合线性假设时更精确</td>
</tr>
<tr>
<td><strong>机器学习 / 深度学习方法</strong></td>
<td><strong>数据驱动,自适应端元学习</strong></td>
<td><strong>自编码器、 卷积神经网络、 图神经网络</strong></td>
<td><strong>可处理复杂非线性、噪声和大规模数据;适合自动端元提取</strong></td>
</tr>
<tr>
<td>统计 / 贝叶斯方法</td>
<td>建模端元和丰度的不确定性</td>
<td>Bayes FCLS、 MCMC 解混</td>
<td>能提供不确定性估计,适合科研分析和精细应用</td>
</tr>
<tr>
<td>几何 / 端元抽取结合解混</td>
<td>先抽取端元,再解混</td>
<td>N-FINDR + FCLS VCA+ FCLS</td>
<td>端元未知时有效,能自动构建端元库</td>
</tr>
</tbody>
</table>
<p>总结来说,光谱解混方法是高光谱分析中的核心工具,用于将像素光谱分解为端元组合及其丰度。其现代方法结合线性模型、非线性建模与深度学习,可兼顾物理可解释性与高精度,从而广泛应用于遥感、环境监测和目标检测等领域。光谱解混是高光谱成像领域中不可或缺的研究方向。</p><br><br>
来源:https://www.cnblogs.com/Goblinscholar/p/19722971
頁:
[1]