1836 字
9 分钟
视觉先验-在低级视觉中的应用
2026-06-25
无标签

传统底层视觉的手工先验——去噪与超分#

在深度学习席卷计算机视觉之前,学者们依靠 数学建模和信号处理 将先验知识编码为精确的公式。这些手工设计的先验(Hand-crafted Priors)主导了底层视觉领域长达数十年,其核心思想至今仍深刻影响着现代神经网络的设计(例如,ResNet的残差结构就是对“噪声残差稀疏性”的先验继承)。

从两个经典任务切入:图像去噪(Denoising)图像超分(Super-Resolution)

图像去噪(Denoising):从像素邻域到非局部块#

问题:噪声(特别是高斯噪声)在频域上通常属于高频信号,而自然图像的边缘也属于高频。难以区分。

去噪先验的核心任务就是区分并保留真实结构

先验一:平滑性先验(TV范数 / 总变分)#

  • 自然图像是分片平滑(Piecewise Smooth)的,邻域像素值变化平缓,相邻像素之间的亮度差值不会太大。

  • TV Loss公式,惩罚相邻像素的差异, 传统TV范数定义为梯度的L1范数和:

    TV(θ)=i,j(θi+1,jθi,j)2+(θi,j+1θi,j)2TV(\theta) = \sum_{i,j} \sqrt{(\theta_{i+1,j} - \theta_{i,j})^2 + (\theta_{i,j+1} - \theta_{i,j})^2}

  • 效果与局限:它能有效消除高频噪声,但因为惩罚了所有梯度变化,它会把真实的强边缘也一并“磨平”,导致去噪后的图像看起来像“塑料质感”,失去纹理细节。

先验二:非局部自相似性(NLM先验 / BM3D算法)#

  • 最强大的传统先验。假设同一图像中存在大量重复的小斑块(Patch)。
  • 去噪机制:给定一个待去噪的目标块,在全图搜索与之相似的块。将这些相似块堆叠在一起,逐像素取平均值
  • 数学原理:真实的信号(结构)是确定性的,在多个块中保持一致;而噪声是零均值独立随机变量。当把 NN个相似块平均时,信号强度不变(均值不变),而噪声的方差缩小为原来的 1/N1/N(标准差缩小)。
  • BM3D(Block-Matching and 3D Filtering)是NLM的增强版,它将匹配的2D块堆叠成3D柱状体,先在变换域(如DCT)阈值收缩去噪,再逆变换聚合回2D

先验三:稀疏表示先验(Sparse Representation)#

  • 图像块在过完备字典(DCT、小波)下用极少数非零系数表示,噪声无法被稀疏表示。
  • 我们有一个过完备字典矩阵 DD(列数大于行数),图像块 y=Dαy = D\alpha。稀疏先验要求系数向量 α\alpha只有极少数几个非零元素(即 α0\|\alpha\|_0极小)。
  • 干净的清晰图像可以被几个“原子(Atoms)”线性组合而成,但随机噪声是杂乱无章的,它无法用有限的几个字典原子来拟合。因此,在求解优化问题时,通过 l1l_1范数松弛 l0l_0,算法会强制将噪声分量从系数中剔除,从而实现纯净重建。

图像超分(Super-Resolution):高频细节的“无中生有”#

问题:一张低分辨率(LR)图像对应着无数张高分辨率(HR)图像(一对多映射)

超分比去噪更难。去噪是“减去坏东西”,而超分是“补上不存在的东西”。传统超分的核心是先验:边缘和纹理该怎么长才像真的?

先验一:边缘方向先验(各向异性假设)#

假设 :图像边缘各向异性的。沿边缘方向变化缓慢,垂直边缘方向变化剧烈。

  • 在传统插值(如双三次插值)中,算法会参考周围四个方向。但如果跨过边缘取点,插值结果会产生锯齿
  • 边缘方向先验在插值前先计算当前点的梯度方向,只沿切线方向(平行于边缘)取点进行插值,避免跨边缘取点,从而保持边缘锐利不模糊。

