高光谱成像基础(五)高光谱成像的噪声估计
<p>在上一篇中,我们介绍了最小噪声分数变换 MNF,它在 PCA 基础上引入噪声建模的一种改进降维方法,但我们也提到了:<strong>MNF 依赖噪声估计,其效果很大程度依赖噪声协方差矩阵的估计,如果噪声估计不准确,降维效果可能明显下降。</strong></p><p>换句话说,<strong>噪声估计的质量,直接决定了 MNF 的最终效果。</strong></p>
<p>因此,如果希望在高光谱图像处理中更好地应用 MNF,一个关键问题就是:</p>
<blockquote>
<p><strong>如何更准确地估计图像中的噪声?</strong></p>
</blockquote>
<p>这也是本篇文章的主要内容。<br>
我们从上一篇中提到的<strong>空间差分方法</strong>出发,进行对噪声估计方法的简单综述,简要讲解现存的几类噪声估计方法的基本原理与适用场景。</p>
<hr>
<h1 id="1-差分类方法difference-based-methods">1. 差分类方法(Difference-based Methods)</h1>
<p>差分类方法的核心思想是:<strong>利用邻域像素之间的差值来削弱真实信号,从而突出噪声成分。</strong><br>
展开来说,在自然图像或高光谱图像中,真实信号通常具有一定的空间连续性,相邻像素之间变化较为平滑。而噪声往往是随机波动的,因此,对相邻像素进行差分运算时,信号部分往往会相互抵消,而噪声则会被保留下来。</p>
<p>在诸多方法中,这类方法的优点是<strong>实现简单、计算效率高</strong>。<br>
但与此同时,差分法依赖一个重要假设:<strong>相邻像素之间的真实信号变化较小</strong>。当图像中存在明显的边缘或纹理结构时,差分结果会混入真实信号变化,从而导致噪声被高估。<br>
而且,差分法只利用<strong>局部空间信息</strong>,而没有利用高光谱数据中<strong>波段之间的相关性</strong>,也让其在复杂任务中稍显逊色。<br>
因此,这类方法更适用于<strong>图像变化较平滑的场景</strong>,作为一种<strong>快速、基础的噪声估计手段</strong>。</p>
<p>差分类方法中最简单的就是我们在上一篇中使用的<strong>单向空间差分(Spatial Difference)</strong>:</p>
<p></p><div class="math display">\[\hat{N} = X(i,j) - X(i+1,j)
\]</div><p></p><p>其利用相邻像素之间的简单差值来估计噪声。</p>
<p>而在此基础上一种简单的改进方法是使用<strong>双向差分(Bidirectional Difference)</strong>。<br>
在刚刚的空间差分中,我们只在一个方向上进行差分,但实际上,图像结构可能在某个方向上变化较大,如果只使用单一方向的差分,可能会把真实信号变化误当成噪声。<br>
因此,可以同时在<strong>水平和垂直方向</strong>进行差分:</p>
<p></p><div class="math display">\[\hat{N}_h = X(i,j) - X(i+1,j)
\]</div><p></p><p></p><div class="math display">\[\hat{N}_v = X(i,j) - X(i,j+1)
\]</div><p></p><p>然后再将两个方向的差分结果进行统计,例如计算整体方差,从而得到更加稳定的噪声估计。</p>
<p>还没完,在此基础上,还可以进一步扩展为<strong>多方向差分(Directional Difference)</strong>:<br>
这种方法不仅考虑水平和垂直方向,还会加入<strong>对角线方向</strong>的差分,例如:</p>
<p></p><div class="math display">\[\hat{N}_d = X(i,j) - X(i+1,j+1)
\]</div><p></p><p></p><div class="math display">\[\hat{N}_{d2} = X(i,j) - X(i+1,j-1)
\]</div><p></p><p>这样就可以在多个方向上估计噪声,然后将这些差分结果综合起来进行统计分析。<br>
多方向差分可以进一步降低图像中边缘、纹理等局部结构变化对噪声估计造成的干扰,从而获得更加可靠的估计结果。</p>
<p>我们用一个简单的实例来进行演示:<br>
接下来我们利用这些像素,通过不同的差分方式构造噪声样本。<br>
假设有 <strong>四个相邻像素</strong>:<span class="math inline">\(P_1、P_2、P_3、P_4\)</span>,它们在空间中的位置如下:</p>
<p></p><div class="math display">\[\begin{matrix}
P_1 & P_2 \\
P_3 & P_4
\end{matrix}
\]</div><p></p><p>其中,每个像素都是一个 <strong>3 维光谱向量(3 个波段)</strong>:</p>
<p></p><div class="math display">\\quad\quadP_2 =
\]</div><p></p><p></p><div class="math display">\\quad\quad P_4 =
\]</div><p></p><p>现在,在这个 <span class="math inline">\(2\times2\)</span> 的邻域中,竖直方向可以得到两组相邻像素:</p>
<ul>
<li>第一列:<span class="math inline">\(P_1\)</span> 与 <span class="math inline">\(P_3\)</span></li>
<li>第二列:<span class="math inline">\(P_2\)</span> 与 <span class="math inline">\(P_4\)</span></li>
</ul>
<p>因此计算它们的差分:</p>
<p></p><div class="math display">\ - =[-1,1,1]
\]</div><p></p><p></p><div class="math display">\ - =[-1,1,1]
\]</div><p></p><p>可以看到,每一次像素差分都会得到一个 <strong>3 维噪声向量</strong>。<br>
接下来,我们将这些差分结果<strong>按行堆叠</strong>,构造噪声样本矩阵:</p>
<p></p><div class="math display">\[N =
\begin{bmatrix}
-1 & 1 & 1 \\
-1 & 1 & 1
\end{bmatrix}
\]</div><p></p><p>在这个矩阵中:<strong>每一行就表示一个噪声样本,每一列就表示一个波段的噪声值。</strong></p>
<p>现在,我们都得到了使用单向差分构造的噪声样本矩阵,下一步,我们就在此基础上使用双向差分来看看:<br>
在双向差分中,我们不仅考虑 <strong>竖直方向</strong>,还要加入 <strong>水平方向</strong> 的差分。<br>
因此我们继续计算水平方向差分:</p>
<p></p><div class="math display">\ - =[-2,-2,-1]
\]</div><p></p><p></p><div class="math display">\ - =[-2,-2,-1]
\]</div><p></p><p>可以看到,水平方向同样得到了两个 3 维噪声样本向量。接下来,我们将 <strong>竖直方向和水平方向得到的噪声样本统一堆叠</strong>,构造新的噪声样本矩阵:</p>
<p></p><div class="math display">\[N =
\begin{bmatrix}
-1 & 1 & 1 \\
-1 & 1 & 1 \\
-2 & -2 & -1 \\
-2 & -2 & -1
\end{bmatrix}
\]</div><p></p><p>可以看到,相比单向差分,双向差分产生了 <strong>两倍数量的噪声样本</strong>。<br>
因此,我们获得了 <strong>更多的噪声观测数据</strong>,从而能够得到更加稳定的噪声统计结果。</p>
<p>最后,我们进一步加入 <strong>对角线方向的差分</strong>:</p>
<p></p><div class="math display">\ - = [-3,-1,0]
\]</div><p></p><p></p><div class="math display">\ - =
\]</div><p></p><p>我们将得到的噪声样本统一堆叠,构造完整的噪声样本矩阵如下:</p>
<p></p><div class="math display">\[N =
\begin{bmatrix}
-1 & 1 & 1 \\
-1 & 1 & 1 \\
-2 & -2 & -1 \\
-2 & -2 & -1 \\
-3 & -1 & 0 \\
1 & 3 & 2
\end{bmatrix}
\]</div><p></p><p>你会发现,通过在多个方向上构造差分,我们不仅能够获得更多的噪声观测数据,还可以<strong>降低图像中某一特定方向结构变化对噪声估计造成的影响</strong>,从而得到更加稳定和可靠的噪声统计结果。</p>
<h1 id="2-统计类方法statistics-based-methods">2. 统计类方法(Statistics-based Methods)</h1>
<p>统计类方法的核心思想是:<strong>利用图像局部区域的统计特性来估计噪声强度。</strong><br>
这类方法同样基于一个基本假设:在较小的空间窗口内,真实信号变化相对缓慢,因此像素之间的差异主要来源于噪声。如果能够在图像中找到<strong>变化较平缓的区域</strong>,那么该区域内像素的统计波动就可以用来估计噪声强度。</p>
<p>从思想上来看,这类方法与前面介绍的差分类方法有一定相似之处:<strong>二者都依赖于“局部区域内真实信号相对稳定”的假设</strong>。不同之处在于,差分法通过计算相邻像素之间的差值来显式削弱信号,而统计类方法则是通过分析局部像素分布的统计特性(如方差)来间接估计噪声水平。<br>
在实际应用中,统计类方法通常会在图像上使用滑动窗口计算局部统计量,或者筛选出方差较小的平滑区域进行估计,因此相比简单差分方法往往具有更好的<strong>稳定性</strong>。<br>
但它也同样有其缺陷,统计类方法对<strong>窗口尺寸的选择敏感</strong>,过小窗口可能无法充分反映噪声统计特性,过大窗口又可能引入更多信号变化,对估计精度产生影响。<br>
同时,对于<strong>非平稳噪声</strong>,其适应性也较差。</p>
<p>因此,这类方法同样适用于<strong>信号变化较平缓、平滑区域丰富的图像</strong>,作为一种稳健的噪声估计手段,适合<strong>需要对每个波段分别评估噪声强度的高光谱图像</strong>。</p>
<p>最常用的统计方法是<strong>局部方差估计(Local Variance Estimation)</strong>。<br>
其基本步骤通常如下:</p>
<ol>
<li>在图像中选取一个<strong>局部窗口</strong>,例如 <span class="math inline">\(5\times5\)</span> 或 <span class="math inline">\(7\times7\)</span>。</li>
<li>计算窗口内像素的<strong>均值</strong>。</li>
<li>再计算窗口内像素相对于均值的<strong>方差</strong>,并将其作为噪声强度的估计。</li>
</ol>
<p>其思想也比较好理解:<strong>假定某个区域的像素属于同一个分类,那么像素值本应接近一致,因此局部像素的波动(方差)主要来源于噪声,这样就可以用方差来量化噪声强度。</strong></p>
<p>在此基础上,还可以进一步进行改进。例如,一些方法会在整幅图像中滑动窗口,计算大量局部方差,然后选择<strong>方差最小的一部分区域</strong>作为噪声估计的依据。<br>
这是因为方差较小的区域通常对应<strong>信号变化较平滑的背景区域</strong>,因此更接近真实噪声水平。</p>
<p>同样来看一个实例:<br>
假设在某个局部窗口中,我们观测到 <strong>5 个像素</strong>,每个像素包含 <strong>3 个波段</strong>,数据如下:</p>
<p></p><div class="math display">\[X =
\begin{bmatrix}
100 & 50 & 30 \\
102 & 52 & 31 \\
101 & 49 & 29 \\
99 & 51 & 30 \\
98 & 50 & 31
\end{bmatrix}
\]</div><p></p><p>首先,计算每个波段的均值向量:</p>
<p></p><div class="math display">\[\bar{X} = \frac{1}{5} \sum_{i=1}^{5} X_i =
\]</div><p></p><p>然后,将每个像素与均值向量的差值构成偏差矩阵:</p>
<p></p><div class="math display">\[\Delta = X - \bar{X} =
\begin{bmatrix}
0 & -0.4 & -0.2 \\
2 & 1.6 & 0.8 \\
1 & -1.4 & -1.2 \\
-1 & 0.6 & -0.2 \\
-2 & -0.4 & 0.8
\end{bmatrix}
\]</div><p></p><p>接下来,计算<strong>噪声协方差矩阵</strong>:</p>
<p></p><div class="math display">\[C_n = \frac{1}{5} \Delta^T \Delta =
\begin{bmatrix}
2 & 0.4 & 0.4 \\
0.4 & 1.12 & 0.56 \\
0.4 & 0.56 & 0.72
\end{bmatrix}
\]</div><p></p><p>现在,我们得到的局部协方差矩阵就可以<strong>直接用于 MNF 白化步骤</strong>。<br>
而如果我们选择了多个局部窗口,得到的多个协方差矩阵也只需要取平均聚合后,就可以应用于 MNF。</p>
<p>此外,除去使用方差之外,也存在使用标准差、绝对偏差、最小二乘拟合残差或 robust 方差的形式,但只是所求统计量的不同,其基本逻辑仍是一样的。</p>
<h1 id="3-回归类方法regression-based-methods">3. 回归类方法(Regression-based Methods)</h1>
<p>回归类方法的核心思想是:<strong>通过建立像素或波段之间的预测关系,将预测残差视作噪声,从而进行噪声估计</strong>。<br>
与前两类方法相比,回归类方法不仅利用局部空间信息,还可以利用高光谱数据中<strong>波段间的相关性</strong>,因此在多波段高光谱图像中往往更加精确。<br>
<strong>在不考虑计算成本、只追求噪声估计精度的情况下,回归类方法是目前高光谱领域最权威、精确的噪声估计方法</strong>。</p>
<p>回归类方法常见做法如下:</p>
<ol>
<li>对目标波段建立<strong>回归模型</strong>,用相邻像素或其他波段进行预测。</li>
<li>计算<strong>预测残差</strong>,将残差作为噪声样本。</li>
<li>对整个图像或多个像素重复该过程,得到噪声估计矩阵或协方差矩阵,可直接用于 MNF 白化或噪声分析。</li>
</ol>
<p>对这类方法,我们需要先补充一部分理论基础:<br>
首先,<strong>高光谱图像的波段间是高度相关的</strong>:高光谱图像的每个像素都有多个波段,这些波段的<strong>光谱响应往往是连续且相关</strong>的。比如对于植被像素,红边波段和近红外波段的值之间存在一定的线性或非线性关系。<br>
一般来说,高光谱图像中<strong>波段距离越近,相关性越强</strong>。但噪声是设备误差等原因产生的,它通常在各个波段中是随机的。</p>
<p>因此,<strong>当我们选取波段相近的几个邻居,用回归模型去预测一个波段的真实信号,再计算观测值与其的残差,得到的不符合预测模式的波动,我们就认为这是噪声。</strong></p>
<p>同样来看一个例子:<br>
假设某像素在 <strong>三个波段</strong> 的观测值为:</p>
<p></p><div class="math display">\
\]</div><p></p><p>此时,我们希望<strong>估计波段 3 的噪声</strong>。就可以利用波段 1 和波段 2 的值建立一个线性回归模型:$$ \hat{x}_3 = a \cdot x_1 + b \cdot x_2 + c $$ 在图像中选取多个像素,利用最小二乘法或其他回归方法求解参数 <span class="math inline">\(a, b, c\)</span>。得到预测值,我们假定如下:</p>
<p></p><div class="math display">\[\hat{x}_3=28
\]</div><p></p><p>下面,我们将实际观测值与预测值相减,就能得到残差:</p>
<p></p><div class="math display">\[r = x_3 - \hat{x}_3=30-28=2
\]</div><p></p><p>这个残差 <span class="math inline">\(r=2\)</span> 就可以作为该像素在波段 3 上的噪声样本,对图像中多个像素重复上述过程,就可以得到整幅图像波段 3 的噪声样本向量。</p>
<p>如果<strong>对每个波段都建立类似回归模型</strong>,得到各波段的残差向量,就可以构造完整的噪声样本矩阵 <span class="math inline">\(N\)</span>:</p>
<p></p><div class="math display">\[ N =
\begin{bmatrix}
r_1^{(1)} & r_2^{(1)} & r_3^{(1)} \\
r_1^{(2)} & r_2^{(2)} & r_3^{(2)} \\
\vdots & \vdots & \vdots \\
r_1^{(m)} & r_2^{(m)} & r_3^{(m)}
\end{bmatrix}
\]</div><p></p><p>其中每一行表示一个像素的残差,每一列表示一个波段的噪声样本。然后就可以进一步计算噪声协方差矩阵。<br>
回归类方法 <strong>利用波段间的相关性</strong>,可以得到更精确的噪声协方差矩阵,从而在后续的 MNF 或噪声白化处理中提供可靠的噪声信息,是目前公认的高精度噪声估计方法。<br>
在目前的高光谱噪声估计领域,<strong>研究重点</strong>也大都集中在改进回归模型精度、引入非线性或多变量预测策略,以进一步提高噪声估计的可靠性上。</p>
<h1 id="4总结">4.总结</h1>
<table>
<thead>
<tr>
<th>方法类别</th>
<th>核心思想</th>
<th>优点</th>
<th>限制</th>
<th>适用场景</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>差分类方法</strong></td>
<td>利用邻域像素差值削弱真实信号,将差分结果视作噪声。</td>
<td>实现简单、计算效率高。</td>
<td>假设相邻像素信号变化小;边缘或纹理区域易高估噪声;只利用空间信息。</td>
<td>图像平滑、变化不剧烈的场景;快速噪声估计。</td>
</tr>
<tr>
<td><strong>统计类方法</strong></td>
<td>利用局部窗口内像素统计特性(如方差)估计噪声。</td>
<td>稳定性较好;可直接得到噪声强度或协方差。</td>
<td>对窗口尺寸敏感;对非平稳噪声适应性差。</td>
<td>信号变化平缓、平滑区域丰富的图像;需每波段噪声估计。</td>
</tr>
<tr>
<td><strong>回归类方法</strong></td>
<td>利用波段或邻域像素建立预测模型,将预测残差视作噪声。</td>
<td>精度高;利用空间和波段相关性;可直接用于噪声协方差矩阵构建。</td>
<td>计算成本高;模型拟合需足够像素样本。</td>
<td>追求高精度噪声估计,尤其用于 MNF 或高精度降维。</td>
</tr>
</tbody>
</table><br><br>
来源:https://www.cnblogs.com/Goblinscholar/p/19690053
頁:
[1]