先验二:梯度轮廓先验(Gradient Profile Prior)#

统计大量自然图像发现,边缘横截面梯度分布服从某种重尾分布,如混合高斯模型。

  • 超分时强制重建图像边缘的梯度形状符合此统计规律。
  • 简单理解,真实世界中一个清晰的明暗交界线(边缘),其灰度值从亮到暗的变化曲线是特定的“陡峭形状”。如果直接放大,这个坡度会变缓。该先验的作用就是重新锐化这个坡度,把平缓的渐变强行拉伸成陡峭的边缘,这在视觉上会显著提升清晰度。

先验三:跨尺度重复性先验与自相似性先验#

图像中的小斑块在 高分辨率尺度 下和 低分辨率尺度 下会 重复 出现。即低分辨率图中的某个小块,在高分辨率图中也会有一个相似的更精细的小块。

  • 不需要百万张外部数据集,这一张图本身就是一个“字典”。
  • 具体操作:将低分辨率图进行降采样(变得更模糊),然后去原图中搜索匹配的块。你会发现原图(较大尺寸)中的某些小块,和降采样后图像(较小尺寸)中的小块长得几乎一样。既然如此,我们就可以用原图中“大尺寸”的高频细节,去填充低分辨率图中“小尺寸”对应位置的缺失细节。这就是利用图像自身的多尺度重复性来“自产”高频信息

Noise2Noise(无监督学习的先驱)#

在Noise2Noise诞生之前,主流的 监督学习 去噪范式是这样的:给模型输入一张带噪图 y=x+ny=x+n,让它学会输出干净图xx需要海量的 (带噪图,干净图) 图像对。这在现实中极其困难

但是,Noise2Noise的核心发现是:只要噪声是零均值的,网络就可以用两张带噪图互相监督学习

  • 先验不再需要人工设计公式(如TV、NLM),而是隐藏在数据本身的统计规律之中。

使用条件:

  1. 噪声是零均值的(或均值已知可去除)。
  2. 两张带噪图是同一场景的独立观测(例如连续按两次快门得到的照片)。
  3. 场景本身是静态的(或变化极小),保证真实信号 xx 不变。

损失函数等价性推导#

对于损失函数:

L(θ)=ifθ(yi)xi2L(\theta) = \sum_i ||f_\theta(y_i) - x_i||^2
  • 传统视角:这里yiy_i 是带噪图, xix_i 是对应的干净图。带噪图经过网络后,输出的结果与干净图的差异被最小化。
L(θ)=ifθ(y1)y22L(\theta) = \sum_i ||f_\theta(y_1) - y_2||^2
  • Noise2Noise视角:y1y_1y2y_2同一场景、独立拍摄的两次带噪观测(例如连续按两次快门得到的照片)。

y2=x+n2y_2 = x + n_2 代入损失函数:

L(θ)=ifθ(y1)xn2)2=i(fθ(y1)x2+n222(fθ(y1)x)Tn2)L(\theta) = \sum_i ||f_\theta(y_1) - x-n_2)||^2\\ = \sum_i \left(||f_\theta(y_1) - x||^2 + ||n_2||^2 - 2(f_\theta(y_1)-x)^T n_2\right)
  • 其中噪声零均值 E[n2]=0\mathbb{E}[n_2] = 0且和fθ(y1)xf_\theta(y_1)-x独立,最后一项的期望为0。

  • 噪声方差 E[n22]\mathbb{E}[||n_2||^2] 是常数项,不影响优化。

所以,等价于传统的监督学习范式!网络仍然会收敛到干净图 xx

视觉先验-在低级视觉中的应用
https://biscuit0613.github.io/posts/cv/cv-priorinlowlevelvision/
作者
Biscuit
发布于
2026-06-25
许可协议
CC BY-NC-SA 4.0
视觉先验-在损失函数中的体现
Stereo Vision(立体视觉)- 双目相机与对极几何