图像采集与数字摄影基础
本课程主要涵盖四个核心部分:图像示例与类型、光学系统原理、傅里叶变换与二维采样、以及噪声建模。
图像的本质与复杂性
自然图像的信息密度
一张图像既庞大又极其复杂。即使是一张600万像素的普通照片,其中也有非常多的细节信息
图像中存在大量的几何结构和杂乱结构(clutter),这使得图像处理成为一项极具挑战性的任务。
成像设备与研究范围
本课程主要关注数码相机和智能手机的成像原理。智能手机的困难在于其物理限制,由于厚度太薄因此没有足够的光学后退空间。
课程不涉及的图像类型:数字高程模型(DEM),雷达图像,多光谱图像,X射线图像
深度图像与视觉感知
激光深度图像(Range image)通过发射激光并计算返回时间来获取深度信息。在这类图像中,亮区对应远距离区域(光子返回少),暗区对应近距离区域。当观看这样的深度图像时,我们能很自然地识别出灌木丛和树木。
图像的数学表示
灰度图像本质上是一个二维函数,可以被视为一个曲面。在这种表示下,亮的区域对应高值,暗的区域对应低值(接近0)。
图中展示了一张房子图像的曲面表示,当以这种方式展示时,人眼很难理解其内容,需要较长时间才能识别出这是一座房子。
相反,对于数字高程模型,曲面表示反而更加直观,因为高值直接对应地理上的高海拔区域,我们能清楚地看到山脉的形态。
图像噪声初探
夜间拍摄的图像中,传感器上记录的光子数量不大。在这种低光照条件下,信噪比不高,我们能看到噪声的特征——通常表现为小颗粒状的结构。
针孔相机模型
历史背景与基本原理
针孔模型(法语 sténopé,英语 pinhole 或 camera obscura)是最简单的图像采集模型。这一原理早已为人所知:古希腊时期就有用针孔观察日食的记载,10世纪阿拉伯学者Alhazen(Ibn al-Haytham)重新发现并深入研究了这一原理,他假设人眼也以类似方式工作——虽然当时想象自己能倒着看东西是完全不可想象的,15世纪初Brunelleschi、1500年达芬奇、1604年开普勒都对此有所贡献,文艺复兴时期它被用作绘制透视图的工具。
工作原理:我们用一个盒子来捕捉场景,在盒子上挖一个非常小的孔。场景中的每个点被光源照亮后向各个方向发射光线,但只有穿过小孔的那一条光线能够到达后面板,从而在传感器上形成倒立的图像。关键条件是孔必须足够小——如果完全移除前面板,所有方向的光线都会到达后面板的每个位置,最终只能观察到灰色的混合,没有任何有意义的图像。
图中展示了一个真实的针孔成像例子:在一个房间里,光线只从缝隙透进来,在墙上可以观察到外面建筑物的倒像。
投影几何与尺寸感知
根据针孔模型的几何关系,物体发射的光线被孔径 O 选中,并投影到焦平面上。焦距 f 定义为孔径到焦平面的距离。物体在传感器上的表观高度为:
其中 f 是焦距,h 是物体实际高度,z 是物体到孔径的距离。
我们观察到的不是物体的绝对大小 h,而是 h/z 的比值。物体的表观大小与距离成反比。这意味着通过单张图像无法确定物体的真实大小和距离,在计算机视觉中,例如自动驾驶汽车看到另一辆车,你不知道它有多远,因此必须为不同大小的物体出现做好准备。
这一特性导致了视觉系统和图像分析算法必须采用多尺度方法。没有有效的方法不是多尺度的,所有系统都需要能够分析不同尺度的事物。最新的神经网络实际上是级联操作,越来越精细,人类视觉系统也是如此。
尺寸恒常性与视觉错觉
图中展示了Ponzo错觉:走廊中两个人,如果用尺子在屏幕上测量,他们的尺寸完全相同。然而,我们会感知到后方的人更大。
这种错觉可以用针孔模型的几何分析完全解释。设两个物体的表观高度分别为 h_1/z_1 和 h_2/z_2,假设焦距 f 相同。如果 h_2/z_2 = h_1/z_1(屏幕上测量相同),而大脑通过走廊的透视信息判断 z_2 > z_1,那么必然 h_2 > h_1。这就是为什么我们感知到后方的人更大——视觉系统利用场景结构的上下文信息来扭转绝对大小信息的缺失。
遮挡现象
遮挡(occultation)是针孔模型的第二个后果。当一个物体位于光线路径上时,会阻断光线,导致后方物体不可见。物体大多是不透明的,会相互遮挡。
遮挡的本质特征是完全非线性的,它通过彻底破坏结构来运作。这与声音中的情况完全不同:如果两个人同时说话,他们的声音会以大致加性的方式混合,但在视觉中,如果一个人从另一个人面前经过,她会让第二个人完全消失。
由于物体不是相加而是重叠,图像中形成了轮廓(edges)。轮廓是物体内外之间的不连续性,我们很快就会从一种颜色变到另一种颜色。这些轮廓是图像中最基本也是最重要的特征结构。
非模态完备
由于遮挡的存在,当我们观察场景时,几乎看不到任何物体的完整形态——总有东西遮挡着其他东西。人类视觉系统发展出了非模态完备(amodal completion)的能力来处理这一问题。
视觉系统首先识别所谓的T型连接点(T-junctions)。每次有一个轮廓被另一个轮廓覆盖时,就会形成T型连接。T型连接是遮挡的痕迹,表示存在一个物体覆盖了另一个物体。这在计算机视觉中是基本的构建模块之一。
一旦识别出开放的连接点,视觉系统会想象缺失的区域。它以最规律的方式填补空白——不要太多曲率,不要太长。从一个连接点到另一个连接点的路径会最小化依赖于长度和曲率的能量。
图中展示了一个马的图像,中间被黑色矩形遮挡。当被问到黑色矩形背后隐藏着什么时,我们通常会想象这是一匹躺着的完整的马。视觉系统想象T型连接点处马的身体已经消失的部分,通过连接来补全。
这种非模态完备是视觉系统在所谓的预注意视觉(pre-attentive vision)中非常快速完成的事情,它优先于对上下文的先验认知和观察,是一种非常快速的视觉处理过程。
针孔模型的局限性与模糊
光圈与进光量的矛盾
针孔模型的问题在于实际使用非常困难。为了让光线进入,孔不能太小——没有光,我们就无法拍摄。因此必须增大光圈尺寸来获取更多光线。
然而,当我们增大光圈时,不再是单一光线到达传感器,而是从场景中一个点发出的多条光线形成一个光锥(light cone)。这个光锥在焦平面上形成一个小圆盘而不是一个点,从而产生模糊(blur)。
对于直径为 D 的光圈和距离为 z 的场景 S,我们观察到的不是场景本身,而是场景与一个核的卷积:
其中 g_z 是半径为 (z+f)D/z 的圆盘指示函数。
图中标注的 R = D(z+f)/z 正是模糊圆盘在焦平面上的半径。
当 z >> f(物体距离远大于焦距)时,场景中每个点产生的模糊量大致相同,此时可以近似为空间不变的卷积。但严格来说,由于 z 因物体距离不同而变化,这实际上是一个空间变化的卷积,数学上相当复杂,大多数时候我们假设所有物体在相似距离处以简化问题。
更精细的建模还需要考虑衍射现象,但衍射只在光圈 D 值很小(接近光波长量级)时才明显。在普通摄影中,除非完全关闭光圈,否则很少遇到衍射问题。
模糊的视觉效果
图中展示了原始图像(左)和经过低通滤波器(高斯滤波器)卷积后的图像(右)。模糊意味着卷积——图像与一个核的卷积产生了我们在照片中看到的模糊效果。这正是因为光圈比无限小的孔大一点所导致的结果。
透镜模型
透镜的引入动机
为了在保持足够大光圈(获取足够光线)的同时获得清晰图像,我们需要使用透镜。透镜的作用是重新聚焦通过开口的光线,使得从物体一点发出的多条光线能够汇聚到像平面上的同一点。
即使使用透镜,我们仍然得到卷积形式 g * S,其中 g 是光学系统的冲激响应(impulse response)。这里忽略了各种像差和干涉效应。
薄透镜模型
薄透镜模型是一个相当简化的框架。
图中展示了薄透镜的几何光学示意图:O 是光学中心,F 和 F' 是两侧的焦点,f 是焦距(光学中心到焦点的距离)。P 是物平面,P' 是像平面,d 是物体到透镜的距离,d' 是透镜到像平面的距离。
从物平面 P 上一点发出的光线会汇聚到像平面 P' 上。几何光学的三条基本规则是:
- 穿过光学中心 O 的光线直线传播不偏折
- 平行于光轴的入射光线经过透镜后通过焦点 F'
- 通过焦点 F 的入射光线经过透镜后平行于光轴射出
当正确聚焦时,满足笛卡尔薄透镜公式(也称为高斯公式):
如果满足
那么所有从物平面某一点发出的光线都会在像平面上的同一个点汇聚。
聚焦(focus)就是调整 d' 的位置,使传感器所在的平面处于正确位置,使物平面中某一点的射线收敛。当用相机拍照时,转动对焦环实际上就是在调整 d',使这个公式成立。
如果被拍摄的物体不在物平面 P 上(即不满足上述公式),就会产生离焦模糊(out-of-focus blur),其效果仍然可以用卷积来描述。
薄透镜模型的假设包括:
- 光线接近透镜表面的法线方向传播
- 忽略光在透镜内部的传播
图像采集的光学模型
点扩散函数的构成
我们观察到的场景 \tilde{s} 不是原始场景 s 本身,而是场景与一个核的卷积:
其中 g_o 称为点扩散函数(Point Spread Function,PSF) ,PSF由多个因素组合而成,这些效应的卷积共同构成了最终的PSF:
- g_{ouv} 是有限光圈造成的模糊
- g_{flou} 是聚焦不准确(离焦)造成的模糊
- g_{fil} 是运动模糊。
卷积模型的局限性
卷积模型有一个重要的缺陷:模糊程度取决于物体与相机之间的距离。
图中展示了一组小雕像的照片,可以看到前景和背景的雕像比焦平面上的雕像更模糊。这意味着严格来说,场景是与一个空间变化的核卷积,而非空间不变的卷积。空间变化卷积在数学上非常难以处理,因此大多数时候我们假设所有物体在相似距离处以简化问题。
景深
景深的定义
景深(Depth of Field,DOF)定义为对于给定成像设备,最近和最远的清晰物体之间的距离。这里的清晰(in focus)意味着模糊光斑的尺寸小于某个阈值 \epsilon
图中的几何示意图展示了景深的概念:P 是聚焦的物平面,P_1 和 P_2 分别是景深范围内最近和最远的平面。绿色区域表示处于焦点内的物体范围。
当物体位于 P 平面时,其像点清晰,当物体偏离 P 平面时,像点会扩散成一个模糊圆,半径为 \epsilon。我们固定一个可接受的模糊阈值 \epsilon(通常与传感器像素尺寸相关),然后计算所有模糊光斑小于 \epsilon 的物体所在区域,这个区域的深度范围就是景深 \Delta。
景深公式的推导
利用笛卡尔公式,设系统光圈直径为 D,可以推导出景深的精确公式:
其中 p 是物体到相机的距离,f 是焦距,D 是光圈直径,\epsilon 是允许的模糊阈值。
进一步假设 \delta << s(传感器尺寸远小于场景尺寸)且 f << p(焦距远小于物距,即非微距摄影的通常情况),可以得到简化公式:
景深的影响因素
从简化公式 \Delta \approx 2\epsilon p^2 / (Df) 可以看出景深取决于三个可控因素:
-
光圈尺寸 D:景深与光圈直径成反比。光圈越大(D 越大),景深越小。如果打开相机让它在大光圈下捕捉大量光线,景深就会很小。
-
焦距 f:景深与焦距成反比。焦距越长,景深越小。焦距实际上就是变焦因子——焦距越大,视角越窄,看到的是远处的小物体被放大。
-
物距 p:景深与物距的平方成正比。物体距离越远,景深越大。当聚焦于无限远时,一切都是清晰的。智能手机由于焦距很短,很快就能达到无限远聚焦,因此大多数时候一切都是清晰的。
光圈与光圈值
光圈值的定义
D 是光圈(diaphragm)的直径,f 是焦距。光圈值(aperture value)或称f数(f-number)定义为:
光圈值通常按几何级数排列:f/1.8、f/2.8、f/4、f/5.6、f/8、f/11等。
图中展示了不同光圈值对应的光圈叶片开口大小。
当我们说"大光圈"时,通常指的是 D 大,此时 N = f/D 小。所以f/1.8是大光圈(D 大,N 小),f/11是小光圈(D 小,N 大)。比如手机上标注f/1.8,意味着这是一款光圈很大的手机,能捕捉大量光线,适合在低光环境(如派对)下拍照。
光圈值增大的效应
当 N 增大(即光圈 D 减小)时,在焦距 f 不变的情况下会产生以下效应:
景深增大:根据公式 \Delta \approx 2\epsilon p^2 / (Df),D 减小使 \Delta 增大,更多物体处于清晰范围内。
衍射变得更明显:当光圈很小时,孔径尺寸接近光波长量级,衍射现象开始影响成像质量。
渐晕减少:渐晕(vignetting)是图像角落变暗的现象,小光圈可以减轻这一效应。
景深的实际对比
图中展示了同一场景在不同光圈值下的拍摄效果。当 N = 1.4(大光圈)时,只有中间一排小雕像是清晰的,前景和背景都呈现明显的模糊。
当 N = 13(小光圈)时,景深大大增加,几乎所有雕像都处于清晰范围内。这直观地验证了景深公式:光圈越小(N 越大),景深越大。
艺术模糊与散景
摄影中的浅景深应用
在摄影实践中,我们并不总是追求最大景深。相反,摄影师经常利用浅景深来制造所谓的艺术模糊(artistic blur)。
图中展示了一张用f/2.8光圈拍摄的花朵照片,背景完全模糊,使主体更加突出。这种技术在肖像摄影中尤为常用。
在模糊的背景中,我们可以看到光圈形状的痕迹——这正是因为离焦区域是与光圈指示函数卷积的结果。光圈叶片的形状决定了模糊光斑的形状,这种效果被称为散景(bokeh)。
智能手机的人像模式
用智能手机很难实现真正的浅景深效果,因为智能手机很薄,难以拥有大光圈,而且即使光圈相对较大,由于焦距很短,模糊程度也比传感器距离较远的相机少得多。因此,智能手机制造商在手机中嵌入了算法来模拟这种效果,称为人像模式或背景虚化模式。
其原理是:用多个相机拍摄同一场景的多张照片,角度略有不同(立体视觉原理)。两张视图加上视差信息可以估计出物体的距离。相机能够识别出场景中所有物体的距离后,通过模拟空间变化的卷积,对远离焦平面的物体进行模糊处理,从而在后期产生类似光学散景的效果。
焦距对图像感知的影响
焦距与视角
焦距 f 对图像感知有很大影响。图中展示了在24×36mm格式下,从同一位置使用不同焦距拍摄的效果:28mm是短焦距(广角),视野宽阔,图像尺寸小,50mm大约是人眼的正常视角,70mm稍微放大,210mm是长焦距,视野狭窄,图像尺寸大。焦距越大,相当于越大的变焦因子,看到的是远处物体被放大的效果。
焦距与透视
当改变焦距的同时也改变拍摄位置时,透视效果会发生变化:24mm近距离拍摄会产生夸张的透视(perspective exagérée),50mm产生正常透视,100mm和200mm远距离拍摄会产生压缩的透视(perspective écrasée)。狗仔队用长焦镜头在机场拍摄的照片通常背景完全模糊,正是因为长焦距导致景深极小。
超越卷积模型的非线性效应
卷积模型(线性、平移不变)无法解释的现象包括几何畸变、色差和渐晕。
几何畸变
几何畸变是镜头引起的图像形变。枕形畸变(pincushion distortion,法语coussinet)常见于长焦镜头,图像边缘向外凸,桶形畸变(barrel distortion,法语barillet)常见于广角镜头,图像边缘向内凹。
图中展示了建筑物照片的两种畸变效果——直线变成了曲线。
色差
色差(chromatic aberrations)是因为光学系统的特性取决于波长。不同颜色的光(红、绿、蓝)通过透镜时折射角度不同,导致它们聚焦在不同位置。
纵向色差(longitudinal aberration):焦平面的位置取决于波长。
图中水面反光的照片展示了这种效果——不同颜色的光在不同深度聚焦。
横向色差(transversal/lateral aberration):缩放因子(物体大小的放大倍数)取决于波长。这意味着红、绿、蓝三种颜色在成像平面的不同位置聚焦,产生彩色边缘。
这些像差,尤其在智能手机中,通常会被算法校正。一旦了解设备的特性,就可以分别捕捉红、绿、蓝三个通道,然后对它们应用几何变换来补偿色差。
渐晕
渐晕(vignetting)是图像角落光线减少的现象,导致图像边缘比中心暗。
图中展示了渐晕校正前后的对比: 左侧图像角落明显偏暗,右侧是校正后的效果,亮度更加均匀。
曝光时间与运动模糊
曝光时间的作用
曝光时间是另一个关键的图像采集参数。它可以补偿光线不足或小光圈的情况——如果光线较少,可以通过延长曝光时间来收集更多光子。然而,当物体在移动时,曝光时间应该较短。否则会产生运动模糊(motion blur)。
图中展示了一张伦敦街头的照片,红色双层巴士呈现明显的运动模糊,而红色电话亭是清晰的。这是因为在整个曝光时间内,巴士在移动,设备在不同位置捕捉到它。我们最终看到的是物体在所有经过位置的叠加,这等价于与运动方向上拉长的核进行卷积。
数字采样
从连续到离散
在光线被光学系统聚焦后,光信息在焦平面上被采集。数字传感器是一个光感受器阵列,利用光电效应将光子转换为电子(使用硅等半导体元件)。这是光信号的采样过程,将连续的二维函数转换为离散值:
传感器对光子的积分(计数)过程可以建模为与 g_{capt}(传感器的指示函数)的卷积。这可以被建模为对PSF的修正。
传感器的工作原理
图中展示了传感器的工作流程:光(以每平方微米光子数表示)进入传感器,产生散粒噪声(与光子数的平方根成正比)。传感器具有一定的量子效率(Quantum Efficiency),将光子转换为电子。电子被收集在势阱(well)中,势阱有饱和容量限制。同时存在时间暗噪声(Temporal Dark Noise)。最终,信号经过增益放大(Gain,单位e-/ADU)转换为灰度值(如16位)。像素尺寸以微米为单位。
关键点在于:每个光感受器单元是对光子进行计数,而不是获取点值。传感器不是在一个点上采样,而是在一个区域上积分所有落入该区域的光子。
传感器积分的数学描述
假设传感器是方形的,彼此相邻排列,图中展示了以原点 (0,0) 为中心、边长为 C 的方形传感器阵列。I_{i,j} 表示位置 (i,j) 处捕获的图像值。
数学推导过程如下:
这表示在以 (i,j) 为中心的方形区域 C 上对图像进行积分。将其改写为:
其中 \mathbb{1}_C 是方形传感器的指示函数(在方形内为1,方形外为0)。由于方形关于原点对称(x \to -x,y \to -y 不改变指示函数),可以进一步改写为:
这正是卷积的定义。因此,真正的采样操作是对 I * \mathbb{1}_C 进行采样,而不是直接对图像 I 采样。
原始的PSF g_0 被修正为:
与传感器指示函数 \mathbb{1}_C 的卷积会产生额外的低通滤波效果。传感器尺寸 C 越小,高频保留越多,图像越清晰,但 C 越小,捕获的光子越少,信噪比越低。
彩色图像与拜耳滤镜
拜耳滤镜的结构
传感器本身并不区分颜色,它只是计数光子。为了获得彩色图像,需要在传感器前放置滤色片,让不同的传感器分别感知不同颜色的光。这些滤色片按照拜耳滤镜(Bayer frame)的模式组织。
拜耳滤镜的排列是:红、绿、红、绿交替,然后绿、蓝、绿、蓝交替。绿色滤镜的数量是红色和蓝色的两倍,原因是人类视觉系统对绿色部分最敏感。
图中展示了传感器阵列(Cavity Array)和滤色片阵列(Color Filter Array)的结构。入射光(Incoming Light)通过光腔(Light Cavities)后被滤色片过滤,不同位置的传感器只接收特定波长的光。
传感器尺寸
智能手机约1微米,单反相机(全画幅)约10微米。传感器越大,能捕获的光子越多,但设备也越大。由于传感器是方形的,面积与边长的平方成正比,因此10微米的传感器面积是1微米传感器的100倍
彩色捕获的替代方案
除了拜耳滤镜,还有其他捕获彩色图像的方式。Tri-CCD系统使用棱镜将光分成红、绿、蓝三个通道,分别由三个独立的传感器捕获。Foveon传感器将三层传感器垂直叠放在一起,利用不同波长的光在硅中穿透深度不同的特性,上层捕获蓝光,中层捕获绿光,下层捕获红光。
傅里叶分析回顾
傅里叶变换的定义
设 f \in L^1(\mathbb{R}^2)(可积函数),其傅里叶变换定义为:
这里需要注意,该定义中没有 2\pi 因子。在信号处理课程中通常使用的替代定义是 \exp(-2i\pi\mathbf{x}.\omega),但这对后续内容没有本质影响,只是某些公式中会出现 2\pi 因子。
傅里叶变换 \hat{f} 是连续的,且当 f \to \infty 时趋于0。从现在起,我们假设函数 f 足够光滑且在无穷远处快速衰减:
这意味着函数及其所有导数都比任何多项式衰减得更快。典型例子是高斯函数。实际上,我们处理的是离散的有限数字图像,所以这些数学假设不会造成问题。
傅里叶逆变换定义为:
傅里叶变换的基本性质
卷积定理和乘积定理:
即空间域的卷积对应频率域的乘积,空间域的乘积对应频率域的卷积(带有 (2\pi)^{-2} 因子)。
平移性质:
即空间域的平移对应频率域乘以复指数,空间域乘以复指数对应频率域的平移。
采样操作的数学建模
狄拉克冲激函数
函数 f 在点 x 处的采样可以建模为:
其中 \delta_x 是位于 x 处的狄拉克冲激函数。狄拉克函数不是经典意义上的函数——它在 x 处取无穷大值,在其他地方为零。可以将其理解为一系列门函数的极限:宽度越来越窄,高度越来越高,但面积保持为1。当宽度趋近于零时,极限就是狄拉克函数。
狄拉克冲激函数的傅里叶变换为:
在某些条件下,卷积与乘积的关系对广义函数仍然成立。
狄拉克梳子
狄拉克梳子(Dirac comb)定义为所有位于 a 的整数倍处的狄拉克函数之和:\sum_{j \in \mathbb{Z}} \delta_{aj}。这代表了在间隔 a 处的采样位置。
可以证明狄拉克梳子的傅里叶变换为:
间隔为 a 的狄拉克梳子,其傅里叶变换是间隔为 2\pi/a 的狄拉克梳子。空间域的采样间隔越大,频率域的复制间隔越小。
图像采集的完整模型
采集模型的数学表达
回到图像采集的建模,采集到的图像 u 可以表示为:
- s 是场景(L^1 函数)
- g_0 是系统的PSF,包含传感器积分效应(g_{ouv} * g_{flou} * g_{fil} * g_{capt})
- \Pi_\Gamma = \sum_{\gamma \in \Gamma} \delta_\gamma 是沿网格 \Gamma 位置的冲激函数
一维混叠
一维采样的频谱分析
考虑一维情况,设 \Gamma = a\mathbb{Z}(间隔为 a 的整数网格),则 \Pi_\Gamma = \sum_{j \in \mathbb{Z}} \delta_{aj}。采样信号 u = f \cdot \Pi_\Gamma,其傅里叶变换为:
展开后得到:
采样信号的傅里叶变换是原始信号傅里叶变换的周期化复制,复制间隔为 2\pi/a。
图中展示了两种情况:
- 上图中 2\pi/a 足够大,频谱的复制品不重叠,中央区域([-\pi/a, \pi/a])内只有原始频谱
- 下图中 2\pi/a 太小,频谱复制品发生重叠,这就是混叠(aliasing)
在重叠区域,我们观察到的是多个频谱分量的叠加,信息已经丢失,无法恢复原始频谱。采样率 a 越小(采样越密),2\pi/a 越大,复制品越不容易重叠。
香农采样定理与信号重建
如果傅里叶变换的支撑 \text{Supp}(\mathcal{F}(f)) \subset [-\pi/a, \pi/a],即原始信号是带限的,频谱完全包含在区间 [-\pi/a, \pi/a] 内,那么频谱复制品不会重叠。此时:
这意味着将采样信号的傅里叶变换乘以区间 [-\pi/a, \pi/a] 的指示函数,就能精确恢复原始信号的傅里叶变换。因此我们可以通过傅里叶逆变换恢复原始函数 f:
由于矩形指示函数的傅里叶逆变换是sinc函数:
我们得到香农插值公式:
这个公式表明:如果满足香农条件(带限信号),可以从采样值 f(ja) 完美重建连续函数 f(x),插值核是sinc函数。
如果不满足香农条件,频谱 f \cdot \Pi_\Gamma 会以不可逆的方式退化——频谱的重叠部分信息已经丢失,无法恢复。
香农定理的正式陈述
设 f \in L^2(\mathbb{R}),若 \mathcal{F}(f)(\omega) = 0 对所有 \omega \notin [-\pi/a, \pi/a] 成立(即 f 是带限函数),则:
该公式在 L^2(\mathbb{R}^2) 意义下收敛。如果 \mathcal{F}(f) 有有界支撑,则 f \in C^\infty(无穷可微),公式对每个点都成立。对于 f \in L^1(\mathbb{R}),公式一致收敛。
需要注意的是,sinc函数衰减很慢(像 1/x),因此用这个公式进行实际重建时,需要离采样点很远的样本值才能准确重建。香农定理告诉我们如果正确采样就不会丢失信息,但实际应用中通常使用比sinc衰减更快的插值核。
二维采样与对偶网格
二维网格的定义
在二维情况下,采样网格由两个不共线的基向量定义。设 \Gamma = \mathbb{Z} \cdot \mathbf{e}_1 + \mathbb{Z} \cdot \mathbf{e}_2,其中 \mathbf{e}_1, \mathbf{e}_2 \in \mathbb{R}^2 不共线。这意味着网格点是基向量的所有整数线性组合。
对偶网格(dual grid)定义为 \Gamma^* = \mathbb{Z} \cdot \mathbf{e}_1^* + \mathbb{Z} \cdot \mathbf{e}_2^*,其中对偶基向量满足:
这里 \delta_{i,j} 是克罗内克符号(i=j 时为1,否则为0)。具体来说:\mathbf{e}_1 \cdot \mathbf{e}_1^* = 2\pi,\mathbf{e}_1 \cdot \mathbf{e}_2^* = 0,\mathbf{e}_2 \cdot \mathbf{e}_1^* = 0,\mathbf{e}_2 \cdot \mathbf{e}_2^* = 2\pi。
这意味着 \mathbf{e}_2^* 垂直于 \mathbf{e}_1,\mathbf{e}_1^* 垂直于 \mathbf{e}_2。对偶基的长度由点积条件 \mathbf{e}_i \cdot \mathbf{e}_i^* = 2\pi 确定。如果学过晶体学,这与倒易网格(reciprocal lattice)是相同的概念。
图中展示了直接网格(黑色,基向量 \mathbf{e}_1, \mathbf{e}_2)和对偶网格(红色,基向量 \mathbf{e}_1^*, \mathbf{e}_2^*)的几何关系。
网格示例
方形网格(Square grid):直接网格是边长为 c 的正方形网格,对偶网格也是正方形网格,边长为 2\pi/c。这精确地退化为一维的情况。
六边形网格(Hexagonal grid):直接网格的基向量夹角为60°,对偶网格也是六边形网格,基向量夹角为120°,边长关系涉及 \sqrt{3} 因子。图中展示了两种网格在空间域(Spatial Domain)和傅里叶域(Fourier Domain)的对应关系。
二维混叠
二维采样的频谱分析
设直接网格 \Gamma = \mathbf{e}_1 \mathbb{Z} + \mathbf{e}_2 \mathbb{Z},对偶网格 \Gamma^* = \mathbf{e}_1^* \mathbb{Z} + \mathbf{e}_2^* \mathbb{Z},狄拉克梳子 \Pi_\Gamma = \sum_{j,k \in \mathbb{Z}} \delta_{j\mathbf{e}_1, k\mathbf{e}_2}。
可以证明狄拉克梳子的傅里叶变换为:
其中 |\mathbf{e}_1^* \wedge \mathbf{e}_2^*| 是对偶网格单元格的面积。
采样图像 u = f \cdot \Pi_\Gamma,其傅里叶变换为:
展开得到:
采样图像的傅里叶变换是原始图像傅里叶变换在对偶网格 \Gamma^* 上的周期化复制。每个网格点 \gamma \in \Gamma^* 处都有一个频谱的复制品。
二维混叠的发生条件
混叠发生的条件是:对于某个 \gamma \in \Gamma^*,\gamma + \text{Supp}(\mathcal{F}(f)) 与其他复制品不相交的条件不满足。换句话说,当频谱支撑 \text{Supp}(\mathcal{F}(f)) 的平移复制品在对偶网格上发生重叠时,就会产生混叠。
图中展示了频谱(蓝色圆盘,标记为 \text{Supp}(F(f)))在对偶网格上的复制情况。如果对偶网格的基向量 \mathbf{e}_1^*, \mathbf{e}_2^* 足够长(即直接网格的采样足够密),频谱复制品不会重叠,否则会产生混叠。
与一维情况相比,二维采样有更多的自由度:我们可以选择网格的形状和方向来最优地覆盖频谱。如果频谱不是各向同性的(例如椭圆形而非圆形),可以设计特殊的采样网格,在高频方向采样更密,低频方向采样更稀疏。
二维香农定理
定理陈述
设 K \subset \mathbb{R}^2 是一个区域,f \in L^2(\mathbb{R}^2),满足以下两个条件:
条件一:对于所有 \gamma, \gamma' \in \Gamma^*,有 \gamma + K \cap \gamma' + K = \emptyset。这意味着区域 K 在对偶网格的所有平移下不重叠,即频谱复制品不会相交。
条件二:\text{Supp}(\mathcal{F}(f)) \subset K,即信号的频谱支撑完全包含在区域 K 内。
在这两个条件下,可以从采样值完美重建原始函数:
其中插值核 s 定义为:
这里 |K| 是区域 K 的面积,\mathbb{1}_K 是 K 的指示函数。
与一维情况类似,这个公式通过在每个采样点放置一个插值核 s,并用采样值作为权重进行加权求和来重建连续函数。区别在于一维使用矩形指示函数(对应sinc插值核),而二维可以使用任意满足非重叠条件的区域 K。
采样与抗混叠的实际考虑
PSF的抗混叠作用
场景 s 中的高频成分(例如边缘造成的突变)会被PSF g_o 所抑制。镜头和光圈本身就起到了低通滤波的作用,消除部分高频。
如果PSF的低通效果不足以满足采样条件(即 \text{Supp}(\mathcal{F}(f)) \not\subset K),可以添加额外的低通滤波器:用 h * f 替代 f,其中 \text{Supp}(F(h)) \in K。在实际相机中,这通常通过在每个传感器顶部添加微透镜来实现,微透镜会进一步抑制高频。
采样密度与传感器尺寸的权衡
如果提高采样频率(即直接网格更密),传感器尺寸必须相应减小。然而,根据之前的分析,传感器积分效应会修正PSF为 g_0 * \mathbb{1}_C。当传感器尺寸 C 减小时,\mathcal{F}(h_{capt}) 的支撑会增大(因为空间域变窄对应频率域变宽),这会减弱高频抑制效果。
传感器越小,空间分辨率越高,但高频抑制越弱,更容易产生混叠,传感器越大,捕获光子越多,高频抑制越强,但空间分辨率越低。整个成像系统的设计本身就是在管理这种权衡。
采样网格的优化设计
设计参数
设计采集系统时,需要确定多个参数,包括对偶网格 \Gamma^* 和区域 K。设计目标是让 K 包含尽可能大比例的 \text{Supp}(\mathcal{F}(u))。
一种可行的方法是:首先设计对偶网格 \Gamma^*,然后选择 K 为 \Gamma^* 的Voronoi单元格,即:
Voronoi单元格包含所有比任何其他网格点更接近原点的点。如果频谱是各向同性的(所有方向上衰减相同)且递减的,这种选择是合理的。
图中展示了三种不同的网格及其Voronoi单元格:(a) 方形网格,Voronoi单元格是正方形,(b) 六边形网格,Voronoi单元格是正六边形,(c) 中间网格,Voronoi单元格是不规则六边形。
采样密度与采样质量
采样密度定义为:
这是单位面积内的采样点数,等于直接网格单元格面积的倒数。
对于给定的采集系统和已知频谱 \mathcal{F}(u) 的图像,假设满足香农条件,采样过程的质量可以用以下比值衡量:
这个比值是频谱支撑面积与对偶网格单元格面积的比值。比值越接近1,说明采样越高效——频谱尽可能填满了可用的频率空间,没有浪费。如果频谱支撑尽可能贴近对偶网格的单元格,各个单元格之间距离更近,因此直接网格的单元格更大,传感器可以更大,能够捕获更多光子。
六边形网格的优势
各向同性频谱的最优覆盖
假设频谱支撑 \text{Supp}(\mathcal{F}(f)) 是一个圆盘(即频谱各向同性),如何最高效地覆盖这些圆盘使它们不重叠?
使用方形网格时:半径为 R 的圆盘需要放在边长为 2R 的正方形中,正方形面积为 4R^2。
使用六边形网格时:半径为 R 的圆盘放在正六边形中,六边形的面积约为 2\sqrt{3}R^2 \approx 3.46R^2。
计算表明,六边形网格比方形网格的采样效率高约15%。图中直观地展示了这一点:左侧用方形网格排列圆盘,圆盘之间有较大空隙,右侧用六边形网格排列,空隙更小,填充更紧密。
这15%的效率提升意味着在图像域中,传感器可以大15%,因此能捕获15%更多的光子。更多光子意味着更高的信噪比,因此图像质量更好。
富士胶片的Super CCD
交错行设计
富士胶片曾推出一种称为Super CCD的传感器设计。其核心思想是使用交错行(staggered rows):在给定的水平和垂直分辨率下,可以使用更大的传感器。
图中对比了传统CCD和Super CCD的结构。传统CCD使用规则的矩形排列,而Super CCD将传感器(Photo Diode)旋转45°并交错排列,形成类似蜂巢的六边形结构。
这种设计背后的原理是:图像中大多数高频成分集中在水平和垂直方向(因为建筑物、地平线等边缘通常是水平或垂直的),而对角线方向的高频相对较少。因此可以在对角线方向上容忍更多的混叠,将采样资源集中在水平和垂直方向。
这种设计的代价是:改变传感器排列后,需要重新设计所有后续处理算法,包括插值公式、去马赛克算法等。同时,如果使用非标准的传感器排列,就无法使用传统的拜耳滤镜模式,颜色处理也需要重新设计。
Super CCD的滤色片排列
图中展示了两种Super CCD的滤色片阵列布局:左侧是传统Super CCD滤色片阵列(Conventional Super CCD color filter array layout),右侧是Super CCD EXR滤色片阵列(Super CCD EXR color filter array layout)。两者都采用了六边形排列的传感器,但颜色滤镜的分布模式不同。EXR版本的设计允许更灵活的曝光控制和动态范围扩展。
人眼光感受器的空间排列
视网膜的传感器结构
人眼视网膜上的光感受器排列也呈现出类似六边形的高效结构。图中展示了两种不同区域的显微照片:
图B展示的是中央凹(fovea)上的视锥细胞(cones)。中央凹是视网膜上分辨率最高的区域,负责中央视觉和颜色感知。可以看到视锥细胞排列紧密,呈现近似六边形的结构。
图D展示的是外围区域的视锥细胞和视杆细胞(rods)的混合分布。外围区域的视杆细胞(较小的圆形结构)数量更多,负责暗视觉和周边视觉,而视锥细胞(较大的结构,图中标记为黑点)分布更稀疏。
这种六边形排列是进化过程中形成的高效结构,与我们之前讨论的六边形网格采样效率最高的结论一致。
离散傅里叶变换
DFT的定义
在实际应用中,我们处理的是离散图像 \{u_{k,l}\}_{k=1,...,M; l=1,...,N}。离散傅里叶变换(DFT)定义为:
其中:
\omega_N 是 N 次单位根,它是一个模为1的复数。公式中的 \omega_N^{-mk} 和 \omega_N^{-nl} 分别对应水平和垂直方向的频率分量。这里假设图像是方形的(M = N),X 和 Y 方向的采样数量相同。
DFT将空间域的离散图像变换到离散频率域,输出也是一个 N \times N 的复数矩阵。复数的模量表示该频率分量的强度,相位表示该频率分量的位置信息。
图像的傅里叶变换分析
频谱的可视化
图中展示了一张走廊场景的图像及其DFT模量的对数。直接显示模量会得到几乎全黑的图像(中心有一条亮线),因为模量分布非常不均匀,能量高度集中在低频区域。因此通常显示模量的对数以增强可视化效果。
从频谱图中可以观察到几个特征:中心区域包含大量能量,这是因为图像本质上是低通的——图像中有大量相对恒定的区域(如墙壁、地板等),这些都是低频成分。频谱中还有许多穿过中心的直线,这些直线对应图像中的边缘。
边缘在频域的表现
如果图像中有一条边缘(沿某个方向的不连续性),它在傅里叶变换模量中会表现为一条穿过原点的直线,方向与边缘垂直。这是因为傅里叶变换公式中包含点积,边缘方向的信息被转换为垂直方向的频率分量。
无论边缘在图像中的位置如何,它都会被映射到同一条穿过原点的直线上。这是因为空间平移对应频域乘以模为1的复指数,不影响模量。因此,多条平行的边缘会叠加在同一条频域直线上。
图中频谱还有一条非常明显的水平线和垂直线,这是由于图像上下边界和左右边界的不连续性造成的。应用DFT时,实际上假设图像是周期的——仿佛图像被无限复制平铺。图像顶部和底部通常亮度不同(如天空和地面),这种跳变会产生强烈的垂直方向边缘,对应频谱中的水平线。
模量与相位的信息分离
相位携带几何信息
图中展示了一个经典实验:取两张不同的图像A和B,交换它们的傅里叶变换相位和模量。
左下图是用图像A的相位和图像B的模量合成的结果,右下图是用图像B的相位和图像A的模量合成的结果。
观察可以发现:合成图像的几何内容更倾向于相位来源的图像。左下图虽然使用了蜗牛图像(B)的模量,但我们能清楚地识别出猫的轮廓(来自A的相位)。这表明图像的几何结构(轮廓、形状、空间组织)主要编码在相位中,而模量更多地描述频率内容的强度分布。
纹理与模量
图中展示了另一组实验:对两张纹理图像,保留其模量但用随机(均匀分布)相位替换原始相位。
底部的图像是通过随机相位重建得到的结果。可以看到,尽管丢弃了原始相位信息,重建图像仍然保持了与原图相似的纹理特性——振荡的类型和频率特征被保留了。这说明对于纹理类图像,模量包含了描述纹理性质的关键信息,而相位主要决定纹理的具体空间位置。
总结:模量描述图像的频率内容,与纹理特性密切相关,相位描述几何结构和空间组织。
混叠的合成示例
圆盘内正弦波的混叠
图中展示了一个合成的混叠示例。原始图像(左上)是一个二维正弦波乘以圆盘的指示函数——即圆盘内有条纹,圆盘外为零。
如果只有纯正弦波 \sin(ax + by),其傅里叶变换是两个狄拉克点,位置由 a 和 b 的比值决定。当乘以圆盘指示函数后,在频域变成与圆盘傅里叶变换的卷积,因此两个点变成两个圆盘状的扩散结构(右上图的频谱)。
下采样导致的频谱折叠
当对图像进行下采样(例如每两个像素取一个)时,会发生频谱复制和折叠。下采样后的图像频谱(右下)是原始频谱的复制品在 \pm 1/2 倍频处叠加的结果。
图中可以看到,下采样后的条纹方向发生了变化。原本朝某个方向的条纹,在下采样后转向了另一个方向。这正是混叠的表现——高频分量被折叠到低频区域,产生了原图中不存在的结构。图中用箭头标注了频谱中不同分量的移动和叠加过程。
这种混叠产生的虚假结构在原图中并不存在,因此会干扰图像分析和理解。
混叠与抗混叠滤波的对比实验
图中展示了一个详细的混叠实验。图(a)是原始图像,包含细密的规则纹理。图(b)是其DFT,可以看到频谱中有大量能量分布在方框标记区域之外——这些高频成分超出了下采样后的奈奎斯特频率。
图(c)是将原始图像下采样2倍后的结果。图(d)是下采样图像的DFT。可以看到发生了频谱折叠(repliement),高频成分被折叠到低频区域,产生了原图中不存在的虚假纹理模式。
低通滤波消除混叠
为了正确下采样,需要先进行低通滤波。图(a)是通过对图(b)进行逆DFT得到的图像(与原图相同)。图(b)是将频谱中方框外的高频成分置零后的结果——相当于理想低通滤波。
图(c)是对滤波后的图像进行2倍下采样的结果。图(d)是下采样后图像的DFT。可以看到混叠现象消失了(le repliement a disparu),因为在下采样之前已经移除了会导致折叠的高频成分。
下采样前必须进行低通滤波以避免混叠。滤波器的截止频率应该与下采样因子相匹配。
真实图像中的混叠示例
无抗混叠滤镜相机的拍摄结果
图中展示了一张用没有微透镜(抗混叠滤镜)的相机拍摄的伦敦泰晤士河畔照片。整体看起来正常,但放大后可以看到明显的混叠效应。
放大图中可以观察到:船身上的栏杆和窗户的细密结构产生了不规则的波纹图案,建筑物的砖墙纹理出现了寄生的条纹结构。这些都是混叠的典型表现。
屋顶瓦片的混叠
另一个例子展示了屋顶瓦片的混叠效应。左侧是原始图像,右侧是2倍下采样后的结果。屋顶上规则排列的瓦片产生了明显的虚假图案——原本平行的瓦片线条在下采样后出现了弯曲和交叉的条纹。
抗混叠滤波的效果
对比图展示了抗混叠滤波的效果。左侧是原始图像,右侧是先乘以方形指示函数(进行低通滤波)再进行2倍下采样的结果。低通滤波后,虽然图像略微模糊,但消除了虚假的条纹图案。
抗混叠滤波会降低图像清晰度,但能消除虚假结构。在实际相机设计中,制造商需要在清晰度和混叠之间找到平衡点。
振铃现象
理想低通滤波的副作用
为了满足香农条件,我们可以在傅里叶域应用方形滤波器:将频谱乘以区域 K 的指示函数 \mathbb{1}_K。滤波后的图像为:
这等价于在空间域与 \mathbb{1}_K 的傅里叶逆变换卷积。
Sinc函数与振铃
当 K 是边长为 a 的方形时,\mathcal{F}^{-1}(\mathbb{1}_K) 是两个sinc函数的乘积:
图中展示了一维sinc函数的波形和二维sinc函数的三维图。Sinc函数的关键特征是它有振荡的旁瓣——主峰两侧存在逐渐衰减的正负振荡。
当图像与sinc函数卷积时,图像中的边缘(阶跃不连续)会在边缘两侧产生振荡,这就是振铃现象(ringing phenomenon),也称为吉布斯现象(Gibbs phenomenon)。振铃是理想低通滤波(频域硬截断)的固有副作用,无法完全消除,只能通过使用过渡更平滑的滤波器来减轻。
振铃现象的实际效果
图中展示了振铃现象在真实图像中的表现。左侧是原始图像,右侧是经过理想低通滤波后的图像。可以看到在高对比度边缘(如建筑物轮廓与天空的交界处)附近出现了明显的明暗交替条纹。这些振荡结构在原图中并不存在,完全是sinc函数旁瓣造成的伪影。
振铃现象在信号处理中是一个普遍问题。任何频域硬截断都会导致空间域的振铃,因为频域的矩形函数对应空间域的sinc函数。在实际应用中,通常使用具有平滑过渡的滤波器(如高斯滤波器或汉宁窗)来减轻振铃效应,代价是频率截断不够干净。
完整的图像采集模型
简化模型
回顾图像采集的基本模型:
其中:
- s 是场景(L^1 函数)
- g_0 是系统的PSF,包含光圈、离焦、运动模糊和传感器积分效应(g_{ouv} * g_{flou} * g_{fil} * g_{capt})
- \Pi_\Gamma = \sum_{\gamma \in \Gamma} \delta_\gamma 是沿网格 \Gamma 位置的冲激函数。
完整模型
更完整的图像采集模型需要考虑噪声、对比度变化和量化:
各符号的含义为:
- s 是场景(L^1 函数)
- g_0 是系统的PSF(g_{ouv} * g_{flou} * g_{fil} * g_{capt})
- \Pi_\Gamma = \sum_{\gamma \in \Gamma} \delta_\gamma 是采样网格上的冲激函数
- b 是加性噪声,对于 (i,j) \in \Gamma,\{b(i,j)\} 是独立同分布(i.i.d.)随机变量
- h 是一个递增函数,称为对比度变化
- Q 是量化算子,将连续值映射到离散灰度级
关于对比度变化和量化的详细分析将在后续课程中介绍。
噪声模型
三种噪声类型
设 v 是干净的离散图像,u 是其带噪版本。噪声可以分为三种主要类型:
加性噪声(Additive noise):
其中 b(i,j) 是独立同分布随机变量,通常假设为高斯分布。这个模型简单且数学上易于处理,但实际上真实相机噪声并非如此。
脉冲噪声(Impulse noise):
其中 A(i,j) 是独立同分布的伯努利随机变量(取值0或1),B(i,j) 是任意独立同分布随机变量。如果 B 只取值 \{0, M\}(最小和最大灰度值),就是椒盐噪声(salt and pepper noise)。这种噪声模型用于描述传输不确定性,例如数据传输过程中的位翻转。
乘性噪声(Multiplicative noise),也称为斑点噪声(speckle):
其中 b(i,j) 是独立同分布随机变量。乘性噪声典型地出现在雷达图像中,是相干成像系统的固有特性。
加性噪声的可视化
图中展示了加性噪声模型:干净图像 + 噪声图像 = 带噪图像。噪声图像看起来像灰色的随机纹理。
然而,在实际应用中,独立同分布假设是错误的。真实相机的噪声既不是独立的(相邻像素的噪声可能相关),也不是同分布的(噪声的统计特性取决于信号强度)。
不同ISO设置下的噪声表现
图中展示了Canon EOS 5D Mark IV相机在不同ISO设置下拍摄同一场景的结果。ISO值表示传感器的增益(放大倍数):ISO 100是低增益,噪声很小,ISO 6400是中等增益,噪声开始可见,ISO 51200是极高增益,噪声非常明显。
RAW格式(左侧)保留了原始传感器数据,噪声更明显,JPEG格式(右侧)经过了相机内部的降噪处理,噪声较少但细节也可能丢失。在ISO 51200的极端情况下,两种格式的图像都呈现出严重的颗粒感和颜色失真。
噪声的物理来源
传感器信号链
图中展示了从光子到原始像素值的完整信号链:
电荷积累(Charge Accumulation):光子击中传感器,通过光电效应产生电子(photogenerated electrons)。这个过程受到散粒噪声的影响。
读出(Readout):积累的电荷被转换为电压信号 V_{out},经过复位电压 V_{reset} 的参考进行测量。读出过程引入读出噪声。
量化(Quantization):模拟电压信号被转换为数字值,得到原始像素值 Z。
噪声的统计模型
原始像素值 Z 近似服从高斯分布:
其中 C 是辐照度(irradiance,表示到达传感器的光强度)。均值和方差都依赖于辐照度 C:
均值:
方差:
各参数的含义为:C 是辐照度,\tau 是曝光时间,g 是相机增益(与ISO成正比),a 是光响应非均匀性因子(photo-response non-uniformity factor),\mu_R, \sigma_R^2 是读出噪声的均值和方差。
噪声的方差 \sigma^2(C) 依赖于信号 C。信号越强,噪声方差越大。这与简单的独立同分布加性高斯噪声假设相矛盾。在明亮区域,散粒噪声占主导(g^2 a\tau C 项),在暗区域,读出噪声占主导(\sigma_R^2 项)。
噪声的物理来源详解
散粒噪声(Shot noise):光源发射的光子数量服从泊松分布,参数为 C\tau,其中 C 是辐射亮度(radiance,单位时间发射的平均光子数),\tau 是曝光时间。光子到达传感器是一个随机过程,即使光源强度恒定,在固定时间内到达的光子数也会波动。曝光时间为0时没有光子到达。
暗电流(Dark current):即使没有光照,传感器也会因热效应产生电子,称为残余电子发射。暗电流也服从泊松分布,参数为 d_\tau,取决于曝光时间 \tau 和温度。温度越高,暗电流越大,这就是为什么天文摄影需要冷却传感器。
读出噪声(Readout noise):在读取电压过程中产生的误差,主要来源于参考电压的波动。读出噪声通常建模为高斯分布。
空间非均匀性(Spatial non-uniformity):包括传感器响应的空间非均匀性(PRNU,Photo-Response Non-Uniformity)和热噪声的空间非均匀性(DCNU,Dark Current Non-Uniformity)。
完整噪声模型
综合模型
将所有噪声源组合,得到完整的噪声模型:
各符号的含义为:Poiss(\lambda) 表示均值为 \lambda 的泊松分布,C 是辐射亮度(光子/时间),g 是增益,\tau 是曝光时间,d_\tau 是暗电流的平均值,N_{out} 是读出噪声,服从均值为 \mu_R、方差为 \sigma_R^2 的高斯分布,Q 是量化噪声,服从均匀分布。
还可以添加空间变化项(DCNU和PRNU)来考虑传感器的空间非均匀性。
模型的简化
在实际假设下可以进行简化:量化噪声 Q 相对于读出噪声很小,可以忽略,对于短曝光时间(小于1秒),暗电流可以忽略不计。
简化后的模型为:
这个简化模型只包含两个主要噪声源:经过增益放大的散粒噪声(泊松分布)和读出噪声(高斯分布)。
高斯近似
泊松分布的高斯近似
简化模型为:
当 \lambda 较大时(实际中几十就足够),泊松分布可以用高斯分布近似:
即均值和方差都等于 \lambda 的高斯分布。在通常的摄影条件下,这个近似是有效的。但对于低光子计数情况(如天体摄影),这个近似不成立,必须使用完整的泊松模型。
图中展示了三种不同 \lambda 值下泊松分布(蓝色)和高斯近似(红色)的对比:\lambda = 9 时两者有明显差异,\lambda = 25 时近似已经相当好,\lambda = 100 时几乎完全重合。
应用高斯近似后,噪声模型变为:
其中 \mu_R 和 \sigma_R 分别是读出噪声的均值和标准差。
这个结果的应用之一是HDR(高动态范围)图像创建,将在后续课程中详细介绍。
噪声方差的信号依赖性
核心结论
噪声方差依赖于信号强度。这是相机噪声建模的核心结论,与简单的独立同分布高斯噪声假设形成鲜明对比。
为了处理这一特性,有两种可能的解决方案:
直接使用噪声模型:在算法设计中直接考虑噪声方差随信号变化的特性,例如用于计算统计估计量。这种方法在HDR成像中会用到。
方差稳定化变换:对信号进行变换,使得变换后的噪声近似为独立同分布高斯噪声。典型例子是Anscomb变换:
这个变换将泊松分布的信号依赖方差转换为近似常数方差。变换后可以使用假设独立同分布高斯噪声的标准去噪算法,然后再进行逆变换。
图像采集流水线概览
本课程内容
本课程涵盖了图像采集流水线的第一阶段:
即从场景 s 经过光学系统和传感器积分得到 g_0 * s,再经过采样和噪声添加得到离散的带噪图像。
后续课程内容
第2课(辐射度量学):量化过程,得到RAW图像:
第5和第6课:去噪(denoising)
第2课(颜色):去马赛克(demosaicking),将RAW图像转换为三通道彩色图像 u:RAW \to u
第2课(颜色变换):
其中 T_w 是对角矩阵(白平衡),h 是非线性函数(色调映射)。
辐射度量学与对比度
本讲义探讨辐射度量学的基础概念,核心关注点在于光强度与人类视觉系统之间的关系。理解这一关系对于图像处理至关重要,因为它揭示了人眼感知亮度的方式与物理光强度之间存在的本质差异。
光强度与人类视觉
递增函数变换下的感知不变性
人类对图像内容的感知,在对图像施加一个递增函数变换后,几乎不会发生改变。生活中常见的例子包括:戴上太阳镜后看到的场景、调节屏幕对比度后的显示效果等。这一现象的本质原因在于,人眼对亮度的感知是相对的而非绝对的,我们的视觉系统更关注场景中不同区域之间的亮度关系,而非每个像素的绝对亮度值。
以变换 x \mapsto x^2 为例,假设图像的像素值被归一化到 [0,1] 区间,该变换会将所有像素值进行平方运算。由于 0 \leq x \leq 1 时有 x^2 \leq x,整幅图像会整体变暗。然而,图像中原本较亮的区域变换后仍然相对较亮,原本较暗的区域变换后仍然相对较暗,像素之间的亮度顺序关系保持不变。正因如此,我们依然能够清晰地识别出图像的内容,无论是猫的轮廓还是风景中的山川海岸。
与之相反的变换 x \mapsto \sqrt{x} 则会使图像整体变亮,因为在 [0,1] 区间内 \sqrt{x} \geq x。尽管图像的整体亮度分布发生了变化,但由于该变换同样是单调递增的,像素间的相对亮度关系得以保留,人眼仍能正常感知图像内容。
非递增函数变换导致感知改变
上述结论在函数不是递增函数时不再成立。
典型的例子是照片的负片效果,对应的数学变换为:
这是一个单调递减函数,它将原本亮的区域变暗、暗的区域变亮,彻底颠倒了像素之间的亮度顺序。变换后,人脸的明暗分布完全反转,原本处于阴影中的区域变得明亮,而原本被光线照亮的区域反而变暗。这种颠倒使得人眼难以正常识别图像内容,因为我们的视觉系统已经习惯了自然光照下物体的明暗分布模式。
局部对比度与全局对比度
人类视觉系统对局部对比度的敏感程度远高于对全局对比度的敏感程度。Kanizsa 在其著作中通过经典的视觉错觉实验展示了这一特性。
在第一个实验中,两个完全相同灰度值的方块分别放置在黑色背景和白色背景上,尽管它们的物理亮度完全一致,但在黑色背景上的方块看起来明显更亮,而在白色背景上的方块看起来更暗。这是因为人眼在判断某一区域的亮度时,会自动将其与周围环境进行比较,而非测量其绝对亮度值。

另一个更著名的例子是棋盘阴影错觉。在一个有圆柱体投射阴影的棋盘图案中,标记为 A 的方块位于光照区域,标记为 B 的方块位于阴影区域。尽管 A 和 B 两个方块在图像中具有完全相同的像素灰度值,但由于 A 周围是较暗的方块而 B 周围是较亮的方块,视觉系统会将 A 感知为深色、将 B 感知为浅色。这一错觉深刻地说明了人类视觉的对比度感知机制:我们的大脑会根据局部环境自动校正对亮度的判断,这种机制帮助我们在不同光照条件下保持对物体颜色和亮度的稳定感知,但同时也会产生这类视觉错觉。
图像获取模型回顾
Adelson 的实验进一步验证了局部对比度的主导作用。当用一个灰色条带将方块 A 和 B 连接起来时,观察者可以清晰地看到它们实际上具有相同的灰度值,因为此时视觉系统能够沿着连续的灰度路径进行比较,而不是依赖于各自的局部环境。
图像形成的数学模型
在进入对比度变换之前,需要回顾图像获取的完整数学模型。一幅数字图像 u 的形成过程可以用以下公式描述:
这个公式从右向左描述了光信号从场景到最终数字图像的完整转换链路。s 表示原始场景的光强度分布,是我们希望记录的物理信息。g_0 是整个光学系统的点扩散函数,它综合了多个物理过程的影响:光学系统的衍射和像差(g_{ouv})、可能存在的离焦模糊(g_{flou})、曝光时间内的运动模糊(g_{mouv})、以及传感器像素的空间积分效应(g_{capt}),即 g_0 = g_{ouv} * g_{flou} * g_{mouv} * g_{capt}。卷积运算 g_0 * s 表示场景经过光学系统后的连续图像。
\Pi_\Gamma = \sum_{\gamma \in \Gamma} \delta_\gamma 是传感器的采样函数,其中 \Gamma 表示传感器像素的位置集合,典型情况下 \Gamma = \mathbb{Z}^2 对应规则的二维整数网格。与 \Pi_\Gamma 相乘实现了从连续图像到离散样本的转换。b 是加性噪声,包括传感器的热噪声、读出噪声等,通常建模为独立同分布的随机变量。
h 是一个递增函数,对应传感器的响应曲线,它将入射光强度映射为电信号强度。由于 h 是递增函数,正如前面讨论的,这种变换不会改变图像的感知内容,但会影响图像的对比度分布。最外层的 Q 是量化算子,将连续的电信号值映射到有限的离散灰度级别。
连续图像 g_0 * s 与离散测量图像 (g_0 * s) \cdot \Pi_\Gamma 之间的关系由采样理论来描述。本课程的重点在于图像的辐射度量学方面,具体而言是对比度变换函数 h 和量化过程 Q,暂时限定在灰度图像的范围内讨论。
符号约定
在后续内容中,图像记为 u: \Omega \to \mathbb{R},其中 \Omega 是一个尺寸为 |\Omega| = M \times N 的矩形网格,对应离散图像的像素位置集合。图像 u 只能取有限个离散灰度值 y_0 < \cdots < y_{n-1}。对于常见的 8 位灰度图像,这些值为 0, 1, \ldots, 255,共 256 个灰度级别。
直方图与对比度变换
图像直方图的定义
图像的直方图是描述灰度值分布的基本工具。对于图像 u,其直方图 h_u 定义为:
这里 \delta_{y_i}(y) 是位于 y_i 处的狄拉克函数,当 y = y_i 时取值为 1,否则为 0。h_i 表示灰度值 y_i 在图像中出现的相对频率,即取值为 y_i 的像素数量除以图像的总像素数 |\Omega|。由于 h_i 是归一化的频率,所有 h_i 的和等于 1,直方图可以看作灰度值的经验概率分布。
直方图完全丢弃了像素的空间位置信息,只保留了灰度值的统计分布。这意味着对图像进行任何保持灰度值不变的几何变换(如平移、旋转、缩放等相似变换),直方图保持不变,当然这里忽略了离散化带来的边界效应。这种几何不变性使得直方图成为图像分析中的基础描述子,但也限制了它区分具有相同灰度分布但空间结构不同的图像的能力。
从示例图像可以看到,直方图的横轴是灰度值,纵轴是对应的频率。累积分布函数则显示了灰度值小于或等于某个阈值的像素所占比例,是直方图的积分形式。
累积直方图
设 u 是定义在 \Omega 上的离散图像,其累积直方图 H_u 是定义在 \mathbb{R} 上的递增函数:
这个定义表示灰度值小于或等于 \lambda 的像素所占的比例。由于图像只取有限个离散灰度值 y_0 < y_1 < \cdots < y_{n-1},累积直方图呈现阶梯函数的形态:在每个灰度值 y_i 处发生跳跃,跳跃幅度等于 h_i,在相邻灰度值之间保持常数。当 \lambda < y_0 时 H_u(\lambda) = 0,当 \lambda \geq y_{n-1} 时 H_u(\lambda) = 1。
对于 8 位图像,灰度值集合 \{y_0, \ldots, y_{n-1}\} = \{0, \ldots, 255\}。在实际计算中,H_u 和 h_u 都被定义为离散函数,从 \{0, \ldots, 255\} 映射到 \{0, \ldots, |\Omega|\} 或其归一化版本。
从概率论的角度理解,如果将图像的 |\Omega| 个像素灰度值建模为独立同分布随机变量 X_1, \ldots, X_{|\Omega|} 的实现,那么累积直方图 H_u 就是这些随机变量分布函数的经验估计,而直方图 h_u 则是其概率密度函数的经验估计。这种概率视角为后续的直方图均衡化等方法提供了理论基础。
对比度变换
对比度变换的定义与性质
对比度变换是指一个递增函数 g: \mathbb{R} \to \mathbb{R},它将图像 u 逐像素地变换为 g(u),即对每个像素位置 \mathbf{x},新图像在该位置的值为 g(u(\mathbf{x}))。这是一种非线性的全局操作,每个像素的新值仅取决于其原始灰度值,而与空间位置无关。
对比度变换与累积直方图之间存在一个关键性质:如果 g: \mathbb{R} \to \mathbb{R} 是严格递增的对比度变换,则对所有灰度级 y_i 有:
这个等式的含义是,变换后图像在 g(y_i) 处的累积直方图值,等于原图像在 y_i 处的累积直方图值。更一般地,对任意像素位置 \mathbf{x} \in \Omega,有 H_{g(u)}(g \circ u(\mathbf{x})) = H_u(u(\mathbf{x}))。换言之,累积直方图在不同的横坐标位置(变换前后的灰度值)取得相同的纵坐标值。
这一性质的成立依赖于 g 的严格递增性。如果 g 仅是递增而非严格递增,即存在 y_i \neq y_j 使得 g(y_i) = g(y_j),则会发生信息丢失:原本不同的灰度值被映射到同一个值,这部分灰度区分能力不可逆地消失了。
经典对比度变换方法
在图像处理软件中常见的亮度和对比度调节对应线性变换 u \mapsto ku + C,其中 k 控制对比度,C 控制亮度。当 k > 1 时对比度增强,k < 1 时对比度降低;C > 0 时图像变亮,C < 0 时变暗。
对比度拉伸同样采用 u \mapsto ku + C 的形式,但 k 和 C 的选取原则是让变换后的图像充分利用整个动态范围。具体而言,找到原图像的最小灰度值 u_{\min} 和最大灰度值 u_{\max},然后选择 k 和 C 使得 u_{\min} 映射到 0,u_{\max} 映射到 255。这种方法常用于预处理或可视化。
Gamma 变换定义为 u \mapsto u^\gamma,假设灰度值已归一化到 [0,1]。当 \gamma < 1 时,变换曲线上凸,暗部细节被增强;当 \gamma > 1 时,变换曲线下凹,亮部细节被增强。Gamma 变换最初用于校正显示设备的非线性响应特性。
阈值化变换 u \mapsto \mathbb{1}(u > \lambda) 将图像转换为二值图像,其中 \mathbb{1}(\cdot) 是指示函数,当条件满足时取 1,否则取 0。灰度值大于阈值 \lambda 的像素变为白色,其余变为黑色。这是形状提取的基本方法,典型应用是处理扫描文档。
负片变换将亮区变暗、暗区变亮,在医学图像中有应用价值,因为医学成像中高亮度区域往往对应低密度组织。
对数尺度变换适用于动态范围极大的图像。典型例子是傅里叶变换的模的可视化:由于傅里叶系数的幅值可能跨越多个数量级,直接显示时大部分细节会被压缩到接近黑色的区域而不可见。对数变换压缩高值、扩展低值,使得整个频谱结构清晰可见。
示例图像对比展示了未经处理的傅里叶变换模(几乎全黑,只有中心亮点)与对数尺度显示的结果(频率结构清晰呈现)。
Gamma 校正
显示设备的非线性响应
阴极射线管(CRT)显示器的亮度输出与输入电压之间存在天然的非线性关系。屏幕上再现的光强度 I 不是输入电压 V 的线性函数,而是一个幂函数:
这种非线性源于 CRT 的物理工作原理:电子管对低功率信号的响应很弱,只有当输入电压达到一定水平后,亮度才开始显著增加。这意味着输入信号中的暗部细节会被严重压缩,而亮部则相对保留。尽管现代显示技术(如 LCD、等离子屏幕)的物理机制与 CRT 不同,但为了保持与历史图像编码标准的兼容性,这些设备仍然人为地模拟这种 Gamma 特性。
这种非线性的直接后果是:如果不做任何校正,图像在屏幕上的显示会比实际亮度更暗。
示例图像展示了同一场景在不同 Gamma 设置下的显示效果,可以看到未校正的图像整体偏暗,细节丢失。
采集端的 Gamma 预校正
为了补偿显示端的非线性,图像采集设备(相机、扫描仪等)在记录图像时会预先施加一个反向的 Gamma 校正。既然显示器会对信号做 \gamma \simeq 2.5 的幂次变换,采集端就预先对信号做 1/\gamma = 1/2.5 = 0.4 的幂次变换。当这个预校正后的信号经过显示器的 \gamma 变换后,两次幂次运算相互抵消,(V^{0.4})^{2.5} = V,最终呈现的亮度与原始场景一致。
Gamma 预校正还有一个额外的好处:它使得图像数据的存储方式更符合人类视觉的感知特性。人眼对暗部的亮度变化比对亮部更敏感,而 \gamma < 1 的幂函数恰好会扩展暗部的数值范围、压缩亮部的数值范围,这与感知特性相匹配,从而在有限的量化位数下实现更有效的信息存储。
直方图均衡化
定义与目标
直方图均衡化是一种特殊的对比度变换,它选取图像自身的累积直方图 H_u 作为变换函数 g。变换后的图像为 H_u(u),即对每个像素 \mathbf{x},新的灰度值为 H_u(u(\mathbf{x}))。
这种变换之所以称为"均衡化",是因为变换后图像 g(u) = H_u(u) 的累积直方图尽可能接近恒等函数 H(\lambda) = \lambda。恒等函数对应的直方图是均匀分布,即每个灰度值出现的频率相同。因此,直方图均衡化的目标是让灰度值的分布尽可能均匀,从而充分利用整个动态范围,增强图像的整体对比度。
均衡化的数学性质
对于均衡化后的图像,有如下性质:
这个不等式说明均衡化后的累积直方图始终位于恒等函数的下方或与之重合。等号成立的位置恰好是原图像累积直方图的取值点 H_u(y_i)。由于离散图像的累积直方图是阶梯函数,不可能完美地达到连续的均匀分布,但均衡化使其尽可能接近。
从概率论的角度可以更好地理解这一结果。如果 F 是一个连续的累积分布函数,X 是服从密度 F(dx) 的随机变量,那么变换后的随机变量 F(X) 服从 [0,1] 上的均匀分布。直方图均衡化正是这一概率变换在离散图像上的应用:将累积分布函数作用于随机变量本身,得到均匀分布的结果。
均衡化效果的可视化
示例图像展示了直方图均衡化的实际效果。音乐家演奏的场景原本对比度较低,暗部细节不清晰。均衡化后,图像的动态范围得到扩展,原本隐藏在暗部的钢琴键盘和演奏者的服装细节变得清晰可见。
风景图像的均衡化效果同样明显。原图的累积直方图呈现典型的 S 形曲线,表明中间灰度值集中。均衡化后,累积直方图变得接近对角线(恒等函数),对应的直方图从原本的集中分布变为更加分散的分布。图像中草地、天空、水面等不同区域的灰度差异被增强,整体层次感提升。
直方图均衡化的局限性
直方图均衡化虽然能够增强图像对比度,但也存在一些固有的问题。
第一个问题是信息丢失。示例图像展示了一幅风景照片在均衡化前后的对比。均衡化前,天空区域呈现丰富的灰度层次,云层的纹理清晰可辨。均衡化后,虽然整体对比度提高了,但天空区域的细节反而减少了,原本连续渐变的灰度被压缩到较少的几个灰度级别。这是因为均衡化试图让所有灰度值均匀分布,而原图中天空占据了大量像素且灰度值集中在某个范围,均衡化会将这个范围拉伸,但由于离散化的限制,原本细微的灰度差异可能被映射到同一个灰度级。
第二个问题是量化噪声的放大。在原始图像中,如果某些区域的灰度值变化平缓,像素之间的差异很小,这些差异可能接近或小于量化步长,因此在视觉上表现为平滑的渐变。然而,直方图均衡化会拉伸这些微小的差异,将原本接近的灰度值映射到相距较远的灰度级别,结果是原本平滑的区域出现了明显的阶跃状伪影,即量化噪声被放大了。
直方图规定化
基本原理
直方图均衡化的目标是让累积直方图接近恒等函数,即均匀分布。但在某些应用中,我们可能希望变换后的图像具有特定的灰度分布,而非均匀分布。直方图规定化正是为此目的而设计的方法。
直方图规定化的目标是寻找一个对比度变换 g,使得变换后图像 g(u) 的累积直方图尽可能接近某个给定的严格递增连续函数 F: [0,1] \to [0,1]。F 可以是任意满足条件的分布函数,代表了期望的灰度分布特性。
实现这一目标的变换函数为:
其中 H_u 是原图像的累积直方图,F^{-1} 是目标分布函数的逆函数。这个复合变换的作用可以分两步理解:首先 H_u 将原图像的灰度值映射到 [0,1] 区间(这正是直方图均衡化),然后 F^{-1} 将均匀分布的值重新映射到服从 F 分布的值。
对于这个变换,有如下性质:
变换后图像的累积直方图是分段常数函数,它在跳跃点 F^{-1} \circ H_u(y_i) 处与目标函数 F 重合。由于离散图像的限制,无法完美匹配连续的目标分布,但在离散灰度级对应的点上达到精确匹配。
规定化示例
示例图像展示了直方图规定化的效果。左侧是两幅不同的船只照片,它们具有不同的灰度分布特性:上方图像整体偏亮,直方图集中在高灰度区域;下方图像对比度更强,直方图分布更广。通过直方图规定化,可以将上方图像的灰度分布调整为与下方图像相似,或反过来。变换后的图像保留了原始的空间结构,但灰度分布特性发生了改变,视觉风格变得与目标图像一致。
图像间的直方图匹配
一个特别有用的应用是让一幅图像 u 具有与另一幅图像 v 相同的累积直方图。此时目标函数 F 就是 H_v,变换函数变为:
这种方法在图像拼接、风格迁移等应用中很有价值,可以使不同来源的图像在灰度分布上保持一致。然而,这里存在一个技术问题:H_v 作为离散图像的累积直方图,是一个阶梯函数,并不严格可逆。在阶梯的平台部分,多个输入值对应同一个输出值,无法定义唯一的逆。实际实现中需要采用某种插值或近似策略来处理这个问题,例如取平台中点对应的灰度值作为逆函数的值。
伪逆的定义
当我们希望将图像 u 的直方图匹配到另一幅图像 v 的直方图时,需要计算变换 H_v^{-1} \circ H_u \circ u。然而 H_v 作为离散图像的累积直方图是一个阶梯函数,在其平台区域(即函数值保持常数的区间)内无法定义传统意义上的逆函数。为了解决这个问题,引入伪逆的概念。
H_v 在区间 ]0, 1] 上的伪逆定义为:
这个定义的含义是:对于给定的 \alpha 值,找到使得累积直方图 H_v(\lambda) 首次达到或超过 \alpha 的最小 \lambda 值。当 H_v 在某个区间上为常数(即阶梯的平台部分)时,伪逆会跳过这个区间,直接取下一个跳跃点的位置。
伪逆 H_v^{-1} 具有两个性质。首先,它是递增的分段常数函数,其跳跃点对应于 H_v 的取值点。其次,对于图像 v 中的任意像素位置 \mathbf{x} \in \Omega,有 H_v^{-1} \circ H_v(v(\mathbf{x})) = v(\mathbf{x})。这个性质保证了伪逆与原函数的复合在图像实际取值点上等于恒等映射,即不会改变图像 v 本身的灰度值。
有了伪逆的定义,就可以构造直方图匹配的变换函数 H_v^{-1} \circ H_u \circ u。
实际实现方法
在实际编程中,有一种非常简洁的方法可以实现两幅图像之间的直方图匹配,而无需显式计算累积直方图和伪逆。该方法基于排序操作:
[x, index] = sort(u(:));
u(index) = sort(v(:));
第一行将图像 u 的所有像素值按升序排列,同时记录排序后元素在原图像中的位置索引。第二行将图像 v 的像素值也按升序排列,然后按照 u 的排序索引将这些值放回到对应位置。
这个方法的原理是:排序建立了像素灰度值的秩序关系。u 中第 k 小的像素值和 v 中第 k 小的像素值应该相互对应。通过排序和索引重排,u 中原本第 k 小的像素位置现在被赋予 v 中第 k 小的灰度值。这样处理后,变换后的图像与 v 具有完全相同的灰度值集合和分布,只是空间排列保持了 u 的像素秩序关系。
图像比较
对比度不变的图像比较
直方图匹配技术可以应用于图像比较问题。当需要比较两幅可能经历了不同对比度变换的图像时,直接进行像素级比较是不合理的,因为相同的场景在不同的光照条件或传感器设置下会产生不同的灰度分布。
示例图像展示了一个港口场景的两个版本:一幅对比度较高,一幅对比度较低。尽管它们描绘的是同一场景,直接相减会得到非零的差异图像。然而,如果先将两幅图像进行直方图匹配(使它们具有相同的灰度分布),再进行比较,就可以消除由对比度差异引起的伪差异,只保留真正的结构性差异。
差异图像展示了两幅港口照片相减的结果。由于两幅图像的对比度不同,即使场景相同,差值图像中仍然显示出船只、建筑物等结构的轮廓。这些轮廓并非真正的场景变化,而是对比度差异造成的。通过适当的对比度归一化预处理,可以在比较前消除这种影响。
直方图匹配后的图像比较
在对两幅图像进行直方图匹配后,它们具有了相同的灰度分布。此时再进行相减操作,可以更好地揭示两幅图像之间的真实差异。示例展示了经过直方图匹配后的两幅港口图像,由于对比度已经归一化,两幅图像在视觉上更加接近。
匹配后的差值图像呈现出不同的特征。与匹配前的差值图像相比,由纯粹对比度差异引起的伪轮廓被大大削弱,而真正的结构性差异(如果存在)则会更加突出。在这个例子中,由于两幅图像实际上描绘的是相同场景的不同对比度版本,匹配后的差值应该接近于零。差值图像中残留的非零部分主要来源于离散化效应和匹配算法的近似误差。
局部直方图变换
前面讨论的所有直方图操作都是全局方法,即使用整幅图像的统计信息来确定变换函数。然而,全局方法存在一个根本性的局限:图像的不同区域可能具有截然不同的亮度特性。例如,一幅同时包含明亮天空和阴暗前景的图像,全局直方图均衡化可能无法同时增强这两个区域的细节。
分块处理与CLAHE方法
局部对比度修正通过将图像划分为若干子块来解决这个问题。对每个子块独立计算直方图并进行均衡化或其他变换,这样每个局部区域都能根据自身的灰度分布特性得到适当的增强。CLAHE(Contrast Limited Adaptive Histogram Equalization,对比度受限的自适应直方图均衡化)是这类方法的代表。
分块处理需要注意块与块之间的边界问题。如果各个块完全独立处理,相邻块的边界处会出现明显的亮度跳变,形成棋盘状的伪影。为了避免这种伪影,相邻的块必须相互重叠,并且在重叠区域进行平滑插值,使得变换在空间上连续过渡。
不同方法的效果对比
示例图像展示了一幅书籍封面在不同对比度增强方法下的效果。从左到右依次为:原始图像、直方图均衡化、直方图拉伸、自适应均衡化。原图整体偏暗,细节不够清晰。直方图均衡化增强了全局对比度,但可能在某些区域过度增强。直方图拉伸(线性对比度扩展)效果相对温和,保持了自然的外观。自适应均衡化能够同时增强图像各个局部区域的细节,在复杂光照条件下通常表现最好,但计算成本也相应更高。
噪声对直方图的影响
加性噪声模型
在实际成像过程中,图像不可避免地会受到噪声的污染。加性噪声是最常见的噪声模型,表示为:
其中 u 是无噪声的理想图像,b 是噪声,u_b 是观测到的带噪图像。如果将像素值视为随机变量,那么 u + b 的概率密度函数等于 u 和 b 各自密度函数的卷积:
这个卷积关系说明,加性噪声会使直方图变得更加平滑和分散。
当噪声 b 服从均值为零、方差为 \sigma^2 的高斯分布 \mathcal{N}(0, \sigma^2) 时,原本尖锐的直方图峰会被高斯核平滑,变得更宽更矮。噪声方差越大,平滑效应越明显,原本分离的直方图峰可能会融合在一起。
当噪声 b 服从均匀分布时,直方图同样会被平滑,但平滑核的形状是矩形而非高斯形状。
脉冲噪声
除了加性噪声,还有一类常见的噪声是脉冲噪声(也称为椒盐噪声)。脉冲噪声的特点是随机将某些像素的值替换为极端值(如最黑或最白),而其他像素保持不变。这种噪声会在直方图的两端(灰度值 0 和 255 附近)产生额外的尖峰,而不会像加性噪声那样平滑整个直方图。脉冲噪声对图像质量的影响与加性噪声不同,通常需要采用中值滤波等非线性方法来去除。
当噪声 b 服从高斯分布 \mathcal{N}(0, \sigma^2) 时,由于两个独立随机变量之和的密度函数是各自密度函数的卷积,带噪图像的直方图等于原直方图与标准差为 \sigma 的高斯函数的卷积。卷积的效果是平滑:原直方图中的尖锐峰值会被展宽,峰的宽度大致增加 \sigma 的量级。如果原直方图有多个分离的峰(对应图像中不同的灰度区域),噪声足够大时这些峰可能会融合在一起,导致基于直方图的分割算法失效。
当噪声 b 服从均匀分布时,直方图与一个矩形函数(门函数)卷积。矩形卷积核会将直方图的每个峰值"摊平"成梯形状,边缘变得斜坡化而非垂直。
脉冲噪声模型
脉冲噪声与加性噪声的作用机制完全不同。脉冲噪声随机地将某些像素的值完全替换为一个随机值,而保持其他像素不变。其数学模型为:
其中 X 服从参数为 \theta 的伯努利分布,即 X = 1 的概率为 \theta,X = 0 的概率为 1 - \theta。Y 服从 \{0, \ldots, 255\} 上的离散均匀分布。这个模型的含义是:对于每个像素,以概率 \theta 将其值替换为一个随机灰度值 Y,以概率 1 - \theta 保持原值 u 不变。
根据这个模型,带噪图像 u_b 的密度函数为:
这个公式表明,脉冲噪声的效果是在原直方图 h_u 上叠加一个均匀分布的成分。第一项 \frac{1}{256}\theta 是均匀分布(因为被替换的像素取遍所有灰度值的概率相等),第二项 (1 - \theta)h_u 是保留下来的原始像素的贡献。参数 \theta 越大,均匀成分的比重越大,直方图越趋向于平坦;\theta 越小,直方图越接近原始形态。
高斯噪声的可视化示例
示例展示了标准差 \sigma = 10 的高斯噪声对图像直方图的影响。上方是原始的海岸风景图像及其直方图,直方图呈现出清晰的多峰结构,各个峰对应天空、海水、植被、岩石等不同区域的灰度分布。下方是添加高斯噪声后的图像及其直方图。可以观察到,噪声使得图像表面出现了细微的颗粒感,虽然整体内容仍然可辨,但细节的清晰度有所下降。
对比两个直方图,最显著的变化是峰值的平滑化。原直方图中陡峭的峰变得更加圆润和宽广,原本深邃的谷变浅了。这正是高斯卷积的特征效果。由于 \sigma = 10 相对于 256 个灰度级来说是一个中等水平的噪声,直方图的整体结构仍然可以辨认,但如果噪声更强,各个峰将进一步融合,最终可能变成单一的宽峰。
量化与数字图像动态范围
传感器的动态范围
在之前的图像获取模型中,有一个方面没有被显式地体现出来:传感器的动态范围。动态范围是指传感器能够同时捕捉的最亮和最暗信号之间的比值,通常用 f-stops(光圈档数)来衡量。每增加一档 f-stop,光强度加倍,因此 n 档 f-stop 对应 2^n 的亮度比。
摄影用传感器的典型动态范围是 1 : 2^{12},即 12 档 f-stops。高端消费级传感器可以达到 15 档,普通智能手机约为 10 档。这意味着传感器能够同时记录的最亮区域和最暗区域的亮度比最多约为 2^{12} = 4096 倍。
作为对比,人眼的绝对动态范围极为惊人:从最暗的星光到最亮的阳光,人眼能够感知的亮度范围达到 25 档 f-stops,约 2^{25} \approx 3400 万倍。然而,人眼在同一时刻并不能同时感知如此大的范围,而是通过瞳孔调节和视网膜适应来调整感知范围。在固定适应状态下,人眼的同时动态范围约为 14 档 f-stops。这解释了为何在逆光场景下,我们要么看清人脸而天空过曝,要么看清天空而人脸漆黑——场景的动态范围超出了传感器(或此刻眼睛)的能力。
高动态范围成像
多重曝光策略
为了突破单次曝光的动态范围限制,高动态范围(HDR)成像技术应运而生。经典的 HDR 生成策略是多重曝光融合:使用不同的曝光时间对同一场景拍摄多张照片,然后将它们合成为一张包含完整亮度信息的图像。
示例展示了这一过程。四张曝光时间分别为 \frac{1}{1000}、\frac{1}{250}、\frac{1}{125}、\frac{1}{60} 秒的照片被送入 HDR 生成算法。短曝光(\frac{1}{1000} 秒)保留了高光区域(如天空、建筑物受光面)的细节,但阴影区域漆黑一片。长曝光(\frac{1}{60} 秒)则相反,阴影区域的细节清晰可见,但高光区域严重过曝。HDR 算法从每张照片中提取其正确曝光的区域,融合成一张同时保留高光和阴影细节的合成图像。
HDR 图像示例
HDR 技术的效果在高对比度场景中尤为明显。示例中的落日场景、海边黄昏、山谷俯瞰和海滨小镇都是典型的高动态范围场景:天空与地面之间、受光面与阴影之间存在巨大的亮度差异。通过 HDR 处理,这些场景能够以接近人眼实际感知的方式呈现,同时保留天空的色彩层次和前景的细节纹理。
量化原理
量化的必要性
图像 u: \Omega \to \{y_0, \ldots, y_{n-1}\},通常取值集合 Y = \{0, \ldots, 255\},即标准的 8 位图像。量化是将连续或高精度的信号值映射到有限离散级别的过程。
量化在多种场景下是必需的。数码相机的传感器原始数据通常为 10-15 位精度,需要经过 Gamma 校正后量化到 8 位以便存储和显示。卫星图像的传输带宽有限,常从 12 位量化到更少的位数。彩色图像使用 24 位表示(每个 RGB 通道 8 位)。人眼的感知本身就有适应机制,不同环境光下感知的有效灰度级数是有限的。
量化的基本目标是将图像原本取的 n 个灰度值减少到 p \leq n 个值。
量化算子的数学定义
量化算子 Q 完全由两组参数确定:量化值 (q_i)_{i=0,\ldots,p-1} 和边界值 (t_j)_{j=0,\ldots,p},它们满足:
Q 的定义为:
每个区间 [t_i, t_{i+1}) 内的所有输入值都被映射到同一个量化值 q_i。量化后的图像 Q \circ u: \Omega \to \{q_0, \ldots, q_{p-1}\} 只取 p 个不同的灰度值。
量化的实际意义包括:减小图像文件体积,便于存储、管理和传输(尤其是卫星图像等带宽受限的场景);适配显示设备的能力,当显示器的动态范围小于图像数据的动态范围时,量化是必需的(早期计算机显示器、当今的移动设备屏幕等都有此需求)。
量化方法示例
有多种策略来选择量化的边界值 t_i 和量化值 q_i,不同的策略适用于不同的应用场景。
均匀量化是最简单的方法,将灰度范围 Y = \{0, \ldots, 255\} 等分为 p 个区间。如果 p 是 256 的因子,则边界值和量化值分别为:
每个量化区间的宽度相同,均为 \frac{256}{p},量化值取为区间的中点。均匀量化的优点是实现简单,缺点是没有考虑图像的实际灰度分布:如果图像的灰度值集中在某个范围内,均匀量化可能在该范围内分配过少的量化级别,而在几乎没有像素的范围内浪费量化级别。
基于直方图的量化根据图像的累积直方图来确定边界值:
这意味着每个量化区间包含的像素数量大致相等,都约为总像素数的 \frac{1}{p}。量化值 q_i 取为区间 [t_i, t_{i+1}] 内像素灰度值的均值或重心。这种方法等价于先对图像进行直方图均衡化,然后再进行均匀量化。它的优点是将量化级别按像素数量均匀分配,在像素密集的灰度区域分配更多的量化级别。
Lloyd-Max 量化以最小化均方量化误差(MSQE)为目标:
这个目标函数衡量了量化前后灰度值之间的加权平方差,权重是直方图频率 h_j。Lloyd-Max 算法通过迭代优化来最小化 MSQE,其过程类似于一维 k-means 聚类:固定边界值 t_i 优化量化值 q_i(取为区间内的加权重心),固定 q_i 优化 t_i(取相邻量化值的中点),交替迭代直到收敛。
渐变图像的量化效果
示例展示了一幅从左到右灰度线性渐变的图像在不同量化级数下的效果。原图包含连续平滑的灰度过渡。量化后,连续渐变被离散化为若干条明显的灰度带,相邻带之间出现可见的边界。量化级数越少,条带越宽、边界越明显。
右上角的图像显示了对角线方向的渐变条纹在量化后的效果,可以看到量化边界与条纹交叉形成的锯齿状图案。左下角的直方图显示这幅渐变图像的灰度分布接近均匀(三角形状),说明各个灰度值出现的频率相近。
实际图像的量化对比
海岸风景图像在三种量化方法下呈现不同的视觉效果。
均匀量化简单地将灰度范围等分,天空和海水区域(灰度值较为集中)出现了明显的量化条带伪影。
基于直方图的量化根据像素分布自适应地分配量化级别,在视觉上通常优于均匀量化,因为它在像素密集的区域保留了更多的灰度层次。
Lloyd-Max 量化在最小化均方误差的意义下是最优的,它倾向于在灰度变化密集的区域分配更多的量化级别,通常能够获得最佳的视觉质量。
彩色图像的量化
灰度图像的量化是一维问题,而彩色图像的量化是三维问题。颜色通常在三维空间中表示,常用的颜色空间包括 RGB(红绿蓝)、HSV(色相饱和度明度)、Lab(亮度和两个色度通道)等。
彩色图像量化的目标是将图像中使用的大量颜色(可能多达 256^3 \approx 1677 万种)减少到较少的代表色(如 256 种用于 GIF 格式,或更少用于某些显示设备)。由于颜色空间是三维的,可以使用任何三维聚类算法来完成这个任务:将每种颜色视为三维空间中的一个点,将相似的颜色聚为一组,每组用其重心颜色作为代表。
K-means 聚类是一种常用的方法,直接将 Lloyd-Max 算法推广到三维。Median Cut 算法是另一种流行的方法,被 Gimp 和 Photoshop 等图像处理软件采用。Median Cut 的基本思想是递归地将颜色空间分割为两半:每次选择颜色分布范围最大的维度,沿该维度的中位数位置切分,将颜色集合分为像素数量相等的两部分。重复这个过程 \log_2 p 次,得到 p 个颜色簇,每个簇的代表色取为簇内颜色的平均值。
抖动技术
抖动的基本原理
抖动(Dithering)是一种通过在量化之前向图像添加噪声来改善量化视觉效果的技术。这个方法看似矛盾——添加噪声通常会降低图像质量,但在量化的特定场景下,适当的噪声反而能带来更好的视觉效果。
抖动技术在印刷领域有广泛的应用,报纸、杂志等印刷品通常只能使用有限的灰度级别(甚至只有黑白两色),通过抖动技术可以模拟出连续色调的视觉效果。
抖动的工作机制
直接量化的问题在于:当原图像中存在灰度渐变区域时,量化会将连续的渐变截断为若干离散的灰度带,相邻带之间形成明显的边界,产生等高线状的伪轮廓。这种伪影的根本原因是量化决策的空间相关性——灰度值相近的相邻像素往往被量化到同一个级别,形成大片的均匀区域。
抖动通过在量化前向每个像素添加随机噪声来打破这种空间相关性。假设某个区域的原始灰度值位于两个量化级别之间,添加噪声后,部分像素的灰度值会被提升而量化到较高级别,另一部分则被降低而量化到较低级别。最终效果是:虽然每个像素只能取离散的量化值,但在空间平均的意义下,该区域的平均亮度与原始灰度相近。人眼在正常观看距离下会自动进行空间平均,从而感知到接近原始的灰度层次。
灰度图像的抖动示例
示例展示了海岸风景图像在 10 个灰度级别下的量化效果对比。上方是原始的灰度图像,下方是不同处理方法的结果。
直接量化(不使用抖动)的结果显示出明显的量化伪影:天空区域出现了大片的均匀色块,灰度渐变被粗暴地截断为几个离散的条带;海水和岩石区域也失去了细腻的纹理层次。这种效果在视觉上非常生硬,与原图的自然过渡相去甚远。
使用抖动后的结果则呈现出不同的特征:虽然图像中出现了细密的颗粒状噪点,但这些噪点的密度随原始灰度值变化,在视觉上形成了灰度渐变的感觉。天空从亮到暗的过渡变得平滑,不再有突兀的边界;岩石和植被的细节也更加丰富。当从正常距离观看时,人眼会将这些噪点平均化,感知到的是接近连续的灰度变化。
彩色图像的抖动示例
抖动技术同样适用于彩色图像的量化。
示例展示了一幅卡通图像在只使用 16 种颜色时的量化效果。
不使用抖动的直接量化结果显示出典型的色彩分层现象:灯光照射区域的平滑渐变被分割成几个明显的色块,人物皮肤和服装上出现了生硬的色彩边界。由于只有 16 种颜色可用,许多原本平滑过渡的区域被强制映射到相同的颜色,形成大片的均匀色块。
应用抖动后,虽然仍然只使用 16 种颜色,但视觉效果明显改善。颜色之间的过渡变得更加自然,灯光的渐变效果得以保留。通过在空间上混合不同颜色的像素点,人眼感知到的是这些颜色的平均值,从而产生了更多的"等效颜色"。这正是印刷中网点技术的数字化实现:用有限的油墨颜色通过空间混合来模拟丰富的色彩。
颜色的感知与表示
颜色感知的三要素
我们看到某个物体呈现特定颜色,实际上是一个完整物理过程的最终结果。这个过程涉及三个不可或缺的参与者:光源、物体和观察者。
光源
光源负责照亮整个场景,没有光源就没有颜色可言。光源的特性由其光谱功率分布函数 I(\lambda) 来描述,其中 \lambda 表示波长。这个函数告诉我们光源在每个波长上发出多少能量。不同的光源具有完全不同的光谱分布:太阳光在可见光范围内分布相对均匀,而荧光灯则在某些特定波长处有明显的能量峰值。
物体
物体与入射光发生相互作用,它会吸收一部分光、漫反射一部分光、镜面反射一部分光,或者让一部分光透射过去。物体的这种特性由其反射率光谱 R(\lambda) 来描述。R(\lambda) 的取值范围在0到1之间,表示物体在波长 \lambda 处反射光的比例。一个看起来是红色的苹果,其 R(\lambda) 在红光波段(约600-700nm)的值较高,而在蓝光和绿光波段的值较低,这意味着它反射大部分红光而吸收其他颜色的光。
观察者
观察者(人眼或相机传感器)接收从物体传来的光。到达观察者的光谱 S(\lambda) 是光源光谱和物体反射率的乘积:
这个公式说明了一个关键事实:我们看到的颜色同时取决于光源和物体。同一个物体在不同光源下会呈现不同颜色,这就是为什么在商店试衣服时颜色看起来不错,回家后却发现颜色不对——因为光源变了。
观察者自身也有特性,由其光感受器的光谱灵敏度来描述。人眼有三种视锥细胞,分别对短波(蓝)、中波(绿)、长波(红)敏感,这决定了人类的三色视觉。
同色异谱现象
由于最终的颜色感知取决于上述三个要素的综合作用,同一个物体在不同环境下或被不同观察者观看时,可能呈现出不同的颜色。反过来,两个具有不同反射光谱的物体,在特定光源和观察者条件下也可能看起来颜色相同,这种现象称为同色异谱。
光源的物理本质
光源本质上是电磁波的发射源。电磁波谱非常广阔,从波长极短的伽马射线(约 10^{-12} m)到波长很长的无线电波(可达数千米)。人眼只能感知其中很窄的一段,称为可见光谱,波长范围大约在380nm到700nm之间。在这个范围内,不同波长对应不同的颜色感知:短波端(约380-450nm)呈现紫色和蓝色,中间波段(约500-570nm)呈现绿色和黄色,长波端(约590-700nm)呈现橙色和红色。
不同物种的视觉范围
人类的可见光范围并非所有生物的标准。某些爬行动物能够感知红外线,这使它们能在黑暗中探测猎物的体温。某些鸟类和昆虫(如蜜蜂)能够感知紫外线,这帮助它们看到花朵上人眼看不见的图案。蜜蜂的可见光谱向紫外端偏移,它们能看到紫外光但看不到红光。
光源的光谱特性
每种光源都有其独特的光谱功率分布 L(\lambda),这决定了它发出的光的颜色特性。日光的光谱相对平滑连续,在整个可见光范围内都有较强的能量。白炽灯(钨丝灯)的光谱偏向长波端,因此光线偏暖黄色。汞灯和荧光灯的光谱呈现明显的线状特征,在某些特定波长处有尖锐的峰值。LED光源的光谱形状取决于其设计,白色LED通常是蓝色LED芯片加黄色荧光粉的组合,因此光谱呈现双峰特征。理解不同光源的光谱差异对于颜色校正和颜色复现至关重要。
物体的反射特性
物体表面的每一个点都可以用其反射率光谱 R(\lambda) 来描述。这个函数定义了物体在每个波长上反射入射光的比例,取值范围在0到1之间。不同材质、不同颜色的物体具有截然不同的反射率曲线。
以图中的蔬果为例,青椒的反射率在绿光波段(约500-570nm)较高,所以呈现绿色;番茄的反射率在红光波段(约600-700nm)较高,所以呈现红色;而柠檬在黄光波段有较高的反射率。
当物体被某个光源 L(\lambda) 照射时,从物体表面反射出去的光谱不再是原来的光源光谱,而是经过物体"过滤"后的结果。这个反射光谱 L_r(\lambda) 由下式给出:
这个乘积关系说明了颜色形成的物理机制:光源提供原始的光谱能量分布,物体的反射率函数决定了哪些波长的光被保留、哪些被吸收。最终到达观察者眼睛的,是两者逐波长相乘的结果。
反射率与观察角度的关系
实际物体的反射率不仅取决于波长,还取决于观察角度 \theta,因此完整的反射率函数应写作 R(\lambda, \theta)。这个角度依赖性可以分解为两个分量的线性组合。
第一个分量是朗伯分量 R_L(\lambda),它描述的是漫反射特性。朗伯反射是一种理想化的漫反射模型,其特点是反射光在各个方向上均匀分布,与观察角度无关。粗糙的、无光泽的表面(如粉笔、哑光纸张)近似满足朗伯反射。朗伯分量只与波长有关,不依赖于角度,它决定了物体的本征颜色。
第二个分量是镜面分量 R_S(\lambda, \theta),它描述的是高光反射特性。光滑表面会在特定方向上产生强烈的反射(即"反光"或"高光"),这个方向遵循反射定律。镜面分量既依赖于波长,也强烈依赖于观察角度。在光滑金属或水面上看到的刺眼反光就是镜面反射的典型例子。镜面反射通常保持光源本身的颜色特性,而非物体的颜色。
人眼视觉系统
眼球的基本结构
人眼是一个精密的光学系统。光线首先通过角膜进入眼球,角膜是眼球最外层的透明组织,提供了大部分的屈光能力。接着光线穿过瞳孔,瞳孔是虹膜中央的开口,可以调节进入眼内的光量。晶状体位于瞳孔后方,通过改变形状来调节焦距,使不同距离的物体都能在视网膜上清晰成像。眼球内部充满透明的房水和玻璃体,它们维持眼球形状并让光线透过。
视网膜位于眼球内壁,是真正进行光电转换的感光组织。视网膜上有一个特殊区域叫做中央凹,这是视觉最敏锐的区域,光感受器在此处密度最高。当我们注视某个物体时,眼球会转动使物体的像落在中央凹上。视神经从眼球后部穿出,将视觉信号传递到大脑。
盲点
视神经穿出眼球的位置没有任何光感受器,因此这个区域无法感知光线,形成所谓的盲点。正常情况下我们意识不到盲点的存在,因为大脑会用周围的视觉信息"填补"这个空缺,而且双眼的盲点位置不同,可以互相补偿。
通过特定的实验可以体验盲点的存在:闭上左眼,用右眼注视左侧的黑点,调整与图像的距离,当距离合适时,右侧的红点会消失——此时红点的像正好落在右眼的盲点上。
视网膜上的光感受器
视网膜上有两类光感受器:视杆细胞和视锥细胞,它们在功能上有明显的分工。
视杆细胞对光线极其敏感,能够在非常微弱的光照条件下工作,负责暗视觉(夜间视觉)。然而视杆细胞的空间分辨率较低,且只有一种类型,无法分辨颜色,只能感知明暗。视杆细胞主要分布在视网膜的周边区域,在中央凹处几乎没有。
视锥细胞的灵敏度较低,需要较强的光照才能工作,负责明视觉(白天视觉)。视锥细胞的空间分辨率高,更关键的是,它有三种不同类型,使人类具有辨别颜色的能力。视锥细胞高度集中在中央凹区域,这解释了为什么我们用视野中心看东西最清楚、颜色最准确。
从分布图可以看出,视锥细胞(蓝线)在中央凹(图中0度位置)处密度极高,向周边急剧下降;视杆细胞(绿线)在中央凹处密度为零,在离中心约20度处达到峰值。视觉敏锐度(红线)与视锥细胞密度高度相关,在中央凹处最高。图中标注的zone x是盲点位置,两种细胞密度都为零。
三色视觉
人类的颜色视觉基于三种类型的视锥细胞,每种对不同波长范围的光最敏感。S型视锥细胞(S代表Short,短波)的灵敏度峰值在约440nm,对应蓝紫色光。M型视锥细胞(M代表Medium,中波)的灵敏度峰值在约545nm,对应绿色光。L型视锥细胞(L代表Long,长波)的灵敏度峰值在约580nm,对应黄橙色光(常被简称为"红"锥细胞,但实际峰值在黄橙区)。
这三种视锥细胞的响应曲线有相当程度的重叠,这意味着单一波长的光通常会同时激活多种视锥细胞,只是激活程度不同。大脑通过比较三种视锥细胞的相对响应强度来判断颜色。这就是三色视觉理论的生理基础,也是为什么用红、绿、蓝三种原色就能混合出几乎所有可见颜色的原因。
M型和L型视锥细胞的灵敏度明显高于S型,这意味着在相同光强下,人眼对绿光和黄光的响应比对蓝光更强。将人眼的整体光谱灵敏度函数 V(\lambda) 归一化后,其峰值在明视觉条件下位于约555nm(黄绿色),在暗视觉条件下(此时只有视杆细胞工作)峰值移动到约500nm(蓝绿色),这种现象称为普尔金耶位移。
其他物种的颜色视觉
三色视觉并非所有动物的标准配置。非洲和亚洲的灵长类动物(包括人类)拥有三种视锥细胞。大多数其他哺乳动物只有两种视锥细胞,是二色视觉者。而某些生物拥有更丰富的颜色感知能力,螳螂虾是极端例子,它拥有多达12种不同类型的光感受器,能够感知包括紫外光和偏振光在内的更广泛光谱信息。
感知颜色空间
从无限维到三维的降维
光谱本身是一个定义在连续波长区间上的函数,从数学角度看,所有可能的光谱构成一个无限维的函数空间。然而,人类感知到的颜色空间却只有三维。这个巨大的降维过程正是由人眼三种视锥细胞的特性决定的。
设 s(\lambda)、m(\lambda) 和 l(\lambda) 分别表示S型、M型和L型视锥细胞的光谱灵敏度函数。当一个光谱 S(\lambda) = I(\lambda)R(\lambda)(即光源光谱与物体反射率的乘积)到达视网膜时,三种视锥细胞分别对其进行积分响应。这三个响应值定义如下:
这三个积分的物理含义是:将入射光谱 S(\lambda) 与每种视锥细胞的灵敏度函数相乘,然后在整个可见光波长范围(从 \lambda_{min} 约380nm到 \lambda_{max} 约700nm)上积分。结果是三个标量值,它们共同构成一个三维向量,完全决定了这个光谱被感知为什么颜色。任何导致相同三元组 (\langle S, s \rangle, \langle S, m \rangle, \langle S, l \rangle) 的光谱,无论其具体形状多么不同,都会被感知为同一种颜色。
视锥细胞响应的重叠性
由于三种视锥细胞的灵敏度曲线在波长轴上有大量重叠,任何单色光(即只包含单一波长的光)都会同时激活至少两种视锥细胞。这意味着不存在一种光只激活某一种视锥细胞而完全不激活其他两种。因此,不可能通过物理手段产生响应三元组为 (1, 0, 0)、(0, 1, 0) 或 (0, 0, 1) 的刺激。这一事实对颜色空间的几何结构有深远影响,也解释了为什么实际可实现的颜色只占据三维空间中的一个有限区域。
同色异谱现象
两个具有不同反射光谱 R_1(\lambda) 和 R_2(\lambda) 的物体,在特定光源 I(\lambda) 下可能呈现完全相同的颜色。这种现象发生的条件是两者对三种视锥细胞产生的响应完全相等:
这三个等式要求在S、M、L三个通道上,两个物体反射光的加权积分都相等。由于积分具有平滑作用,不同的光谱函数完全可能产生相同的积分值。
同色异谱现象具有光源依赖性:两个物体在光源X下看起来颜色相同,换到光源Y下可能呈现明显不同的颜色。这是因为当光源变化时,乘积 I(\lambda) \cdot R(\lambda) 的形状改变了,积分结果也随之改变。在工业配色中,这是一个必须考虑的问题——油漆、纺织品等产品需要在多种标准光源下进行颜色匹配测试。
对于数字传感器(如相机),同样存在类似问题。不同相机的感光元件具有不同的光谱灵敏度曲线,因此同一场景被不同相机拍摄后可能呈现不同的颜色。这也是相机需要进行颜色校准的原因之一。
色觉异常
并非所有人都拥有正常的三色视觉。根据受影响的视锥细胞类型不同,色觉异常可分为几类。全色盲(achromatisme)是指完全无法感知颜色,只能看到灰度,这通常是因为视锥细胞完全缺失或功能丧失。二色视觉(dichromatisme)是指三种视锥细胞中有一种完全缺失,患者只能基于两种视锥细胞的响应来感知颜色。异常三色视觉(trichromatisme anormal)是最常见的类型,三种视锥细胞都存在,但其中一种的灵敏度曲线发生了偏移,导致颜色辨别能力下降。
图中展示的石原氏色盲检测图是临床上常用的色觉筛查工具。正常三色视觉者能在图中看到由不同颜色圆点组成的数字或图案,而特定类型的色觉异常者则无法分辨这些图案。
色适应
人类视觉系统具有自动适应环境光源变化的能力,这称为色适应。当我们从日光环境进入白炽灯照明的室内时,尽管照射到视网膜上的光谱发生了显著变化(白炽灯光谱偏暖黄色),我们对物体颜色的感知却基本保持稳定——白纸仍然看起来是白色的,而不是黄色的。
图中三幅皮划艇照片展示了这一现象。左图呈现明显的青色调,中图呈现正常色调,右图呈现品红色调。如果一个人长时间处于左图所示的光照环境中,视觉系统会逐渐适应,最终感知到的颜色会接近中图的效果。这种适应机制帮助我们在不同光照条件下保持对物体颜色的恒常感知。
白平衡
白平衡的目标
数字相机不具备人眼的自动色适应能力,因此需要通过白平衡处理来补偿不同光源的色温差异。白平衡的目标是:首先估计场景中的光源特性,然后对图像进行变换,使其呈现为在标准参考光源(通常选择D65,即模拟正午日光的标准光源)下的效果。
图中左侧照片是相机自动白平衡的结果,画面整体呈现暖黄色调,这是因为实际光源(室内灯光)的色温低于相机假设的参考值。右侧是经过白平衡校正后的结果,色调更加中性自然。
Von Kries假设
在实际应用中,白平衡校正通常采用对角线性变换,这基于Von Kries假设。该假设认为,色适应可以通过对三个颜色通道分别进行独立的缩放来近似模拟。具体而言,如果用 (R, G, B) 表示原始图像的三通道值,校正后的值 (R', G', B') 可以通过对角矩阵变换得到,即每个通道乘以一个独立的系数。这些系数的确定通常基于场景中的白色或灰色参考点——理想情况下,白色物体在任何光源下都应该呈现为中性色,由此可以反推出光源的色温并计算校正系数。
白平衡的数学实现
白平衡处理分为两个步骤:首先估计场景中实际光源的颜色特性,然后对图像进行变换使其呈现为在参考光源下的效果。
光源估计
设实际光源的颜色由三元组 (R_0, G_0, B_0) 表示,这三个值分别对应光源在红、绿、蓝三个通道上的相对强度。光源估计的任务就是从图像本身推断出这三个值。
对角变换
基于Von Kries假设,白平衡校正采用对角线性变换。设参考光源(通常是D65标准日光)的颜色为 (R_1, G_1, B_1),则对图像中每个像素 (R, G, B) 进行如下变换:
这个变换的含义是:每个颜色通道独立地进行缩放,缩放系数等于参考光源与实际光源在该通道上的比值。如果实际光源偏黄(即 R_0 和 G_0 相对于 B_0 较大),则变换会降低R和G通道、提升B通道,从而消除黄色色偏。
光源估计方法
估计实际光源 (R_0, G_0, B_0) 有多种方法。灰度世界模型假设场景中所有颜色的平均值应该是中性灰色,因此将整幅图像在每个通道上的均值作为光源估计值。这个假设在颜色分布较为均匀的自然场景中效果较好,但在颜色分布严重偏斜的场景(如大面积红墙)中会失效。
白色块模型假设场景中存在白色或接近白色的物体,光源颜色可以从图像中最亮的像素推断。具体实现时,通常选取亮度最高的若干像素,计算它们的颜色均值作为光源估计。这个方法的前提是场景中确实存在白色物体且没有过曝。
目前性能最好的光源估计方法基于机器学习,通过在大量标注数据上训练神经网络来预测场景光源。这些方法能够学习到更复杂的场景先验知识,在各种复杂情况下都能给出较好的估计。
白光的定义
白光并没有唯一的物理定义。从物理角度看,光谱可以用波长 \lambda 或频率 \nu 作为自变量来表示,但由于两者之间的非线性关系(\lambda = c/\nu),一个在波长域均匀分布的光谱在频率域并不均匀,反之亦然。因此,"均匀光谱"这个概念本身就依赖于选择哪种表示方式,不存在绝对意义上的"均匀白光"。
从感知角度看,白色的定义更加相对化。人类视觉系统会自动进行色适应,大脑会根据环境光源调整对颜色的感知,使得在当前光照条件下反射率最高的物体被感知为白色。这意味着我们对白色的感知是情境依赖的,而非绝对的。
为了实际应用的需要,国际照明委员会(CIE)定义了若干标准白光。D65是最常用的参考光源,它模拟欧洲正午日光在全年的平均光谱分布,色温约为6500K。D50是另一个常用标准,模拟特定条件下的直射阳光,色温约为5000K,在印刷行业广泛使用。不同的应用领域可能采用不同的白点标准。
视觉感知的局部对比度敏感性
人眼对颜色的感知不仅取决于该点的绝对物理属性,还强烈依赖于其周围环境。这种对局部对比度的敏感性会产生各种视觉错觉。
第一个示例中,左侧红色背景上的小方块和右侧绿色背景上的小方块看起来颜色不同——左侧的看起来偏绿,右侧的看起来偏红。然而,图下方将这两个小方块单独取出并列放置后可以看到,它们实际上是完全相同的颜色。周围的背景颜色改变了我们对目标颜色的感知,这种现象称为同时对比效应。视觉系统倾向于增强相邻区域之间的颜色差异,这有助于我们在自然环境中更好地区分物体边界。
第二个示例是著名的方块阴影错觉。在这个彩色方块组成的场景中,处于阴影区域的某些方块和处于明亮区域的某些方块看起来颜色不同,但实际测量会发现它们在图像中的像素值是相同的。视觉系统在解释图像时会自动考虑阴影的存在,对阴影区域的颜色进行"补偿",因此我们感知到的是物体的"本征颜色"而非图像中的实际像素值。这种机制帮助我们在变化的光照条件下保持对物体颜色的恒常感知,但也导致了这类视觉错觉。
到这里
视网膜层面的信号处理
视觉信号的处理并非始于大脑,而是在视网膜内部就已经开始。视网膜是一个复杂的多层神经网络结构,包含多种类型的神经细胞。光感受器(视锥和视杆细胞)位于最外层,它们的输出信号经过双极细胞、水平细胞、无长突细胞等中间神经元的处理,最终汇聚到神经节细胞,由神经节细胞的轴突组成视神经将信息传递到大脑。
在这个过程中,视网膜神经元执行若干基本的信号处理操作。其中包括类似于求导的边缘增强操作,以及中心-周边差分操作,后者使得神经元对局部对比度敏感而非对绝对亮度敏感。另一类操作是颜色通道之间的减法运算,特别是红-绿通道相减和蓝-黄通道相减,这形成了所谓的颜色对立通道。
这种视网膜层面的预处理具有信息压缩的功能。视神经只有约一百万根神经纤维,而视网膜上有超过一亿个光感受器,因此必须对信息进行大幅压缩才能通过这个传输瓶颈。颜色对立编码和边缘增强都是有效的压缩策略,它们保留了对视觉任务最有用的信息。
互补色与对立色
互补色
互补色是指混合后能产生中性灰色(或白色)的一对颜色。在RGB颜色系统中,典型的互补色对包括:青色与红色、品红色与绿色、黄色与蓝色。这些颜色对在色轮上处于相对的位置。互补色的概念源于加色混合原理:当两种颜色的光相加后,三种视锥细胞的响应达到平衡,就会产生无彩色感知。
对立色
对立色理论从不同角度理解颜色关系。19世纪的研究者观察到一些三色理论难以解释的现象:黄色在主观上被感知为一种基本颜色,而非红色和绿色的混合;不存在"红绿色"或"蓝黄色"这样的颜色感知。基于这些观察,对立色理论提出人类颜色感知基于四种基本色——红、绿、蓝、黄,它们形成两对对立关系:红-绿对立和蓝-黄对立。
对立色理论得到了视网膜生理学的支持。视网膜中确实存在执行颜色减法运算的神经元,它们计算L锥细胞与M锥细胞响应之差(对应红-绿通道)以及S锥细胞与L+M响应之差(对应蓝-黄通道)。因此,三色理论描述的是光感受器层面的机制,而对立色理论描述的是更高层处理的机制,两者并不矛盾。
互补色后效
当眼睛长时间注视某种颜色后,负责感知该颜色的视锥细胞会发生适应性疲劳,灵敏度暂时下降。此时如果转而观看白色或灰色背景,会看到原来颜色的互补色残像。这是因为疲劳的视锥细胞响应减弱,而其他视锥细胞响应正常,导致颜色平衡被打破。
图中的实验演示了这一现象:注视红色背景上的绿色鸟图案约30秒,然后将视线转移到空白页面,会在空白处看到青色背景上的品红色(或红色)鸟的残像。绿色鸟的残像呈现品红色是因为对绿光敏感的M锥细胞疲劳后,红光和蓝光的相对响应增强,产生品红色感知;红色背景的残像呈现青色是因为L锥细胞疲劳后,绿光和蓝光响应相对增强。
对立色的实际应用
手术室中医护人员穿着青绿色手术服,这不仅是为了区分血迹,更是基于颜色视觉的原理。外科医生在手术过程中长时间注视红色的血液和组织,眼睛会对红色产生适应性疲劳。如果周围环境是白色的,疲劳后的残像会产生令人不适的青绿色幻影。而青绿色手术服和环境正好吸收了这种残像,使视觉保持稳定。青绿色是红色的互补色(或近似对立色),能够中和红色疲劳造成的视觉偏差。
艺术家也会利用对立色原理增强视觉效果。梵高的画作《夜间咖啡馆》大量使用红色和绿色的对比:红色的墙壁与绿色的台球桌形成强烈的视觉张力。对立色并置会相互增强彼此的饱和度感知,创造出活跃、紧张的视觉氛围。
感知颜色空间的几何结构
视锥细胞响应的数学模拟
为了在计算机中模拟颜色感知,可以用高斯函数近似三种视锥细胞的光谱灵敏度曲线。
图中显示了这种近似:蓝色曲线代表S锥细胞响应,峰值在短波端(约450nm);绿色曲线代表M锥细胞响应,峰值在中波段(约530nm);红色曲线代表L锥细胞响应,峰值在较长波段(约580nm)。每条曲线都是以峰值波长为均值、具有一定标准差的高斯函数。
单色光轨迹与颜色锥体
当光谱刺激 S 遍历所有单色光(即只包含单一波长的光)时,对应的视锥细胞响应三元组 (\langle S, s \rangle, \langle S, m \rangle, \langle S, l \rangle) 在三维空间中描绘出一条曲线,称为单色光轨迹或光谱轨迹。这条曲线从短波端(蓝紫色)开始,经过绿色、黄色,到达长波端(红色)。
所有可见颜色(不仅是单色光,还包括各种光谱组合)所对应的响应三元组构成三维空间中的一个锥体结构。这个锥体的顶点位于原点 (0, 0, 0)(对应完全黑暗),由单色光轨迹和连接轨迹两端的直线(紫红色线,对应红光与蓝光的混合)共同界定锥体的边界。锥体内部的点对应可实现的颜色,锥体外部的点在物理上无法通过任何光谱刺激产生——例如前面提到的纯粹只激活单一类型视锥细胞的刺激就落在锥体之外。
这种几何表示揭示了颜色空间的基本拓扑结构:它是一个有界的凸锥,而非整个三维空间。
色度图的几何构造
从三维锥体到二维平面
颜色锥体是三维的,但亮度只是颜色的一个属性,与色调和饱和度在概念上可以分离。如果我们只关心颜色的"色彩"特性而忽略亮度,可以通过投影的方式将三维颜色空间降为二维。具体方法是用平面 x + y + z = 1 去截取颜色锥体,得到的截面就是所有等亮度颜色的集合。
这个截面呈现为一个封闭的凸区域,其边界由单色光轨迹的投影和连接红、蓝两端的紫红色直线组成。图中的三维视图展示了这个截面在空间中的位置:它是一个略呈三角形但边界弯曲的区域,位于从原点出发的颜色锥体与归一化平面的交集处。
CIE XYZ色度系统
标准化颜色表示
1931年,国际照明委员会(CIE)建立了XYZ颜色系统,为颜色的定量描述提供了国际标准。XYZ坐标是对人眼三种视锥细胞响应的线性变换,经过特殊设计使得Y分量正好对应人眼的明度感知,且所有可见颜色的XYZ值都是非负的。
将XYZ三维空间投影到 x + y + z = 1 平面上,得到的二维表示称为色度图。由于 x + y + z = 1 的约束,只需两个独立坐标即可确定色度,通常选择 x 和 y:
第三个坐标 z 可由 z = 1 - x - y 推出。这种表示方式将三维颜色空间分解为二维色度(由 x, y 决定)和一维亮度(由 Y 的绝对值决定)。
色度图的结构
CIE色度图呈现马蹄形。曲线边界对应单色光(光谱色),从左下角的紫色(约380nm)出发,经过蓝色、青色、绿色(顶部,约520nm)、黄色、橙色,到达右下角的红色(约700nm)。边界上的数字标注对应波长值。连接曲线两端的直线边界对应紫红色系,这些颜色无法用单一波长的光产生,只能通过混合红光和蓝光得到。
色度图中心偏下的位置是白点区域,不同的标准白光(D65、D50等)对应图中略有不同的位置。从白点向边界画一条射线,射线方向决定了色调,射线上的位置(离白点的距离)决定了饱和度。越靠近边界,颜色越饱和(越"纯");越靠近白点,颜色越接近灰白(越"淡")。
色调的定义
在色度图中,色调可以用从白点出发、指向边界的射线方向来定义。如果射线指向单色光轨迹上的某一点,该点对应的波长就是这个颜色的主波长,也就是其色调的物理定义。如果射线指向紫红色直线边界,则该颜色的色调是紫红色系,没有对应的单一主波长,而是红光与紫光混合的结果。
色调与饱和度的操作
图中展示了对同一幅图像进行饱和度调整的效果。上图是原始图像,色彩相对柔和。下图是提高饱和度后的结果,所有颜色都变得更加鲜艳浓烈。从色度图的角度理解,提高饱和度相当于将每个像素的色度坐标沿着从白点出发的射线方向向外推移,使其更接近色度图边界。这个操作保持了色调不变(射线方向不变),只改变了饱和度(在射线上的位置)。
加色混合与减色混合
颜色混合存在两种根本不同的模式,它们基于完全不同的物理过程。
加色混合
加色混合发生在多种光源的光线叠加时。红光、绿光、蓝光是加色混合的三原色。当红光与绿光叠加时,两束光的光谱直接相加,产生的混合光同时刺激L和M视锥细胞,被感知为黄色。红光与蓝光叠加产生品红色,绿光与蓝光叠加产生青色。三种原色光全部叠加且强度适当时产生白色。加色混合中,混合结果总是比原来的颜色更亮,因为光能量在增加。
减色混合
减色混合发生在光线被颜料或滤光片吸收时。青色、品红色、黄色是减色混合的三原色。青色颜料吸收红光,品红色颜料吸收绿光,黄色颜料吸收蓝光。当黄色颜料与青色颜料混合时,黄色吸收蓝光、青色吸收红光,只有绿光被反射,因此混合结果呈绿色。三种原色颜料全部混合时,理论上会吸收所有光线产生黑色(实际中由于颜料不完美,通常产生深棕色或深灰色)。减色混合中,混合结果总是比原来的颜色更暗,因为更多的光被吸收了。
加色三原色RGB和减色三原色CMY正好互为补色关系:青色是红色的补色,品红是绿色的补色,黄色是蓝色的补色。
显示设备中的加色混合
所有发光型显示设备都采用加色混合原理,包括阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、激光投影仪等。
以LCD为例,屏幕由大量像素组成,每个像素包含红、绿、蓝三个子像素。每个子像素前面有对应颜色的滤光片,背光源的白光经过滤光片后只透过特定颜色。液晶分子的排列可以被电压控制,从而调节透过的光强。三个子像素发出的红、绿、蓝光在空间上紧密相邻,由于人眼分辨率有限,无法区分这些微小的子像素,只能感知到它们混合后的颜色。通过分别控制三个子像素的亮度,就可以产生各种颜色。
图中的LCD结构示意图展示了屏幕的多层结构:从后向前依次是背光源、偏光片、液晶层、彩色滤光片阵列、前偏光片。放大后的像素单元清晰显示了红、绿、蓝三色子像素的排列。
加色混合的局限性
加色混合的原理是:用三种原色光源的适当组合,产生与目标光谱 S(\lambda) 相同的颜色感知。这里需要强调的是,混合光的物理光谱与目标光谱可能完全不同,但只要它们对三种视锥细胞产生的响应相同,就会被感知为同一颜色。这正是同色异谱现象在显示技术中的应用。
然而,任何实际的显示设备都无法再现全部可见颜色。图中将显示器的色域(可再现颜色范围)叠加在CIE色度图上,显示器色域呈现为一个三角形区域,其三个顶点对应显示器红、绿、蓝三原色的色度坐标。这个三角形远小于整个马蹄形可见色域,意味着大量高饱和度的颜色(特别是光谱色附近的纯青色、纯绿色等)无法被显示器准确再现。
色域受限的原因有两方面。首先是饱和度限制:显示器的原色本身不是单色光,而是有一定带宽的光谱,因此原色的色度坐标位于色度图边界的内侧而非边界上。其次是亮度限制:显示器的最大亮度有上限,无法再现非常明亮的颜色。不同显示技术(LCD、OLED、激光投影等)的色域大小有所不同,但都无法覆盖全部可见色。
减色混合与印刷
四色印刷原理
印刷采用减色混合,使用青色(Cyan)、品红色(Magenta)、黄色(Yellow)三种基本油墨。理论上,CMY三色混合可以产生黑色,但实际油墨的吸收特性不完美,混合结果通常是浑浊的深褐色而非纯黑色。为了获得深邃的黑色并节省彩色油墨,印刷中额外添加黑色(blacK)油墨,形成CMYK四色印刷系统,也称为四色印刷。
图中展示了彩色图像分解为四个分色版的过程。原始的水果摊图像被分解为青色版、品红色版、黄色版和黑色版。每个分色版是一幅灰度图像,灰度值表示该位置需要印刷的对应颜色油墨的浓度。青色版在天空区域(原图中的蓝色部分)浓度较高,品红色版在红色水果区域浓度较高,黄色版在黄色水果和橙色区域浓度较高,黑色版主要用于增强暗部细节和轮廓。
印刷时,四个分色版依次叠印在纸张上。由于油墨是半透明的,光线穿过多层油墨再从纸张反射回来,经历了多次吸收,最终产生所需的颜色。这就是减色混合的物理过程:每种油墨吸收掉一部分光谱成分,剩余的光构成我们看到的颜色。
颜色空间
颜色空间是用于数学化描述和表示颜色的坐标系统。不同的颜色空间适用于不同的应用场景,它们之间可以通过数学变换相互转换。
RGB颜色空间
RGB立方体的几何结构
RGB颜色空间是最直接对应加色混合原理的颜色表示方式。每种颜色用三个分量 (R, G, B) 表示,分别对应红、绿、蓝三原色的强度。当每个分量的取值范围归一化到 [0, 1] 时,所有可表示的颜色构成一个单位立方体。
立方体的八个顶点对应特殊颜色。原点 (0, 0, 0) 是黑色,三原色分量都为零意味着没有光。对角顶点 (1, 1, 1) 是白色,三原色以最大强度等比例混合。三个坐标轴上的顶点分别是纯红色 (1, 0, 0)、纯绿色 (0, 1, 0)、纯蓝色 (0, 0, 1)。另外三个顶点是二次色:黄色 (1, 1, 0) 是红光与绿光混合、青色 (0, 1, 1) 是绿光与蓝光混合、品红色 (1, 0, 1) 是红光与蓝光混合。
从黑色顶点到白色顶点的体对角线称为灰度轴,轴上的点满足 R = G = B,对应从黑到白的各级灰色。灰度轴上的颜色没有色调,只有明度差异。
立方体内任意一点 M 的坐标 (r, g, b) 表示一种颜色,其中 r、g、b 分别是该点在红、绿、蓝轴上的投影值(或者说是沿三个坐标轴方向的分量)。
RGB图像的通道分解
一幅RGB彩色图像可以看作三幅灰度图像的叠加,每幅灰度图像称为一个通道。红色通道记录每个像素的R分量,绿色通道记录G分量,蓝色通道记录B分量。分别观察这三个通道,可以了解图像中红、绿、蓝成分的空间分布。
在图像处理中,通道分解是常用的分析和处理手段。某些操作可能只针对特定通道进行,例如调整红色通道的对比度来改变图像的暖冷色调,或者分析各通道的直方图来判断图像的色彩平衡。
RGB通道的相关性
图中分别展示了同一幅图像的R通道、G通道和B通道。将三个通道作为灰度图像观察时,会发现它们看起来非常相似:亮的区域在三个通道中都亮,暗的区域在三个通道中都暗。这说明R、G、B三个分量之间存在很强的相关性。
这种高相关性源于自然图像的统计特性。自然场景中的大多数颜色都相对接近灰度轴(低饱和度),即R、G、B三个值相近。此外,亮度变化(由光照强度决定)会同时影响三个通道,使它们同步增减。只有在颜色饱和度较高的区域(如图中红衣服的人),三个通道才会出现明显差异。
从信息论角度看,高相关性意味着RGB表示存在信息冗余。三个通道携带了大量重复信息,这对于图像压缩是不利的。后续介绍的某些颜色空间变换(如YCbCr)正是为了去除这种相关性,将亮度信息和色度信息分离,从而实现更高效的压缩。
不同的RGB标准
RGB颜色空间并非唯一确定的,因为"红色"、"绿色"、"蓝色"原色的具体选择可以有所不同。不同的RGB标准选择不同的原色色度坐标,从而定义了不同大小的色域。
sRGB是目前最广泛使用的标准RGB颜色空间,由HP和Microsoft于1996年联合制定,成为互联网、数码相机和大多数消费级显示器的默认色彩空间。sRGB的色域相对较小,在色度图上表现为一个较小的三角形,特别是在绿色和青色区域覆盖有限。
Adobe RGB是Adobe公司于1998年为专业图像处理定义的颜色空间,色域明显大于sRGB,特别是向青绿色方向扩展。
图中可以看到,Adobe RGB三角形的绿色顶点比sRGB更靠近色度图边界,能够表示更多高饱和度的绿色和青色。专业摄影和印刷工作流程中常使用Adobe RGB以保留更多颜色信息。
图中还标注了实际屏幕的色域,它通常小于sRGB标准定义的范围,说明即使图像文件使用sRGB编码,显示器也可能无法完全准确再现所有sRGB颜色。色彩管理的任务之一就是处理不同色域之间的转换和映射问题。
基于感知属性的颜色空间
RGB表示的局限性
RGB颜色空间虽然与显示硬件直接对应,但它并不符合人类对颜色的直观感知方式。当我们描述一种颜色时,很少会说"这是R=200, G=100, B=50的颜色",而更可能说"这是一种较暗的橙色"或"这是一种淡淡的蓝色"。人类对颜色的认知更自然地分解为三个感知属性:色调、饱和度和明度。
HSV、HSL、HCL等颜色空间正是为了提供更符合人类直觉的颜色表示而设计的。这些空间通过对RGB坐标进行非线性变换,将颜色描述为三个感知上独立的属性。
三个感知属性的定义
明度(Lightness/Value,记为 V 或 L)描述颜色的明暗程度,即一个表面看起来发出或反射多少光。明度高的颜色看起来明亮,明度低的颜色看起来暗淡。在RGB立方体中,明度大致对应从黑色顶点到白色顶点的方向。
色调(Hue,记为 H)是颜色最本质的属性,决定了我们称一种颜色为"红色"、"橙色"、"黄色"还是"蓝色"。色调可以理解为颜色在色轮上的位置,通常用角度(0°到360°)或归一化值(0到1)表示。红色对应0°,黄色对应60°,绿色对应120°,青色对应180°,蓝色对应240°,品红对应300°,然后回到红色形成闭环。
饱和度(Saturation,记为 S)描述颜色的纯度或鲜艳程度。高饱和度的颜色浓烈鲜明,接近光谱色;低饱和度的颜色灰暗淡雅,接近灰色。饱和度可以理解为颜色与白光(或灰色)混合的程度,完全饱和的颜色不含白光成分,完全不饱和的颜色就是灰色。
圆柱/圆锥坐标系统
这类颜色空间采用圆柱坐标或圆锥坐标的几何结构。以典型的HCL空间为例,纵轴表示明度,从底部的黑色到顶部的白色。水平面上的角度表示色调,绕轴一周对应色轮上的所有色调。到轴的径向距离表示色度(Chroma,与饱和度类似但定义略有不同),越远离轴颜色越饱和。
图中左侧展示了RGB立方体到这种表示的映射关系。立方体的灰度轴(从黑到白的对角线)变成了圆柱的中心轴。立方体的六个非灰色顶点(红、黄、绿、青、蓝、品红)均匀分布在色轮上。右侧的三维图形展示了HCL空间的形状,它呈现为一个双锥体或纺锤形,因为在极亮和极暗处可达到的最大饱和度都较低,只有在中等明度处才能达到最高饱和度。
RGB到HSV的转换
转换公式的定义
从RGB颜色空间到HSV颜色空间的转换需要先计算两个中间量:max 和 min,分别是三个RGB分量中的最大值和最小值:
这两个量在后续计算中反复使用。max - min 的值反映了颜色的"色彩范围",对于灰色(R = G = B),这个差值为零;对于饱和颜色,这个差值较大。
明度V的计算
明度 V 的定义最为简单,直接取RGB三分量中的最大值:
这个定义意味着只要有一个颜色通道达到最大值,明度就是最大的。这与人眼感知亮度的方式有一定对应关系——高亮度的颜色至少在某个通道上有较高的值。
饱和度S的计算
饱和度 S 的定义需要分情况讨论:
当 max = 0 时,意味着 R = G = B = 0,即纯黑色,此时饱和度无定义,约定为0。当 max \neq 0 时,S = 1 - \frac{min}{max} 衡量的是最小分量与最大分量的比值。如果 min = max(灰色),则 S = 0,颜色完全不饱和。如果 min = 0(至少有一个通道为零),则 S = 1,颜色完全饱和。
色调H的计算
色调 H 的计算最为复杂,需要根据哪个RGB分量最大来分四种情况:
这些公式将色调映射到0°到360°的角度范围。当红色分量最大时,色调在红色附近(0°或360°),根据绿色和蓝色的相对大小向黄色(60°)或品红色(300°)偏移。当绿色分量最大时,色调在绿色附近(120°),根据蓝色和红色的相对大小向黄色或青色偏移。当蓝色分量最大时,色调在蓝色附近(240°),根据红色和绿色的相对大小向青色或品红偏移。
60° 这个系数确保相邻主色之间的间隔是60°(红0°、黄60°、绿120°、青180°、蓝240°、品红300°)。当 max = min 时(灰色),色调无定义,约定为0。
HSV空间的几何形状
HSV颜色空间呈现倒圆锥形。圆锥的顶点在底部,对应黑色(V = 0)。圆锥的底面是一个圆盘,对应最大明度(V = 1)。在每个水平截面上,角度方向对应色调 H,径向方向对应饱和度 S——中心是无彩色(灰色),边缘是最饱和的颜色。
HSV通道分解
将同一幅彩色图像分解为HSV三个通道,可以更直观地理解这三个属性携带的信息类型。
V通道(明度)
V通道的灰度图像与RGB分解得到的各通道非常相似,都反映了图像的亮度分布。明亮的区域(白色物体、被阳光直射的地面)在V通道中呈现高灰度值,阴影区域呈现低灰度值。V通道几乎包含了图像的全部结构信息。
S通道(饱和度)
S通道揭示了颜色的鲜艳程度分布。在S通道图像中,颜色鲜艳的区域(红衣服、彩色物体)呈现高灰度值,而接近灰色或白色的区域(白色羽毛、灰色地面、人的皮肤)呈现低灰度值。S通道与V通道在空间分布上有明显差异——V通道高的地方(如白色羽毛)S通道可能很低,因为白色虽然亮但不饱和。
H通道(色调)
H通道图像看起来最为"混乱"。这是因为色调是一个角度量,在低饱和度区域(如灰色背景、白色物体),色调值对微小的颜色波动极其敏感,产生剧烈的跳变。即使是非常接近灰色的区域,只要RGB三个值有微小差异,就会产生一个确定的色调值,但这个值的物理意义很弱。因此H通道在低饱和度区域表现为噪声状的随机图案。在高饱和度区域(如红衣服),H通道则呈现稳定的灰度值。
JPEG压缩对HSV通道的影响
当图像经过高压缩率的JPEG压缩后,在HSV分解中可以观察到特定的退化模式。V通道受到的影响相对较小,因为JPEG压缩优先保留亮度信息。S通道出现明显的块状伪影,特别是在色彩过渡区域,因为JPEG对色度信息的压缩更激进。H通道的退化最为严重,块状伪影非常明显,在原本应该平滑的单色区域出现了阶梯状的色调跳变。
这种现象说明了HSV空间的一个实际问题:H和S通道对量化误差非常敏感。在图像压缩和传输中,直接在HSV空间操作往往会导致严重的视觉伪影。这也是为什么标准图像压缩格式(如JPEG)选择使用YCbCr空间而非HSV空间的原因之一。
JPEG压缩对H通道的影响
经过高压缩率JPEG处理后的图像,其H通道(色调)退化非常严重。图中可以看到明显的方块状伪影,这些8×8像素的块边界清晰可见,块内部的色调值被粗糙量化,导致原本应该平滑过渡的区域出现了阶梯状跳变。
这种退化的原因在于JPEG压缩的工作原理。JPEG首先将图像转换到YCbCr空间,然后对亮度(Y)和色度(Cb、Cr)通道分别进行DCT变换和量化。色度通道通常被更激进地下采样和量化,因为人眼对色度变化的敏感度低于对亮度变化的敏感度。当压缩后的YCbCr图像被转换回RGB、再转换到HSV时,色度信息的损失会在H通道中被放大,特别是在低饱和度区域,微小的色度误差会导致巨大的色调跳变。
感知均匀颜色空间
XYZ空间的非均匀性
CIE XYZ颜色空间虽然提供了颜色的标准化数学描述,但它有一个严重的缺陷:在xy色度图上相等的距离并不对应相等的感知色差。20世纪40年代,MacAdam通过心理物理学实验系统地研究了这一问题。
实验方法是让观察者判断两个颜色是否相同,找出围绕某个参考色、刚好能被察觉为不同的所有颜色点。这些临界点在xy色度图上并不形成圆形,而是形成椭圆——这些椭圆被称为MacAdam椭圆。
图中显示的椭圆分布揭示了XYZ空间的非均匀性:在绿色区域,椭圆很大,说明人眼对绿色区域的颜色差异不敏感;在蓝色和红色区域,椭圆较小,说明人眼对这些区域的颜色差异更敏感。椭圆的方向也各不相同,说明在不同颜色区域,人眼对不同方向的色差敏感度不同。
Lab颜色空间的设计目标
为了解决XYZ空间的非均匀性问题,研究者们致力于建立感知均匀的颜色空间。在这样的空间中,任意两点之间的欧氏距离与人眼感知的色差成正比。CIE Lab(也写作Lab*或CIELAB)是最广泛使用的感知均匀颜色空间,由CIE在1976年标准化。
Lab空间的三个坐标
Lab空间由三个坐标定义。L 坐标表示明度(Luminance/Lightness),取值范围从0(黑色)到100(白色),对应灰度轴。L 是通过对XYZ空间的Y分量进行非线性变换得到的,这个非线性变换近似模拟了人眼对亮度的对数响应特性。
a 和 b 坐标表示色度(Chrominance),它们共同定义了等明度平面上的颜色位置。a 坐标表示红-绿对立轴,正值偏红,负值偏绿。b 坐标表示黄-蓝对立轴,正值偏黄,负值偏蓝。这种设计直接对应于前面讨论的对立色理论和视网膜层面的颜色编码机制。
在每个等明度平面(L 为常数)上,a 和 b 构成一个二维笛卡尔坐标系。也可以将 (a, b) 转换为极坐标形式:径向距离称为色度(Chroma),角度称为色调角(Hue angle),这就得到了LCH表示。
颜色差异度量
在Lab空间中,两个颜色之间的感知差异可以用欧氏距离来度量:
其中 \Delta L = L_1 - L_2,\Delta a = a_1 - a_2,\Delta b = b_1 - b_2 分别是两个颜色在三个坐标上的差值。\Delta E(Delta E)是颜色科学和工业中广泛使用的色差指标。一般认为 \Delta E < 1 的色差几乎无法被察觉,\Delta E \approx 2-3 是普通观察者能察觉的阈值,\Delta E > 5 的色差明显可见。
颜色分布的可视化
Bayer滤色阵列
数码相机的图像传感器本身只能感知光强,不能分辨颜色。为了获取彩色图像,传感器前面覆盖了一层滤色阵列,最常用的是Bayer阵列。图中显示了Bayer阵列的排列模式:在每个2×2的单元中,有两个绿色滤光片、一个红色滤光片和一个蓝色滤光片。绿色滤光片数量是红色和蓝色的两倍,因为人眼对绿光的亮度敏感度最高,更多的绿色采样有助于提高图像的锐度和信噪比。
原始的Bayer图像是一幅马赛克图像,每个像素只有一种颜色信息。通过去马赛克算法(demosaicing)对缺失的颜色信息进行插值,才能得到每个像素都有完整RGB三通道值的彩色图像。
不同颜色空间中的颜色分布
下方的三维可视化展示了同一幅图像的像素在不同颜色空间中的分布形态。左图是RGB空间,图像中的颜色点分布在一个单位立方体内,可以看到点云沿着从黑到白的对角线方向延伸,反映了自然图像中亮度变化是主导因素。中图是Lab空间中的分布,由于Lab空间是感知均匀的,点云的分布形态与RGB空间有所不同。右图展示了颜色点在色度平面(a-b 平面或类似表示)上的投影,可以观察图像的色调和饱和度分布特征。
以经典绘画作品为例,可以分析不同风格作品的颜色使用特点。图中大卫的新古典主义绘画色彩相对克制,主要集中在红褐色调和灰色调,在Lab空间中点云分布较为紧凑,色度值普遍不高。相比之下,现代色彩丰富的图像在颜色空间中会呈现更分散的分布。
彩色传感器与去马赛克
本部分讨论数码相机如何采集彩色图像,以及如何从传感器原始数据重建完整的彩色图像。
彩色图像传感器的类型
三CCD传感器
三CCD(Tri-CCD)传感器使用三个独立的CCD感光芯片,分别采集红、绿、蓝三个通道的图像。入射光首先经过一个分色棱镜系统,棱镜将光束分离成红、绿、蓝三个分量,每个分量被导向对应的CCD传感器。三个CCD在空间上精确对齐,确保同一场景点的三种颜色信息被准确记录。
这种设计的优势在于每个像素位置都有完整的RGB三通道信息,无需任何颜色插值,因此理论上能获得最高的颜色精度和空间分辨率。然而,三CCD系统体积较大、成本高昂,主要用于专业广播级摄像机,在消费级相机中很少使用。
Foveon X3传感器
Foveon X3传感器采用了一种独特的垂直堆叠结构,被Sigma相机所采用。其原理基于硅对不同波长光的吸收深度不同:蓝光在硅表面很浅的位置就被吸收,绿光穿透稍深后被吸收,红光则穿透到最深层才被吸收。
X3传感器在每个像素位置堆叠三层光敏元件,从上到下分别感知蓝光、绿光和红光。这样,每个空间位置都能同时获得完整的RGB信息,无需去马赛克处理。图中展示了这种分层结构:光线从顶部入射,依次穿过蓝色感知层、绿色感知层,最后到达红色感知层。
X3传感器的优势是避免了传统Bayer阵列的颜色混叠问题,但由于各层之间存在串扰、深层信号较弱等问题,实际颜色分离效果并不完美,且制造难度较高。
Bayer滤色阵列
Bayer滤色阵列(Bayer Color Filter Array, CFA)是1976年由柯达工程师Bryce Bayer发明的,至今仍是数码相机中最广泛使用的彩色成像方案。在单片传感器前覆盖一层彩色滤光片阵列,每个像素只采集一种颜色。
标准Bayer阵列的基本单元是2×2像素块,包含一个红色滤光片、一个蓝色滤光片和两个绿色滤光片,排列方式为RGGB或GRBG等变体。绿色像素数量是红色和蓝色的两倍,这个设计基于人眼对绿光的亮度响应最强,更多的绿色采样能提高感知亮度的精度。
图中清晰展示了Bayer阵列的马赛克图案:绿色和红色像素在奇数行交替排列,绿色和蓝色像素在偶数行交替排列。每个像素只有单一颜色信息,完整的RGB数据需要通过后续的去马赛克(demosaicing)算法重建。
Super-CCD传感器
富士(Fujifilm)开发的Super-CCD传感器对传统矩形像素排列进行了改进。传统CCD的光敏元件呈矩形排列,行与行之间对齐。Super-CCD将像素旋转45°,形成八边形的像素,并采用蜂窝状交错排列。
这种设计有两个潜在优势。首先,八边形像素可以更高效地利用芯片面积,减少像素之间的间隙。其次,交错排列可以在同样的物理尺寸内获得更高的有效分辨率,因为相邻行的像素在水平方向上是半像素偏移的,类似于隔行扫描的效果。
图中对比了传统CCD和Super-CCD的布局:传统方案中每行像素是绿蓝或绿红交替;Super-CCD中像素呈倾斜网格排列,同样遵循绿色像素数量较多的原则。
Bayer图像与RAW文件
RAW图像的外观
直接从传感器读出的原始数据构成了RAW图像文件。在未经去马赛克处理的情况下,RAW图像呈现明显的马赛克图案。
图中展示了一幅蜗牛图像的RAW数据:可以清晰看到红、绿、蓝三色滤光片产生的棋盘格状图案,图像整体呈现出绿色调(因为绿色像素占一半),物体的细节被马赛克纹理覆盖。
RAW文件通常采用12位或14位深度(每像素最多4096或16384个灰度级),远高于最终JPEG图像的8位深度。这种高位深保留了更大的动态范围和更多的后期调整空间。RAW文件通常采用无损压缩或轻度有损压缩存储。
从RAW到最终图像的流程
RAW文件需要经过去马赛克(demosaicing,也称为插值或detramage)处理,才能转换为每个像素都有完整RGB信息的常规彩色图像。处理流程为:RAW文件(12位,无损压缩)经过插值算法,输出为TIFF或JPEG格式(24位,即每通道8位)。
去马赛克算法的任务是根据每个像素位置实际测得的一种颜色值,推断出该位置缺失的另外两种颜色值。最终图像的质量很大程度上取决于去马赛克算法的好坏。
双线性插值去马赛克
算法原理
双线性插值是最简单的去马赛克方法。对于每个像素,其缺失的颜色值由相邻同色像素的平均值来估计。以绿色通道为例,红色像素位置的绿色值由其上下左右四个绿色邻居的平均值给出;蓝色像素位置的绿色值同理。对于红色和蓝色通道,则根据对角线方向的邻居进行插值。
双线性插值的效果与局限
图中对比了原始图像(左)和双线性插值重建的图像(右)。在均匀平滑的区域(如天空),双线性插值效果良好,颜色过渡自然。然而在边缘和高频纹理区域,双线性插值会产生明显的伪影。
主要问题包括边缘模糊和错色。边缘模糊是因为插值本质上是低通滤波,会平滑掉高频细节。错色(false color或color fringing)出现在边缘附近,表现为不应存在的彩色条纹或光晕。图中灯塔周围出现了明显的橙色和黄色伪影,这些颜色在原始场景中并不存在。
错色产生的原因是:在边缘位置,插值时使用的邻近像素可能来自边缘的两侧,它们的颜色可能完全不同。简单的线性平均会将这些不相关的颜色混合,产生虚假的中间色。这种现象在高频纹理区域(如细条纹、织物图案)尤为严重,被称为颜色混叠(color aliasing)。
更先进的去马赛克算法(如基于梯度的方法、频域方法、基于学习的方法等)通过检测边缘方向、考虑通道间相关性等策略来减轻这些伪影,但这超出了本节的讨论范围。
高级去马赛克算法原理
简单的双线性插值忽略了图像的局部结构信息,导致边缘模糊和错色问题。更先进的去马赛克算法通过分析图像的局部梯度信息来指导插值过程,从而在保持边缘锐度的同时减少伪影。
符号定义
设 \Omega_r 表示Bayer阵列中所有红色像素位置的集合,类似地,\Omega_g 和 \Omega_b 分别表示绿色和蓝色像素位置的集合。去马赛克的任务是在 \Omega_g \cup \Omega_b 位置估计红色值,在 \Omega_r \cup \Omega_b 位置估计绿色值,在 \Omega_r \cup \Omega_g 位置估计蓝色值。
基于梯度的插值策略
高级去马赛克算法通常包含以下步骤。首先,使用离散差分算子在每个像素位置估计图像的一阶导数和二阶导数。这些导数值反映了图像在不同方向上的变化剧烈程度,可以用来检测边缘的存在和方向。
其次,对绿色通道进行各向异性插值。在需要插值绿色值的位置(即 \Omega_r \cup \Omega_b),算法不再简单地对所有邻居取平均,而是根据局部梯度信息选择性地加权。核心思想是:优先沿着导数较小的方向进行插值,避免跨越边缘插值。如果某个位置存在水平边缘(垂直方向导数大),则插值时主要使用水平方向的邻居;反之亦然。这可以通过设置阈值或使用导数的递减函数作为权重来实现。
第三步是插值红色和蓝色通道。由于自然图像中颜色通道之间存在高度相关性,红绿比值 r/g 和蓝绿比值 b/g 通常比原始的 r 和 b 值变化更平缓。因此,先插值这些比值,再乘以已经重建好的绿色通道值,可以得到更好的红色和蓝色估计。
最后,可以通过迭代优化来进一步改进结果,反复修正各通道的估计值直到收敛。
Kimmel算法的效果
Kimmel于1999年提出的算法遵循上述原则。图中对比了Kimmel算法(左)和简单双线性插值(右)的结果。在灯塔图像中,双线性插值在建筑物边缘和栅栏处产生了明显的橙色、黄色错色伪影,而Kimmel算法的结果明显更干净,边缘更锐利,错色大大减少。这个对比清楚地展示了考虑局部梯度信息的优势。
基于神经网络的去马赛克
深度学习方法的优势
近年来,基于深度学习的去马赛克方法取得了显著进展。与传统的手工设计算法相比,神经网络可以从大量训练数据中自动学习最优的插值策略,能够处理更复杂的图像模式和边缘情况。
联合去马赛克与去噪
Gharbi等人在2016年提出的深度联合去马赛克与去噪(Deep Joint Demosaicking and Denoising)网络是这一方向的代表性工作。该方法的创新之处在于同时解决去马赛克和去噪两个问题。传统流程中这两个步骤是分开进行的,但它们实际上相互关联:去马赛克需要在相邻像素间进行插值,而噪声会干扰这一过程;去噪需要区分噪声和真实细节,而马赛克图案的存在使这一任务复杂化。联合处理可以让网络学习到两个任务之间的协同关系。
网络架构
图中展示了该网络的架构。输入 M 是带有马赛克图案的原始传感器图像,同时输入噪声水平 \sigma 作为额外信息。网络首先对输入进行下采样得到特征图 F^0,然后通过一系列卷积层提取特征 F^d。中间部分是重复 D-1 次的残差模块 F^D,用于深层特征学习。接着进行上采样得到 F^{D+1},再经过全分辨率卷积层 F^{D+2},最终输出完整的彩色图像 O。
网络中的前向掩码输入(forward masked input)机制确保网络知道哪些位置是原始测量值、哪些位置需要预测。红白相间的图案表示掩码信息,白色位置表示该通道有真实测量值,红色位置表示需要网络填充。
这种端到端的学习方法在标准测试集上的性能显著优于传统算法,特别是在高噪声条件下和复杂纹理区域。深度学习方法已经成为现代相机图像处理流水线中去马赛克模块的主流选择。
计算摄影与高动态范围成像
什么是HDR成像
HDR(High Dynamic Range)即高动态范围成像,属于计算摄影的范畴。所谓动态范围,指的是一个场景中最亮区域与最暗区域之间的亮度比值。自然界中的真实场景往往包含极大的亮度变化,比如一座教堂,阳光直射的部分可能极其明亮,而阴影中的细节则非常暗。人眼可以通过瞳孔调节和视觉适应机制来同时感知这些明暗差异,但相机的传感器做不到这一点。
标准相机的局限
课件以巴黎圣母院的照片为例,展示了用标准相机拍摄高动态范围场景时必然面临的困境。当相机的曝光参数设定为让天空和亮部区域正确曝光时,建筑底部和阴影区域就会变得非常暗,细节丢失严重,甚至出现大面积的纯黑区域。反过来,如果调整曝光让暗部区域获得足够的光线,亮部区域就会过度曝光,出现大片的纯白——这就是所谓的高光溢出或高光烧毁。还有一种折中曝光的情况,此时亮部和暗部都有一定程度的细节损失,建筑正面本应有丰富纹理的区域变得模糊不清。这几张对比照片中,用红色圆圈标注的区域正是细节丢失最明显的地方。
造成这个问题的根本原因在于:相机传感器能够记录的亮度范围是有限的,它有一个最低可记录值和一个最高可记录值。低于最低值的光信号会被淹没在噪声中,高于最高值的光信号则会使传感器饱和。而自然场景的动态范围往往远远超过传感器的容量。
HDR图像的效果与历史渊源
课件接着展示了几组HDR图像的例子,这些图像中无论是明亮的天空、绚烂的晚霞、还是深邃的阴影,所有区域都保留了丰富的细节和色彩信息。不过也需要注意,有些HDR图像会呈现出一种不太自然的视觉效果,色彩过于浓烈、对比过于强烈,看起来有些人工化。这是因为将高动态范围的信息压缩到普通显示设备上时,所使用的色调映射算法如果过于激进,就会产生这种不自然的外观。
虽然数字HDR技术是近几十年的产物,但对高动态范围的追求其实由来已久。课件引用了英国画家 J. Constable 在1823年创作的油画作为例证。在这幅画中,画家通过绘画技巧同时表现了明亮天空中的云层细节和树荫下的暗部层次,本质上就是在做和HDR成像相同的事情——在一个有限动态范围的介质(画布)上,尽可能完整地呈现场景中从亮到暗的全部视觉信息。这个例子来源于 McCann 和 Rizzi 在2012年出版的著作 The Art and Science of HDR Imaging。
核心问题的提出
自然场景的动态范围远大于标准摄影传感器的捕获能力,这直接导致了两个后果:亮部区域饱和烧毁,暗部区域被噪声淹没或完全变黑。与此同时,即使我们成功捕获了完整的高动态范围信息,现有的显示设备(屏幕、投影仪、打印机)同样无法直接呈现如此大的动态范围。因此,整个HDR成像领域要解决的核心问题可以概括为:如何完整地捕获一个场景的全部动态范围,并将其有效地在有限动态范围的设备上进行可视化。后续课程的全部内容都围绕这两个环节展开。
课程结构概览
整个HDR成像课程按以下顺序展开:首先讨论我们到底在测量什么物理量,然后回顾图像采集的基本原理,接着进入HDR图像的创建方法(包括静态场景下的统计问题和动态场景下的运动处理),之后讲解如何将HDR图像显示在普通设备上的色调映射技术,最后介绍一种不生成HDR中间图像而直接融合不同曝光照片的方法。
辐射度量与光度量
在讨论HDR之前,需要先搞清楚相机和人眼到底在测量什么。这里涉及两套平行的度量体系。
辐射度量(Radiometry)度量的是纯粹的物理能量,即电磁辐射的强度,它不考虑人眼对不同波长的敏感程度,对所有波长一视同仁。光度量(Photometry)则不同,它度量的是人眼视觉系统实际感知到的光的量,本质上是在辐射度量的基础上,用人眼的光谱灵敏度曲线进行加权。课件中展示的左侧图是人眼三种视锥细胞(分别对应红、绿、蓝)的光谱响应曲线,横轴是波长(400nm到700nm),纵轴是响应强度。右侧图则对比了人眼在明视觉和暗视觉条件下的总体光谱灵敏度曲线与辐射度量的平坦响应。光度量正是通过这些灵敏度曲线对辐射能量进行加权后得到的结果,所以同样物理功率的绿光在光度量上会比红光或蓝光更亮,因为人眼对绿光最敏感。
光度量的基本概念
亮度与照度
光度量体系中有几个层次分明的概念。Luminance(亮度)描述的是光源发出的光的量。具体来说,光通量(Flux lumineux)是光源向所有方向发出的总光能,单位是流明(lm)。发光强度(Intensité lumineuse)是光源在某个特定方向上、单位立体角内发出的光通量,单位是坎德拉(cd),两者的关系为:
这里 std 代表立体角(steradian)。在此基础上,表面亮度(Luminosité d'une surface)是单位面积上的发光强度,单位为 cd \cdot m^{-2}。
Illuminance(照度)描述的则是接收端的情况,即一个表面上单位面积接收到的光通量,单位是勒克斯(lux),即 lm \cdot m^{-2}。测量照度的仪器叫照度计(lux-mètre),测量亮度的仪器叫亮度计(luminance-mètre)。在辐射度量体系中,与亮度和照度对应的概念分别是 Radiance(辐亮度)和 Irradiance(辐照度),物理含义相同,只是不经过人眼灵敏度曲线的加权。
动态范围的数量级
亮度范围
自然界中的亮度跨度极其巨大。星光场景的亮度大约为 10^{-3} \, cd \cdot m^{-2},阳光下的雪地约为 10^{4} \, cd \cdot m^{-2},而太阳本身的亮度高达 10^{9} \, cd \cdot m^{-2}。从最暗到最亮,跨越了12个数量级。
档位的概念
动态范围通常用 stops 来衡量,每增加一档(1 stop)意味着亮度翻倍,即动态范围等于 2^{stops}。这个单位和摄影中的曝光档位完全一致,每加一档曝光量翻一倍。
人眼与设备的动态范围对比
人眼经过明暗适应后(瞳孔大小变化、视杆视锥切换等),总动态范围可达约25档。但在不进行适应的瞬时状态下,人眼的动态范围只有大约7到15档。一个典型的高动态范围场景通常在15到20档之间,对应约 10^{6} 的亮度比。
相机方面,智能手机传感器通常只有约10档甚至更少,全画幅或中画幅数码相机可达约15档但实际常见约12档,传统黑白胶片约13到14档。显示设备方面,标准LCD屏幕的亮度范围从 0.002 到 100 \, cd \cdot m^{-2},对比度约5000:1,折合约12档,但如果环境不是全黑的,实际动态范围还会更低。HDR显示器的亮度上限可达 5000 \, cd \cdot m^{-2}。OLED屏幕由于能实现更深的黑色,对比度可达1000000:1,约20档,但需要在黑暗环境中观看才能发挥。
典型HDR场景实例
课件给出了两个典型场景。一个是教堂内部,穹顶的天窗射入强烈光线而墙壁和角落极暗,动态范围约17档。另一个来自 McCann 和 Rizzi 的书,展示了一组从室外到车库内部的场景:室外区域白点亮度为 21900 \, cd \cdot m^{-2},黑点为 725 \, cd \cdot m^{-2};车库内部白点仅 16 \, cd \cdot m^{-2},黑点为 1 \, cd \cdot m^{-2};整个场景的总照度范围对比度达到21900:1,折合约14.5档。这些数字直观地说明了为什么单次曝光无法覆盖整个场景。
经典解决策略
面对传感器动态范围不足的问题,经典的解决方案是多图像策略,即对同一场景拍摄多张不同曝光的照片,然后通过算法将它们合成为一张包含完整动态范围信息的HDR图像。后续课程将详细展开这一流程的每个步骤。
多图像策略的基本流程
经典的HDR实现方式是对同一场景拍摄多张不同曝光时间的照片。课件中的示例展示了同一座桥的四张照片,曝光时间分别为 \frac{1}{1000}秒、\frac{1}{250}秒、\frac{1}{125}秒和 \frac{1}{60}秒。短曝光的照片能保留亮部细节但暗部很黑,长曝光的照片能展现暗部细节但亮部过曝。这些照片被送入HDR生成算法,合成出一张每个区域都有正确曝光的最终图像。
历史先驱
这种思路并不是数字时代的发明。早在1850年,摄影师 Gustave LeGray 就使用了一种叫做 ciels rapportés(替换天空)的技术:他分别拍摄正确曝光的天空和正确曝光的地面/海面,然后在暗房中将两张底片合成到同一张照片上。这本质上就是最原始的多曝光HDR融合。胶片时代还有另一种相关技术叫 dodging and burning,即在暗房冲印时对照片的不同区域施加不同的曝光量——对过亮的区域减少曝光(dodge),对过暗的区域增加曝光(burn),手动调节局部亮度来扩展最终照片的视觉动态范围。
当代手机中的HDR
如今HDR已经成为智能手机中的标准功能,各种应用(如课件中展示的 Vivid 应用)都可以一键完成多曝光拍摄和合成。但这并不意味着问题已经完全解决。课件展示了 Samsung S9 和 Apple iPhone 12 拍摄的两张照片,其中出现了明显的鬼影(ghosting)现象:画面中移动的人物在不同曝光帧之间位置发生了变化,合成后就会出现半透明的残影或者轮廓模糊。这是多图像HDR方法面临的核心难题之一——场景中存在运动物体时,简单的多帧合成会产生严重的伪影。
多图像HDR的两条技术路线
给定 I_1, \dots, I_n 这 n 张不同曝光时间拍摄的照片,有两种根本不同的处理思路。
第一种是先创建HDR图像。这条路线的目标是忠实还原场景中每个像素接收到的真实辐照度(irradiance),生成一张通常为32位浮点精度的HDR图像。这张图像存储的是物理意义上的辐照度值,动态范围可以非常大。但由于普通显示设备只能显示8位(256级)图像,所以还需要通过色调映射(tone mapping)将这个高动态范围压缩到可显示的范围内。
第二种是曝光融合(Fusion d'exposition)。这条路线跳过了创建HDR中间图像的步骤,直接从多张不同曝光的输入照片中,选取每张照片中曝光最好的区域,融合生成一张每通道8位的标准图像。
图像采集模型回顾
要理解HDR图像的创建,首先需要回顾数字图像的采集过程。一张数字图像的生成可以用以下模型描述:
这个公式从内到外描述了光信号从场景到最终数字图像的完整链路。s 是场景本身的光子发射,即场景中每个点向相机方向辐射的光信号。h 是系统的点扩散函数(PSF),它代表光学系统(镜头)和传感器积分过程的综合效应,可以分解为 g_{ouv} * g_{flou} * g_{fil} * g_{capt},分别对应光圈衍射、散焦模糊、滤波和传感器响应。h * s 表示场景信号经过光学系统后的卷积结果,即到达传感器平面上的连续辐照度分布。
\Pi_\Gamma = \sum_{\gamma \in \Gamma} \delta_\gamma 是采样算子,其中 \Gamma 是传感器上像素位置的集合,\delta_\gamma 是在像素位置 \gamma 处的狄拉克函数。这个算子的作用是将连续的辐照度信号离散化为像素值,也就是空间采样过程。n 是噪声,它可能依赖于信号本身的强度(例如光子散粒噪声与信号成正比关系)。最外层的 Q 是量化算子,将连续的模拟信号转换为离散的数字值。
经过这整个流程,最终得到的就是 RAW 图像。这里需要特别注意一点:RAW 图像对辐照度(illuminance)的响应是线性的,即像素值与到达传感器的光能量成正比。这个线性特性是后续HDR合成算法的基础。
颜色采集与后处理流水线
Bayer滤镜与去马赛克
大多数数码相机的传感器本身只能感知光的强度,无法区分颜色。为了获取彩色图像,经典的方案是在传感器前方覆盖一层 Bayer 滤镜阵列(也叫色彩滤波阵列,CFA)。这层滤镜由红、绿、蓝三种微小的彩色滤光片按照固定模式排列而成,每个像素只接收一种颜色的光。Bayer 阵列中绿色滤光片的数量是红色和蓝色的两倍,因为人眼对绿色最敏感,分配更多的绿色像素可以获得更好的亮度分辨率。
由于每个像素只记录了一种颜色,RAW 图像实际上是一幅马赛克图案。要得到每个像素都有完整 RGB 三个通道值的彩色图像,就需要通过去马赛克(démosaïcage / demosaicing)算法,根据相邻像素的颜色信息插值补全缺失的通道。经过去马赛克之后,图像从传感器上的单通道马赛克变为 I \in \mathbb{R}^{3, N, N} 的三通道彩色图像。
从RAW到最终图像的处理
去马赛克之后,图像还需要经过几个处理步骤才能成为我们日常看到的照片。第一步是白平衡校正和色彩空间转换,用一个 3 \times 3 的矩阵 A 对图像进行线性变换:
白平衡校正时,A 通常是一个对角矩阵,它对三个颜色通道分别乘以不同的系数,以补偿不同光源色温对颜色的影响。如果同时需要从相机原生色彩空间转换到标准色彩空间(如 sRGB),A 就会是一个完整的 3 \times 3 矩阵。
第二步是应用相机的响应曲线(courbe de réponse),即将线性的信号 A \cdot I 通过一个非线性函数 g 映射为:
这个非线性映射本质上就是一种色调映射(tone mapping),它的作用是将传感器记录的线性光信号转换为符合人眼感知特性的亮度值。因为人眼对亮度的感知接近对数关系,如果直接显示线性数据,图像会看起来过暗且对比不足。这个函数 g 通常会压缩高光、提升暗部,使图像看起来自然。
第三步是 JPEG 压缩,将图像量化为8位并进行有损压缩以减小文件大小。这里需要注意:经过非线性响应曲线处理后的 JPEG 图像,其像素值与场景辐照度之间不再是线性关系。这一点对后续的HDR处理至关重要——如果要从 JPEG 图像反推场景的真实辐照度,就必须先反转这个非线性函数。
拍摄参数回顾
控制相机进光量的三个主要参数是曝光时间、光圈和感光度(ISO)。
曝光时间
曝光时间 \tau 决定了传感器接收光线的持续时间。它可以用来补偿光线不足或光圈较小的情况——曝光时间越长,传感器累积的光子越多,图像越亮。但对于运动中的物体,过长的曝光时间会导致运动模糊,因为物体在曝光期间改变了位置,其光信号被涂抹到了多个像素上。对于 RAW 图像而言,像素值与 \tau 成正比关系:曝光时间加倍,像素值也加倍。这个线性关系是HDR合成的数学基础,后面会反复用到。
光圈
光圈由镜头内的可调叶片机构控制,其大小用光圈数 N 表示,定义为焦距与光圈直径之比:
其中 f 是镜头焦距,D 是光圈的物理直径。N 值越大意味着光圈越小(因为 D 在分母上)。光圈数通常按照几何级数排列(如 f/1.8, f/2.8, f/4, f/5.6, f/8, f/11),相邻两档之间的进光面积相差约一倍。
当 N 增大(光圈缩小)时,会同时产生三个效果:景深增加,意味着更大范围内的物体都能保持清晰;衍射效应增强,因为光通过更小的孔径时衍射更明显,极端情况下反而会降低整体锐度;暗角(vignetting)效应减轻,因为小光圈下镜头边缘的光线遮挡比例降低。
HDR拍摄时参数的选择
在拍摄多张照片用于HDR合成时,理论上可以通过改变曝光时间、光圈或ISO中的任何一个来获得不同亮度的照片。但改变光圈会同时改变景深,导致不同照片中模糊和清晰的区域不一致,这在后续合成时很难处理。因此,实际操作中优先选择改变曝光时间 \tau 来获取不同曝光的照片序列。另一种可行的方式是改变ISO感光度,但这种方法不在本课程的讨论范围内。
像素观测模型
RAW图像与非线性响应
在忽略量化误差的情况下,对于 RAW 图像,一个像素的观测值可以写为:
其中 R 是该像素处的场景辐照度,\tau 是曝光时间,C 是一个与传感器增益(感光度)有关的常数。这个关系是线性的,直接反映了传感器累积光子的物理过程:辐照度越大、曝光越久,累积的电荷就越多,像素值就越大。
如果使用的是经过相机内部处理的最终图像(如 JPEG),而非 RAW 图像,那么观测模型变为:
这里 f 是相机的响应函数,它是一个非线性函数,包含了白平衡、色调曲线等所有相机内部处理。f 的参数含义分别为:\tau 是曝光时间,R 是辐照度,C 是增益常数。要从这样的图像反推辐照度 R,就必须先估计 f 的逆函数 f^{-1},可以通过迭代方法或最小二乘法来实现。但为了简化问题,本课程后续假设我们直接使用 RAW 图像,即采用线性模型 z = C \cdot \tau \cdot R。
HDR图像创建的数学框架
问题设定
假设我们拍摄了 N 张照片 I_1, \dots, I_N,对应的已知曝光时间为 \tau_1, \dots, \tau_N。同时假设所有图像已经完美对齐(相机固定在三脚架上或者已经做了运动补偿),场景是静态的(没有运动物体),且光照条件没有变化(比如没有云层飘过导致光线改变)。
在这些假设下,对于图像中的任意一个像素位置,我们拥有的数据是 z_1, \dots, z_N,分别对应 N 个不同曝光时间下的观测值。我们的目标是从这些观测中估计出该像素处的真实辐照度 R(差一个常数倍),R 的物理含义是单位时间内到达该像素的平均光子数。
单帧辐照度估计与加权平均
每一帧图像 z_j 是 g \cdot R \cdot \tau_j 的含噪版本,其中 g 是传感器的增益。从单帧 z_j 可以得到辐照度的一个粗略估计 \hat{z}_j = z_j / (g \cdot \tau_j),但这个估计受噪声影响。为了获得更准确的辐照度估计,自然的做法是对来自不同帧的估计进行加权平均:
其中权重满足 \sum_j w(z_j) = 1。不同帧对同一像素的估计质量是不同的:如果某帧中该像素接近饱和或者接近纯黑(信噪比很低),那它提供的辐照度估计就不可靠,应该给予较低的权重;反之,曝光适中的帧应该获得较高的权重。
关于权重 w 的选择,文献中存在大量不同的方案:Mann 和 Picard(1995)以及 Debevec 和 Malik(1997)根据响应函数 g 来设计权重;Mitsunaga 和 Nayar(1999)根据信噪比(SNR)来设计权重;Robertson 等(1999)、Kirk 和 Andersen(2006)、Granados 等(2010)、Hasinoff 等(2010)则基于方差准则来设计权重。寻找最优权重本质上是一个统计估计问题(Aguerrebere 等,2014)。
传感器噪声模型
噪声来源
要严格推导最优权重,需要先了解传感器中噪声的来源。课件展示了传感器像素的工作流程:光子穿过硅氧化层到达光敏区域,激发出光电子,这些电子在像素中累积电荷,最后通过电荷-电压转换电路读出。在这条链路上,噪声出现在多个环节。
光子散粒噪声(shot noise)是最主要的噪声源,它源自光子到达传感器的随机性,服从泊松分布。暗电流噪声(dark current)是热激发产生的电子,当曝光时间较短(小于1秒)时可以忽略不计。读出噪声(read noise)包括复位噪声和热噪声,它是固定的加性高斯噪声,不依赖于信号强度。此外还有量化噪声,但通常很小。
高斯近似
泊松分布有一个性质:当参数 \lambda 足够大时(一般 \lambda > 20 即可),泊松分布 \mathcal{P}(\lambda) 可以用均值和方差都等于 \lambda 的正态分布 \mathcal{N}(\lambda, \lambda) 来近似。课件中的三幅图分别展示了 \lambda = 9、\lambda = 25 和 \lambda = 100 时泊松分布(蓝色)和对应正态近似(红色)的对比,可以看到 \lambda 越大近似越好。
统计模型的建立
基于上述噪声分析,对于某个固定像素位置,N 张图像的观测值 Z_1, \dots, Z_N 是相互独立的随机变量,但它们不是同分布的(因为曝光时间不同)。每个观测的分布可以写为:
第一项是经过增益 g 放大的泊松散粒噪声,第二项是高斯读出噪声。利用泊松分布的高斯近似,整个模型可以简化为:
这里 g 是传感器增益,\mu_R 和 \sigma_R 是读出噪声的均值和标准差。均值 g R \tau_k + \mu_R 由信号部分和读出噪声偏移两部分组成。方差 g^2 R \tau_k + \sigma_R^2 也由两部分组成:g^2 R \tau_k 来自散粒噪声(注意方差与信号成正比,这是泊松噪声的特征),\sigma_R^2 来自读出噪声。这意味着亮度越高的像素,噪声的绝对值也越大,但信噪比反而更高(因为信号增长快于噪声)。
在这个模型下,辐照度的估计器形式为:
每一项 \frac{z_j - \mu_R}{g \tau_j} 是先减去读出噪声的偏移量 \mu_R,再除以增益和曝光时间,得到对辐照度 R 的单帧无偏估计。最终目标是确定最优的权重 w_j,使得 \hat{R} 的估计误差最小,同时分析这个估计器能达到的性能极限。
Cramér-Rao下界与最优估计
性能的理论极限
在前面建立的高斯噪声模型下,Z_1, \dots, Z_N 是独立随机变量,且:
对于任何无偏估计器(即期望值等于真实 R 的估计器),其方差存在一个不可逾越的下界,这就是 Cramér-Rao 下界(CRLB)。CRLB 的倒数由 Fisher 信息量给出:
这个公式的含义是将每一帧的信息贡献累加起来。对于第 j 帧,分子中 g^2 \tau_j^2 反映了该帧信号强度对 R 的灵敏度——曝光时间 \tau_j 越长、增益 g 越大,信号中包含的关于 R 的信息越多。分母中 (g^2 R \tau_j + \sigma_R^2)^2 是该帧方差的平方,方差越大意味着噪声越强,信息被稀释得越多。最后的因子 (2(g^2 R \tau_j + \sigma_R^2) + g^2) 来自于高斯分布中方差也依赖于参数 R 这一事实——在普通的固定方差高斯模型中,Fisher 信息只来自均值对参数的导数,但这里方差本身也随 R 变化,所以提供了额外的信息。
有效估计器不存在
在这个模型中,可以证明不存在有效估计器,即没有任何无偏估计器能够恰好达到 CRLB。这是因为模型的方差依赖于待估参数 R,导致模型不属于指数族,从而有效估计器不存在。不过,实验表明最大似然估计器(MLE)的性能非常接近理论极限:MLE 的方差几乎紧贴 CRLB,同时偏差也很小。
MLE的实用近似
MLE 没有解析的闭式解,需要通过迭代优化来求解。但在实际中,可以用以下加权最小二乘公式作为良好的近似:
其中:
\mathbf{x}_j 是第 j 帧对辐照度的单帧估计(减去读出噪声偏移后除以增益和曝光时间),\sigma_j^2 是该估计的方差。这个公式的结构就是经典的方差倒数加权平均:每一帧的估计按照其方差的倒数(即精度)来加权,方差越小的帧获得越大的权重。这符合直觉——越可靠的观测应该贡献越多的信息。\sigma_j^2 的表达式中,分子 g(z_j - \mu_R) + \sigma_R^2 就是该帧总方差在原始信号域的值(散粒噪声加读出噪声),分母 (g \tau_j)^2 将其归一化到辐照度估计的尺度上。
实验验证
课件中展示了 Aguerrebere 等人(2014)的实验结果,图中横轴是辐照度,纵轴是方差(双对数坐标),每个像素最多使用4帧。图中比较了多种方法(MLE/Granados、Debevec、Kirk、Mitsunaga、Bayesian、Robertson、Poisson)的方差曲线与 CRLB(黑色虚线)。可以看到 MLE 的方差曲线最接近 CRLB,而 Mann-Picard 和 Mitsunaga-Nayar 等方法在某些辐照度范围内会显著偏离下界,意味着这些方法没有充分利用数据中的信息。
HDR生成示例与方法对比
课件通过一个茶盒的场景展示了不同方法生成的HDR图像(经过对数色调映射后显示)。地面真值图像(Vérité terrain)是参考标准。MLE 方法生成的结果与地面真值几乎一致,细节清晰、噪声很低。Mann-Picard 方法的结果在暗部区域(图像左侧条纹区域)出现了明显的噪声和伪影,这是因为该方法的权重设计没有充分考虑噪声模型,在低信噪比区域给出了不合理的权重。Mitsunaga-Nayar 方法的效果更差,暗部区域出现了严重的噪声放大和色彩偏移,大面积区域变为蓝色伪影,说明该方法的权重方案在极端条件下完全失效。
动态场景下的HDR
前面的讨论都基于一个关键假设:场景是完全静态的。当场景中存在运动物体时(如行人、车辆、飘动的树叶),不同曝光帧之间同一像素位置对应的场景内容会发生变化,直接使用前述的加权平均方法就会产生鬼影等严重伪影。动态场景的HDR合成是一个独立的、更困难的问题。
动态场景HDR的三大难题
当我们离开理想的静态场景假设,进入真实的手持拍摄场景时,会同时面临三个层层叠加的困难。
第一个问题是噪声。这个问题在静态场景中同样存在,前面已经通过统计模型和最优加权进行了处理。但在动态场景中,由于后续处理步骤(如图像对齐)的误差也会引入额外的不确定性,噪声问题会变得更加复杂。
第二个问题是相机运动。手持拍摄时,相机在不同帧之间会发生位移和旋转,导致不同曝光帧之间的图像内容在空间上发生了偏移。如果不进行校正,直接对这些未对齐的帧做加权平均,结果会是模糊的重影。
第三个问题是场景中物体的运动。即使相机完全固定,场景中的行人、车辆、飘动的树叶等运动物体也会在不同帧之间改变位置。这种运动是局部的、非刚性的,无法通过简单的全局几何变换来补偿。
图像配准
针对相机运动,标准的解决方案是图像配准(recalage/registration)。具体流程分三步:首先用特征提取算法(如 SIFT)在每张图像中检测关键点并计算其描述子;然后在不同帧之间进行关键点匹配,找到对应的点对;最后用鲁棒估计算法(典型的如 RANSAC)从匹配点对中估计出帧间的几何变换。这个几何变换可以是仿射变换(affine transformation,6个参数,适用于平面场景或远距离场景)或者单应变换(homographic transformation,8个参数,适用于相机纯旋转或平面场景)。完成配准后,将所有帧变换到同一个坐标系下,然后再进行HDR合成,例如 Tomaszewska-Mantiuk(2007)的方法。
配准的局限性
然而,仅靠配准并不能解决所有问题。当场景不是平面的(有三维深度变化)且相机发生了平移(不是纯旋转),单应变换就不能准确描述帧间的对应关系,会出现视差导致的配准误差。此外,场景中运动物体的位移无法用全局的几何变换来描述。光照变化(如云层遮挡太阳导致的亮度突变)也会使得不同帧之间的亮度关系不再满足简单的曝光时间比例模型。
课件展示了一个同时存在相机运动和物体运动的例子:四张不同曝光的帧中,不仅相机视角有变化,场景中的物体位置也不同。直接合成后产生了严重的鬼影伪影(ghosting artifacts),画面变得模糊且出现重影。
处理动态场景的三种策略
面对动态场景,文献中提出了三类不同思路的方法。
第一种是运动补偿(Compensation du mouvement),代表工作如 Zimmer 等(2011)。这种方法通过估计帧间的光流(optical flow)来逐像素地建立对应关系,然后按照光流场对图像进行变形对齐。光流能够描述任意复杂的运动场,理论上可以处理局部运动。但问题在于,不同曝光帧之间的亮度差异很大(这正是HDR拍摄的本质),而光流算法通常假设亮度恒定,因此在HDR场景中光流估计本身就是一个病态问题(ill-posed problem),容易出错。
第二种是运动检测(Détection du mouvement),代表工作如 Jacobs 等(2008)。思路是先对图像进行全局配准,然后检测哪些像素属于运动区域,在最终的HDR合成中直接忽略这些运动像素。被忽略的像素只使用参考帧的信息。这种方法的局限在于,运动区域的像素缺少多帧融合带来的动态范围扩展和降噪优势。
第三种是基于图像块(patch)的方法,代表工作如 Aguerrebere 等(2013)。这种方法不依赖全局配准或光流,而是在局部层面上操作:只融合那些具有相似邻域结构的像素。
基于图像块的HDR创建与同步降噪
整体流程
Aguerrebere 等(2013)提出的方法将HDR合成和降噪两个步骤统一在一个框架中完成。整个流程如下:
首先,输入是 N 张不同曝光时间 \tau_1, \dots, \tau_N 的 RAW 图像。从中选择一张作为参考图像(reference image)。参考图像的选择决定了最终HDR图像的几何结构和视角。
然后,对于参考图像中的每一个像素位置,以该像素为中心取出一个小图像块(patch)。同时,从所有 N 张输入图像中也提取出大量的候选图像块。
接下来是关键的筛选步骤:计算参考图像中当前patch与所有候选patch之间的距离。这个距离衡量的是两个patch在结构和内容上的相似程度。如果某个候选patch与参考patch的距离大于某个阈值,说明它们对应的场景内容不同(可能是因为运动物体改变了位置,或者配准误差导致的不对应),这些patch会被直接丢弃(Discarded Patches)。只有距离足够小的候选patch才会被保留(Selected Patches),它们被认为是与参考patch描述了相同场景内容的可靠观测。
最后,利用这些被选中的相似patch,按照前面介绍的统计方法进行辐照度估计(Irradiance estimation)。由于选中的patch来自不同曝光时间的帧,它们共同提供了不同亮度范围的信息,从而实现了动态范围的扩展。同时,多个相似patch的融合本身就具有降噪效果(类似于非局部均值降噪的原理),因此HDR合成和降噪是同时完成的。
方法优势
这种基于patch的方法有几个显著的优点。首先,它不需要全局配准(虽然可以用全局配准来加速搜索过程,但不是必须的),因为patch匹配天然地在局部范围内寻找对应关系。其次,它能自动处理局部运动——如果某帧中某个区域有运动物体,那么该区域的patch会因为与参考patch不相似而被丢弃,不会引入鬼影。第三,由于比较的是patch(一个小区域内的多个像素)而不是单个像素,对噪声的敏感度大大降低。第四,它能够利用图像内部和图像之间的冗余信息(inter and intra-image redundancy),即不仅融合不同帧中相似的patch,也融合同一帧内不同位置但结构相似的patch。最终得到的结果既扩展了动态范围,又实现了有效的降噪。
辐照度估计
在选出了相似patch之后,辐照度的估计方法与静态场景下完全相同。对于参考图像中某个像素,现在拥有的观测不仅来自同一位置的不同曝光帧,还来自所有被选中的相似patch中对应位置的像素。这些观测虽然来自图像中不同的空间位置,但因为它们的邻域结构相似,所以可以认为它们观测的是相同(或非常接近)的辐照度值。将这些观测用前面介绍的最优加权公式进行融合,就得到了降噪后的HDR辐照度估计。
辐照度估计的具体公式
选出相似像素后,假设每个观测 Z 服从高斯分布 Z \sim \mathcal{N}(\mu(R), \sigma^2(R)),其中均值和方差都依赖于辐照度 R。辐照度的MLE估计按照与静态场景相同的加权平均形式计算:
其中权重为:
这里 \{x_h\}_{h=1,\dots,H} 是根据patch距离 d(p,q) 经过阈值筛选后保留的所有相似像素的集合。每个 x_h 对应一个来自不同帧或不同空间位置的辐照度单帧估计,\tau_h 是该观测对应的曝光时间。权重的含义与之前一致:方差越小(即该观测越可靠)的像素获得越大的权重。分子 g^2 \tau_h^2 体现了长曝光帧携带更多信号的优势,分母 g^2 \tau_h x_h + \sigma_R^2 是该观测的方差估计,其中 g^2 \tau_h x_h 是散粒噪声贡献,\sigma_R^2 是读出噪声贡献。
参考图像的选择策略
在所有输入帧 \tau_1, \dots, \tau_N 中需要选择一张作为参考图像。选择的准则是:没有欠曝像素且饱和像素数量最少的那一帧。这通常意味着选择一个中等偏长曝光的帧——太短的帧暗部欠曝严重,太长的帧亮部饱和严重。
即使选出了最优的参考帧,仍然不可避免地存在一些饱和区域(高光溢出的纯白区域)。这些区域的信息在参考帧中已经彻底丢失,无法通过加权平均来恢复(虽然其他短曝光帧可能保留了这些区域的信息,但基于patch的方法是以参考帧为基准的,饱和区域的patch不包含有效的结构信息,无法进行可靠的匹配)。处理这些饱和区域的办法是使用图像修复(inpainting)技术,即利用周围非饱和区域的信息来填充这些缺失区域。
实验结果展示
场景一:城市河岸
输入为四张不同曝光的手持拍摄照片,场景中包含行人和自行车等运动物体。参考图像中可以看到天空和建筑亮面存在过曝,暗部如桥洞下方细节不足。经过基于patch的HDR处理后,天空恢复了细节和色彩(蓝天白云清晰可见),暗部的桥洞和水面也获得了更多细节,噪声明显减少。在包含运动物体的区域(如骑自行车的人、行走的路人),没有出现鬼影,运动物体保持了清晰的轮廓。局部对比中,参考帧的暗部区域噪声较大、细节模糊,而HDR结果则明显更干净、更锐利。
场景二:城市街道
四张输入照片拍摄的是一条城市道路,场景中有汽车和行人。参考图像中建筑立面阳光直射区域接近饱和,而阴影中的车辆和树木暗部细节不足。HDR结果中,建筑亮面的纹理得到保留,阴影区域的车辆轮廓和细节更加清晰,整体动态范围明显扩大,同时没有可见的鬼影伪影。
单次拍摄的HDR方法
以上讨论的所有方法都依赖于多张不同曝光的输入图像。课件最后引出了另一个方向:能否仅从一次拍摄中就获得HDR效果(single shot HDR)。
单次拍摄HDR
作为多图像方法的替代方案,可以在传感器层面实现空间上可变的曝光(spatially varying exposures)。基本思想是在Bayer滤镜阵列上叠加不同的中性密度滤光片,使得相邻像素接收不同比例的光量。这样,一次拍摄就相当于同时获得了 N 种不同曝光。相关工作包括 Nayar 和 Mitsunaga(2000)以及 Aguerrebere 等(2014, 2017)。这种方法的优势在于完全避免了多帧之间的运动问题,但代价是每种曝光的空间分辨率降低,需要通过插值来恢复全分辨率图像。
色调映射
问题的本质
到目前为止我们已经知道如何从多张照片创建一张HDR图像,这张图像可能包含15到20档的动态范围。但常规LCD显示器只有不到12档的动态范围。如何在有限动态范围的设备上显示HDR图像,就是色调映射(tone mapping)要解决的问题。本质上,色调映射是一种对比度压缩操作——必须将大范围的亮度值映射到小范围内,同时尽可能保留人眼关注的视觉信息。
全局色调映射
基本原理
全局色调映射的做法是对图像 I 施加一个逐像素的单调递增函数 h,得到 h \circ I。这里 h 是一个对比度变换函数,它对图像中的每个像素施加相同的映射,不考虑像素的空间位置和邻域。典型的全局色调映射函数包括 gamma 变换(\gamma < 1 时压缩高光、提升暗部)和对数变换等,例如 Tumblin-Rushmeier(1993)的工作。
实例分析
课件以一个动态范围17档的教堂内部HDR场景为例,展示了全局色调映射的效果。首先观察HDR图像的直方图:当像素值被归一化到 [0, 1] 区间时,直方图显示绝大多数像素集中在极低的值附近(接近0),只有极少数像素拥有很高的值。如果查看原始值域(0到570)的直方图,分布同样极度偏斜。取对数后的直方图则分布较为均匀,说明对数尺度能更好地反映亮度的感知分布。
如果直接将HDR图像的值线性映射到0到最大值的范围(线性色调映射 0-max),结果几乎是全黑的——因为少数极亮的像素(如穹顶天窗)占据了整个显示范围,其余绝大多数像素被压缩到了接近0的极暗区域。
将值线性映射到 [0, 1] 区间(去掉极端值后)的效果略好,穹顶的亮光和一些高光区域可见,但大部分暗部细节仍然丢失严重,整体图像偏暗。
使用对数映射后,效果有了质的提升:暗部的建筑结构、拱门、雕塑等细节都清晰可见,同时亮部区域(天窗、彩色玻璃)也没有完全烧白。这是因为对数函数的特性是对低值区域扩展较大、对高值区域压缩较大,恰好符合人眼对亮度的感知模式。
局部色调映射
全局方法的局限与局部方法的动机
全局色调映射对所有像素施加相同的变换,当动态范围极大时,即使用对数映射也难以同时保留所有区域的对比度细节。局部色调映射的思路是在更大程度上压缩动态范围的同时保留局部对比度。
课件用 Adelson 的棋盘阴影错觉来说明局部对比度的概念:标记为 A 和 B 的两个方格在物理亮度上完全相同,但由于它们各自周围环境的亮度不同(A 被亮方格包围,B 处于阴影中被暗方格包围),人眼感知它们的亮度截然不同。这说明人的视觉系统关注的是局部对比度(一个区域相对于其邻域的亮暗关系),而非绝对亮度。局部色调映射正是利用了这一点——它可以大幅压缩全局的绝对亮度范围,只要保持每个局部区域内部的对比度关系不变,人眼就能感知到丰富的细节。
基底-细节分解方法
核心思想
Durand 和 Dorsey(2002)提出的基底-细节分解(base-detail decomposition)是局部色调映射中最经典的框架。其原理是将图像分解为两个分量:一个是只包含大尺度亮度变化的基底层(base layer),可以理解为图像的卡通版本;另一个是包含纹理和细节信息的细节层(detail layer)。色调映射只压缩基底层的动态范围,而细节层保持不变,最后将压缩后的基底层与原始的细节层重新组合。这样就实现了在大幅压缩全局动态范围的同时完整保留局部细节和纹理。
基底层的提取:双边滤波器
设 B = F(I) 为对图像施加一个保边滤波后的结果,色调映射后的图像为:
其中 k 是衰减因子(k < 1),它只作用于基底层 F(I),将其压缩。(I - F(I)) 是细节层,保持原样不变。
这里的关键在于滤波器 F 必须是保边的——它需要平滑掉大尺度的亮度渐变,但不能模糊掉锐利的边缘。如果用普通的高斯模糊,边缘会被平滑掉,细节层中就会出现边缘的残影,重组后会产生光晕伪影。因此使用双边滤波器(bilateral filter),所有计算在对数亮度域中进行:
归一化系数为:
双边滤波器包含两个高斯核的乘积。g_{\sigma_1}(x - y) 是空间域的高斯核,确保只有空间上邻近的像素参与平均,\sigma_1 控制空间平滑的范围。g_{\sigma_2}(I(x) - I(y)) 是值域的高斯核,它根据像素值的差异来加权——当两个像素的亮度值很接近时权重大,当亮度差异超过 \sigma_2 时权重迅速衰减到接近零。这样,跨越边缘的像素(亮度差异大)不会被平均在一起,边缘就得以保留。
在实际应用中,除了双边滤波器,还有很多有效的替代方案可以实现保边平滑,包括变分方法中的卡通-纹理分解和 TV-L1 分解等。
完整算法流程
对于一张彩色HDR图像 I = (R, G, B),算法按以下步骤执行:
首先计算亮度通道 L = a \cdot R + b \cdot G + c \cdot B,其中 a, b, c 是标准的亮度权重系数。色调映射只在亮度通道上进行,色彩信息单独处理。
然后对亮度的对数值应用双边滤波,得到基底层 L_{\text{base}} = F(\log L)。取对数是因为人眼对亮度的感知近似对数关系,在对数域操作更符合感知特性。
细节层通过简单的相减得到:L_{\text{detail}} = \log(L) - L_{\text{base}}。
输出亮度为 L_{\text{out}} = k \cdot L_{\text{base}} + L_{\text{detail}} - C,其中 k < 1 是压缩基底层的衰减因子,C 是归一化常数,确保输出值落在可显示范围内。
最后恢复彩色信息:R_{\text{out}} = (R / L) \cdot \exp(L_{\text{out}}),G 和 B 通道同理处理。这里 R/L 提取的是原始图像中红色通道相对于亮度的比例(即色度信息),然后乘以新的亮度值 \exp(L_{\text{out}})。最后可能需要对极端值进行截断(saturation)处理。
分解效果
课件中展示了 Durand-Dorsey(2002)对一张树林图像的分解结果:基底层(Base)是灰度的平滑版本,只保留了大的明暗分布;细节层(Detail)包含了树皮纹理和枝叶的精细结构;色彩层(Color)保存了色度信息。
对教堂场景应用这种方法,基底-细节色调映射的彩色结果保留了穹顶、拱门、墙面的丰富细节,暗部和亮部都有很好的可见性。对比之下,旁边的黑白版本展示了亮度通道的处理效果。与之前的对数全局映射相比,基底-细节方法在暗部区域呈现了更多细节,局部对比度明显更强。
梯度域色调映射
原理
Fattal 等(2002)提出了另一种局部色调映射思路,直接在梯度域操作。算法分三步:首先计算图像的梯度场 \nabla I;然后衰减梯度的幅值(大梯度被压缩更多,小梯度基本保持),从而减小了全局动态范围但保留了局部细节对比度;最后通过求解泊松方程(Poisson equation)从修改后的梯度场重建出图像。这个过程在多尺度框架(高斯金字塔)中进行,以处理不同尺度的亮度变化。
各方法视觉对比
课件将教堂场景的多种色调映射结果并列展示。梯度域方法的结果色彩饱满,暗部细节非常丰富,整体呈现出温暖的金色调。基底-细节方法的结果同样细节丰富,但色调处理略有不同,穹顶和彩色玻璃的表现各有特点。两种局部方法都明显优于全局对数映射,能够在保持自然观感的同时展现出HDR图像中从最亮到最暗区域的全部信息。
曝光融合
基本思路
Mertens 等(2007)提出的曝光融合方法跳过了创建HDR中间图像和色调映射两个步骤,直接从多张不同曝光的最终图像(如JPEG,8位/通道)I_1, \dots, I_N(已对齐)中,通过加权融合生成一张可直接显示的8位图像。对于每个像素位置 x,融合结果为:
权重 W_i(x) 衡量的是第 i 张图像在像素 x 处的质量,由三个指标的乘积决定:
指数 \alpha_c, \alpha_e, \alpha_s 控制各指标的相对影响力。三个质量指标分别是:
对比度指标 C_i(x) = \Delta I_i(x),即拉普拉斯算子的绝对值,衡量该像素处的局部对比度。对比度高意味着该区域包含清晰的纹理和边缘信息,应该被优先选用。
曝光指标 E_i(x) = \exp\left(-\frac{(I(x) - 0.5)^2}{2\sigma^2}\right),这是一个以0.5为中心的高斯函数。像素值越接近0.5(即中间灰度,曝光最适中),这个值越大;越接近0(严重欠曝)或1(严重过曝),这个值越接近零。这保证了饱和或欠曝的像素获得很低的权重。
饱和度指标 S_i(x) = \text{std}(R(x), G(x), B(x)),即该像素三个颜色通道值的标准差。标准差大意味着颜色饱和度高、色彩丰富,这样的像素更有视觉吸引力,应获得更高的权重。
朴素融合的问题
如果直接按上述公式对原始图像进行像素级加权融合,会产生两个问题:在平坦区域(所有帧的权重都很小或差异不大时)容易出现噪声;在不同帧之间权重发生急剧变化的边界处会出现不自然的突变,表现为明显的接缝和过渡伪影。课件展示了朴素融合(Naive)和简单模糊权重后融合(Blurred)的结果,前者有明显的噪声和接缝,后者虽然接缝减轻但整体变模糊了。
多尺度融合
解决方案是将融合操作放到多尺度框架中进行。具体做法是:
其中 \mathcal{L}_l 是拉普拉斯金字塔在第 l 层的表示,\mathcal{G}_l 是高斯金字塔在第 l 层的表示,l 遍历所有尺度。每张输入图像 I_i 被分解为拉普拉斯金字塔(保存各尺度的细节信息),对应的权重图 W_i 被分解为高斯金字塔(平滑的权重)。在每个尺度上,用平滑后的权重对该尺度的细节进行加权融合。最后从融合后的拉普拉斯金字塔重建出最终图像。这种多尺度融合确保了大尺度的亮度过渡平滑自然,同时小尺度的纹理细节得以保留,避免了接缝和噪声问题。
课件展示了室内场景和威尼斯运河场景的多尺度融合结果,过渡自然、细节丰富、没有明显的伪影。
动态场景的曝光融合
与HDR创建一样,曝光融合在面对动态场景时也会遇到同样的运动问题——不同帧中运动物体位置不一致会导致鬼影。解决思路同样是采用非局部方法:只融合具有相似patch邻域的像素(Ocampo 等,2016)。课件对比展示了经典曝光融合(b)和非局部曝光融合NLEF(a)的结果,经典方法中运动物体产生了明显的重影和色彩异常,而非局部方法则有效避免了这些伪影。
非局部融合的结果在多个场景中都表现出色:无论是室内还是室外,运动物体(行人、自行车)的处理都很干净,同时动态范围的扩展效果依然良好。
从单张LDR图像生成HDR
深度学习方法
Eilertsen 等(2017)提出了一种用深度学习直接从单张低动态范围(LDR)图像预测HDR图像的方法。输入是一张普通的8位LDR照片,网络需要恢复已经丢失的信息——尤其是过曝区域中被截断的高光细节。网络采用编码器-解码器架构,编码器(LDR encoder)逐步提取特征并降低空间分辨率,解码器(HDR decoder)逐步恢复空间分辨率并预测HDR值。两者之间通过跳跃连接(skip connections)传递多尺度信息,并包含域变换层(domain transformation)来处理LDR到HDR之间的非线性映射。
课件展示了多个对比结果:输入的LDR图像中过曝区域(如路灯、建筑高光)是纯白的,网络的重建结果在这些区域恢复出了合理的细节和亮度层次,与真实的HDR地面真值(ground truth)比较接近。但这本质上是一个学习到的幻觉过程——网络根据训练数据中学到的先验知识来猜测丢失的信息,并不能保证物理准确性。
单张LDR到HDR的更多结果
Eilertsen 等(2017)的方法在多个夜景和室内场景上展示了更多对比结果。每组对比包含三行:输入的LDR图像(a)、网络重建的HDR图像(b)和真实的HDR地面真值(c)。在路灯、灯笼、建筑高光等过曝区域,网络成功恢复出了光源的形状和亮度渐变,与地面真值在视觉上非常接近。但在某些细节上仍存在差异,尤其是当过曝区域面积较大、完全丢失了所有纹理信息时,网络只能基于上下文推测内容。
深度色调映射
GAN方法
Rana 等(2019)提出了用生成对抗网络(GAN)来学习色调映射操作,称为 Deep Tone Mapping。网络架构包括两个部分:生成器(Generator)采用自编码器结构,以HDR图像为输入,输出色调映射后的LDR图像;判别器(Discriminator)采用 PatchGAN 架构,其输入是LDR图像和HDR图像的拼接(concatenation),用于判断色调映射的结果是否自然逼真。生成器内部使用残差块(Residual Blocks)来学习复杂的非线性映射。
视觉对比
课件展示了三个场景的对比结果。每个场景的第一列是线性映射的HDR图像(HDR Linear),后面几列分别是 DeepTMO 和各种传统色调映射方法(MantiukTMO、ReinhardTMO、DurandTMO、DragoTMO、FattalTMO、SchlickTMO)的结果,括号中的数字是质量评分。在场景一(室内人物)中,DeepTMO 获得了0.86分,MantiukTMO 获得0.81,ReinhardTMO 获得0.76。在场景二(建筑与红色轿车)中,DeepTMO 和 MantiukTMO 并列0.92,DragoTMO 为0.87。在场景三(远景建筑)中,DeepTMO 为0.87,FattalTMO 为0.88,SchlickTMO 为0.85。总体来看,深度学习方法的质量与传统方法相当甚至更好,且不需要手动调参。
深度学习在HDR融合中的应用
除了单张图像的HDR重建和色调映射,深度学习也被广泛用于多帧HDR融合任务中,无论是否包含图像对齐步骤。代表性工作包括 Kalantari 等(2017)、Prabhakar 等(2017,DeepFuse)、Yan 等(2019)和 Yang 等(2021,GanFuse)。这些方法用神经网络端到端地学习从多张不同曝光图像到最终HDR或LDR输出的映射,能够隐式地处理对齐、去鬼影和融合等多个子问题,在动态场景中通常表现优于传统方法。
马尔可夫随机场导论
历史背景与核心思想
马尔可夫随机场的理论根源可以追溯到物理学中对晶体结构等物理现象的概率建模。在图像处理领域,1984年Geman和Geman发表的文章将MRF引入图像分析,成为该领域的奠基性工作。
MRF的核心思想建立在两个基本观察之上。第一,对图像进行建模时,必须考虑像素之间的上下文关系,因为图像中的像素并非孤立存在,相邻像素之间存在强烈的统计相关性。第二,对于自然图像而言,局部邻域的信息就足够捕捉这种相关性,这意味着我们不需要考虑整幅图像的全局关系,只需要关注每个像素周围的局部区域即可。这种局部性假设大大简化了模型的复杂度,同时保留了建模的有效性。
自然图像的先验知识
自然图像具有明显的局部一致性特征。以一张港口船只的照片为例,如果观察图像中的任意一个像素,其取值很大程度上可以由周围邻域的像素值预测。天空区域的像素倾向于具有相似的亮度和颜色,船体表面的像素也呈现出连续变化的特征。这种局部上下文信息构成了我们对自然图像的先验认知,MRF正是将这种先验知识数学化的工具。
应用场景
底层图像处理任务
MRF在底层图像处理中有广泛应用,包括图像复原(从退化图像恢复原始图像)、图像分割(将图像划分为具有相似特性的区域)、边缘检测(识别图像中物体的边界)、以及图像压缩(利用像素间的相关性减少存储量)。
高层图像理解任务
在更高层次的应用中,MRF用于物体识别(识别图像中的特定目标)和图匹配(在不同图像或图结构之间建立对应关系)。
马尔可夫随机场的数学建模
MRF本质上是一个概率模型,用于描述定义在离散网格上的随机变量之间的依赖关系。理解这个模型需要从几个基本概念入手。
站点集合与状态空间
首先定义站点集合 S = \{s\} \subset \mathbf{Z}^d,它是 d 维整数网格的一个离散有限子集。在二维图像处理中,d=2,每个站点 s 对应图像中的一个像素位置。站点集合的有限性意味着我们处理的是有限大小的图像。
每个站点 s 上的取值 x_s 属于状态空间 E。状态空间的选择取决于具体应用:对于灰度图像,E = \{0, 1, \ldots, 255\} 表示256个灰度级;对于标签问题(如图像分割),E = \{0, 1, \ldots, q-1\} 表示 q 个类别标签;对于连续值问题,E = \mathbf{R} 表示实数域。
随机变量与随机场
对于每个站点 s,定义一个随机变量 X_s,它描述该位置取值的不确定性。将所有站点上的随机变量收集在一起,得到随机场
随机场是随机变量的集合,它刻画了整幅图像的随机性质。
配置与配置空间
当随机场中的每个随机变量都取定一个具体值时,就得到一个配置
配置也可以写成 \{x_s\} \cup x^s 的形式,其中 x_s 表示站点 s 的取值,x^s 表示除 s 以外所有站点的取值。这种分解方式在后续讨论条件概率时非常有用。在图像处理语境下,一个配置就对应一幅具体的图像。
所有可能配置的集合称为配置空间
其中 |S| 是站点的数量。配置空间的大小是 |E|^{|S|},对于一幅 256 \times 256 的灰度图像,配置空间包含 256^{65536} 种可能的配置,这是一个天文数字。
概率的三个层次
在MRF框架下,存在三种不同层次的概率。
局部概率 P(X_s = x_s) 描述单个站点取某个特定值的概率,它是边缘概率的一种形式。
联合概率
描述整个随机场同时取某个特定配置的概率,它是定义在配置空间上的概率分布。
条件概率
描述在给定所有其他站点取值的条件下,站点 s 取某个特定值的概率。MRF的核心特性正是通过条件概率来刻画的:马尔可夫性质表明,给定邻域内站点的取值,某个站点的条件概率与邻域外的站点无关。这三种概率之间的关系以及马尔可夫性质如何简化联合概率的表示,将在后续的Hammersley-Clifford定理中详细展开。
自然图像中的空间上下文
在二维图像网格中,每个站点 s 都有一个空间邻域 \mathcal{V}_s,包含了 s 周围的一组像素位置。邻域的选择决定了我们认为哪些像素之间存在直接的统计依赖关系。
不同区域类型的建模
对于均匀区域(如天空、墙面等),像素值 x_s 与其邻域像素的辐射度量之间存在强相关性,这种相关性可以用均值来刻画。均匀区域内相邻像素的取值倾向于接近,因此一个像素的值可以用其邻域的平均值来预测。
对于纹理区域,情况更加复杂。像素值 x_s 同样与邻域像素相关,但这种关系需要用局部模式函数来描述,而非简单的均值。纹理区域具有重复的局部结构,这种结构通过邻域内像素的特定组合模式来表征。
这两种情况都指向同一个核心思想:全局图像可以通过局部邻域来理解,全局概率可以通过局部条件概率来表达。这种从全局到局部的转化正是MRF的理论基础。
邻域系统与团
邻域系统的定义
站点 s 的邻域记为 \mathcal{V}_s,它必须满足两个基本性质。第一,s \notin \mathcal{V}_s,即一个站点不是自己的邻居,这是符合直觉的定义。第二,邻域关系是对称的:s \in \mathcal{V}_r \Leftrightarrow r \in \mathcal{V}_s,即如果 s 是 r 的邻居,那么 r 也必须是 s 的邻居。
将所有站点的邻域收集在一起,得到邻域系统
给定一个配置 x,站点 s 的邻域局部配置定义为
它包含了邻域内所有站点的取值,是计算条件概率时所需的全部局部信息。
团的定义
团是MRF理论中的核心概念,它刻画了站点之间的高阶交互。子集 c \subset S 是关于邻域系统 \mathcal{V} 的一个团,当且仅当满足以下条件之一:\text{card}(c) = 1,即 c 只包含单个站点;或者 \text{card}(c) \geq 2 且对于 c 中任意两个不同的站点 r \neq s,都有 r 和 s 互为邻居。换句话说,团是一个完全连通的站点子集,其中任意两个站点都是邻居。
团的记号为 c = (r, s, t, \ldots),所有团的集合记为 \mathcal{C} = \{c\}。
4-连通性下的团
在4-连通邻域中,每个像素只与上下左右四个像素相邻。以中心站点 s 为例,考虑包含 s 的所有团:1阶团只有 \{s\} 一个,2阶团有4个,分别是 s 与其上、下、左、右邻居组成的站点对 \{s, t\}。由于4-连通邻域中对角位置的像素不是邻居,因此不存在3阶或更高阶的团——任何三个站点中必有两个不相邻。
4-连通性的2阶团只有两种几何形状:垂直方向的两点和水平方向的两点。
8-连通性下的团
在8-连通邻域中,每个像素与周围8个像素(包括对角方向)都相邻。这导致团的结构更加丰富:1阶团仍然只有 \{s\} 一个,2阶团增加到8个(4个正交方向加4个对角方向),3阶团有12个(各种由三个互为邻居的站点组成的三角形),4阶团有4个(形成 \{s, t, q, u\} 的正方形结构,其中四个站点两两相邻)。
8-连通性的团形状包括:1阶为单点;2阶为垂直、水平和两个对角方向的两点;3阶为各种三角形配置;4阶为四个角点全连接的正方形。团的阶数越高,描述的站点间交互就越复杂。
马尔可夫随机场的定义
MRF的定义基于马尔可夫性质。在图像网格上,站点 s 的取值 x_s 在给定所有其他站点取值的条件下的概率,等于在仅给定邻域内站点取值的条件下的概率:
这个性质表明,一旦知道了邻域 \mathcal{V}_s 内所有站点的取值,邻域外的站点就不再提供关于 x_s 的额外信息。邻域起到了信息屏障的作用,将站点 s 与远处的站点条件独立地隔开。
这个性质实现了从全局概率到局部概率的简化。计算全局条件概率原本需要考虑整幅图像中所有其他像素,但马尔可夫性质告诉我们只需要考虑局部邻域即可。
MRF作为马尔可夫链的二维扩展
一维马尔可夫链满足 P(X_n \mid X_{n-1}, X_{n-2}, \ldots) = P(X_n \mid X_{n-1}),即当前状态只依赖于前一个状态。MRF将这种局部依赖性从一维序列推广到二维网格:当前像素的条件分布只依赖于空间邻域内的像素,而非整幅图像。
Hammersley-Clifford定理
定理陈述
Hammersley-Clifford定理建立了马尔可夫随机场与吉布斯分布之间的等价关系。设 P(X = x) > 0 对所有 x \in \Omega 成立(正性条件),则随机场 X 是MRF当且仅当其联合分布具有吉布斯形式:
其中全局能量函数定义为所有团势能的和:
每个团势能只依赖于该团内站点的取值:
配分函数 Z 是归一化常数,确保概率之和为1:
定理的意义
这个定理的核心贡献在于将抽象的马尔可夫条件独立性转化为具体的能量函数形式。马尔可夫性质描述的是条件概率的结构,而吉布斯分布给出了联合概率的显式表达式。能量函数的可加性——全局能量等于局部团势能之和——正是马尔可夫性质的代数体现。
能量函数的展开形式
根据团的阶数,能量函数可以展开为:
第一项对应1阶团(单站点),f(x_s) 描述每个像素独立的能量贡献。第二项对应2阶团(站点对),g(x_r, x_s) 描述相邻像素之间的成对交互。第三项对应3阶团(站点三元组),h(x_r, x_s, x_t) 描述三个互为邻居的站点之间的高阶交互。系数 A、B、C 控制各阶交互的相对权重。
模型可以是非平稳的,此时系数依赖于具体位置:A \to A_s,B \to B_{rs} 等,允许图像不同区域具有不同的统计特性。
能量与概率的关系
吉布斯分布的指数形式决定了能量与概率之间的反向关系:低能量 U(x) 对应高概率 P(X = x)。在图像处理中,我们设计能量函数使得符合先验假设的配置(如平滑图像、边缘保持图像)具有低能量,从而具有高概率。寻找最可能的配置等价于最小化能量函数。
Ising模型实例
Ising模型是最简单的MRF实例,最初用于描述磁性材料中自旋的相互作用,在图像处理中常用于二值图像建模。
模型设定
状态空间为 E = \{0, 1\},每个像素只能取两个值,对应二值图像。邻域采用4-连通结构,每个像素与上下左右四个像素相邻。
团势能的定义
单点团(1阶团)的势能设为零:
这意味着模型不对单个像素的取值施加偏好,只关注像素之间的关系。
二阶团(相邻像素对)的势能定义为:
参数 \beta > 0 控制相邻像素取不同值时的能量惩罚。当相邻像素取相同值时能量为零,取不同值时能量增加 \beta。这种设计鼓励相邻像素取相同值,从而产生平滑的图像区域。
全局能量的计算
对于整幅图像,全局能量是所有团势能之和:
以PPT中的示意图为例,如果配置中有5对相邻像素取不同值,则 U(x) = 5\beta。
条件概率的计算
考虑站点 s 在给定邻域配置 V_s 下的条件概率。假设邻域内四个邻居的取值为 (1, 1, 0)(三个邻居,其中两个取值为1,一个取值为0)。
当 x_s = 0 时,局部条件能量为:
因为 x_s = 0 与两个取值为1的邻居不同,各贡献 \beta,与取值为0的邻居相同,贡献0。
当 x_s = 1 时,局部条件能量为:
因为 x_s = 1 与一个取值为0的邻居不同,贡献 \beta,与两个取值为1的邻居相同,贡献0。
局部配分函数为:
条件概率分别为:
由于 e^{-\beta} > e^{-2\beta}(当 \beta > 0),x_s = 1 是更可能的取值。这符合直觉:站点倾向于取与多数邻居相同的值。
条件概率的一般形式
局部吉布斯分布
MRF的条件概率具有局部吉布斯分布形式:
其中局部条件能量定义为包含站点 s 的所有团的势能之和:
这个求和只遍历包含 s 的团,因为只有这些团的势能依赖于 x_s 的取值。由于团内所有站点必须互为邻居,包含 s 的团只涉及 s 及其邻域内的站点,因此局部条件能量只依赖于 x_s 和邻域配置 V_s。
局部配分函数对站点 s 的所有可能取值求和:
它确保条件概率归一化为1,且只依赖于邻域配置 V_s,不依赖于 x_s 的具体取值。
条件概率的推导
从条件概率的定义出发:
其中 X^s 表示除 s 以外所有站点的取值。分子是联合概率 \Pr(X = x),分母是对 x_s 的所有可能取值求和:
其中 x' 是将配置 x 中站点 s 的取值替换为 \xi 得到的配置。
将全局能量分解为包含 s 的部分和不包含 s 的部分:
第一项 U(x_s / V_s) 是包含 s 的团的能量之和,只依赖于 x_s 和 V_s;第二项是不包含 s 的团的能量之和,与 x_s 无关。
代入吉布斯分布并约去公共因子后得:
这验证了马尔可夫性质:给定邻域 V_s,条件概率与邻域外的站点无关。分母即为局部配分函数 Z^s。
局部条件概率的详细示例
模型设定
考虑二值场 E = \{0, 1\},采用4-连通邻域。只定义2阶团势能,使用指示函数形式:
当 x_s = x_t 时取0,当 x_s \neq x_t 时取 \beta。
具体计算
假设邻域配置为 V_s = (0, 0, 0, 1),即四个邻居中三个取值为0,一个取值为1。
当 x_s = 0 时,与三个取值为0的邻居相同(贡献0),与一个取值为1的邻居不同(贡献 \beta):
当 x_s = 1 时,与三个取值为0的邻居不同(各贡献 \beta),与一个取值为1的邻居相同(贡献0):
条件概率分别为:
由于 \exp(-\beta) > \exp(-3\beta),x_s = 0 具有更高的条件概率,这与邻域中多数像素取值为0一致。
MRF的采样
问题描述
给定一个MRF,即给定邻域系统和团势能后,联合分布 P(X = x) 已经确定。采样问题是:如何生成服从这个分布的随机配置?
解决方案
两种基于马尔可夫链蒙特卡罗(MCMC)的算法可以解决这个问题:Gibbs采样器和Metropolis算法。
这两种算法的核心思想是构造一个马尔可夫链,其平稳分布正是目标分布 P(X = x)。从任意初始配置出发,通过迭代局部更新,马尔可夫链最终收敛到平稳分布,此后生成的样本即服从目标分布。
Gibbs采样器利用条件概率进行更新:每次选择一个站点,根据给定邻域配置的条件概率对该站点重新采样。由于条件概率只涉及局部计算,不需要全局配分函数,因此可以高效实现。
Metropolis算法采用提议-接受机制:提议一个新配置,根据能量差计算接受概率,以一定概率接受或拒绝新配置。这种方法同样只需要局部能量计算。
Gibbs采样器
算法原理
Gibbs采样器通过逐个访问站点并局部更新来构建配置序列 x(n)。站点的访问顺序可以是随机的,也可以按照固定顺序(如光栅扫描)进行。
局部更新机制
每次更新针对单个站点 s,将当前配置 x = \{x_s, x^s\} 变为新配置 x' = \{\xi, x^s\},其中 x^s 保持不变,仅站点 s 的取值从 x_s 变为新值 \xi。
新旧配置的概率之比可以简化为条件概率之比:
这个推导利用了马尔可夫性质,将全局条件概率替换为局部条件概率。分母中的 \Pr(X^s = x^s) 在分子分母中相消,使得概率比只依赖于邻域配置。
采样过程
根据条件概率直接采样新状态 \xi。条件概率具有局部吉布斯形式:
其中 T 是温度参数,Z_T^s 是局部配分函数。在标准Gibbs采样中 T = 1。条件概率在状态空间 E 上形成一个离散分布,通过计算每个可能取值的条件概率并归一化,然后从这个分布中随机抽取新状态。
Metropolis采样
算法原理
Metropolis算法采用提议-接受机制。首先随机选择一个站点 s 和一个新状态 x'_s,形成候选配置 x' = (x'_s, x_t, t \neq s),即只改变站点 s 的取值,其他站点保持不变。
接受准则
计算能量变化:
接受准则分两种情况。如果 \Delta U < 0,即新配置能量更低,则直接接受新状态。如果 \Delta U \geq 0,即新配置能量更高或相等,则以概率 p = \exp(-\Delta U) 接受新状态,以概率 1 - p 拒绝新状态并保持原配置。
这个准则的设计保证了详细平衡条件的满足。能量降低时总是接受,这推动系统向低能量(高概率)状态演化;能量升高时以一定概率接受,这允许系统跳出局部极小,探索配置空间的不同区域。
马尔可夫链采样的理论基础
马尔可夫链结构
采样过程构成一个在配置空间上的马尔可夫链。第 n 步的配置 X^{(n)} 只依赖于前一步的配置 X^{(n-1)},与更早的历史无关:
转移核
转移核定义了从一个配置转移到另一个配置的概率:
它描述了系统从配置 x 转移到配置 y 的概率。
齐次马尔可夫链
如果转移核 Q_n(x, y) 不依赖于时间步 n,即 Q_n(x, y) = Q(x, y),则马尔可夫链是齐次的。Gibbs采样器和Metropolis算法在固定温度下都产生齐次马尔可夫链。
图像的马尔可夫链
采样过程产生一个图像序列 X^{(0)}, X^{(1)}, \ldots, X^{(n-1)}, X^{(n)}, X^{(n+1)}, \ldots,每个 X^{(n)} 都是一幅完整的图像(配置)。这个序列构成配置空间上的马尔可夫链。
收敛性
齐次采样的目标是找到转移核 Q(x, y),使得马尔可夫链的分布收敛到目标分布:
当满足遍历性条件(不可约性和非周期性)时,Gibbs采样器和Metropolis算法产生的马尔可夫链都收敛到目标吉布斯分布。收敛后,链上的样本可以视为从目标分布中抽取的样本。
马尔可夫模型实例
Ising模型
经典Ising模型的状态空间为 E = \{-1, +1\},能量函数为:
第一项是相邻自旋之间的相互作用能,\beta > 0 时鼓励相邻自旋取相同符号(铁磁相互作用)。第二项是外场项,B 表示外加磁场强度,它对自旋的取向施加全局偏好。
等价的二值形式使用 E = \{0, 1\}:
这与之前讨论的形式一致,惩罚相邻像素取不同值。
Potts模型
Potts模型是Ising模型向多状态的推广,状态空间为 E = \{0, 1, \ldots, q-1\},包含 q 个离散标签。能量函数为:
形式与二值Ising模型相同,但允许更多的状态取值。Potts模型常用于多类图像分割,每个标签对应一个分割类别。
高斯马尔可夫模型
高斯马尔可夫模型处理连续值,状态空间为 E = \mathbf{R}。能量函数为:
第一项是平滑项,惩罚相邻像素值之间的差异,鼓励图像平滑。第二项是数据项,将像素值拉向先验均值 \mu_s,\alpha 控制数据保真度与平滑度之间的权衡。这个模型对应多元高斯分布,具有解析解,常用于图像去噪和恢复。
Ising模型的采样结果
以4-连通Ising模型为例,外场 B = 0,观察不同 \beta 值下的采样结果。
当 \beta = 0 时,能量函数恒为零,所有配置等概率,采样结果是完全随机的噪声图像,黑白像素均匀分布,没有任何空间结构。
当 \beta = 0.2 时(弱正则化),相邻像素开始表现出微弱的相关性,图像仍然以噪声为主,但可以观察到一些小尺度的聚集现象。
当 \beta \approx 0.44 时(临界正则化),系统处于相变临界点附近,呈现出多尺度的空间结构,既有大块的连通区域,也有细小的噪声纹理。
当 \beta = 4.0 时(强正则化),强烈的平滑约束导致图像形成大面积的均匀区域,相邻像素几乎总是取相同值,边界变得非常光滑。
\beta 的物理意义是逆温度,\beta 越大相当于温度越低,系统越倾向于低能量(有序)状态;\beta 越小相当于温度越高,热涨落使系统趋于无序。
Potts模型的采样结果
Potts模型采用4-连通邻域,状态空间包含 q = 4 个标签,外场 B = 0。采样结果展示了四种不同 \beta 值下的图像特征。
当 \beta = 0 时,所有配置等概率,采样结果是完全随机的四色噪声图像,四种颜色(标签)均匀随机分布,没有空间结构。
当 \beta = 0.2 时(弱正则化),相邻像素开始呈现微弱的聚集趋势,但整体仍以噪声为主。
当 \beta \approx 1.099 时(临界正则化),系统处于相变点附近,出现多尺度的空间结构,既有较大的同色区域,也有复杂的边界交织。
当 \beta = 4.0 时(强正则化),强平滑约束使图像形成大块的均匀区域,每个区域内的像素几乎都取相同标签。
Potts模型的临界 \beta 值约为1.099,大于Ising模型的0.44,这是因为多状态系统需要更强的相互作用才能产生有序结构。
高斯马尔可夫模型的采样结果
高斯马尔可夫模型在4-连通邻域下的能量函数为:
采样实验中固定 \mu = 127(灰度中值),观察不同 \alpha 值的效果。
当 \alpha = 5 \times 10^{-4} 时,数据项约束极弱,平滑项主导,图像呈现较强的空间相关性但整体灰度可能偏离均值。
当 \alpha = 5 \times 10^{-3} 时,数据项约束增强,图像被拉向先验均值127,同时保持一定的平滑性。
当 \alpha = 2 \times 10^{-3} 时,效果介于前两者之间。
当 \alpha = \infty 时,数据项完全主导,所有像素都被强制取均值127,图像变成均匀灰色平面。
高斯马尔可夫模型的理论分析
独立像素模型
最简单的情况是像素之间相互独立,此时没有空间耦合项(\beta = 0)。联合分布可以写成各像素边缘分布的乘积:
对应的能量函数为:
每个像素独立服从均值为 \mu、精度为 \alpha 的高斯分布。这个模型没有空间结构,无法捕捉图像的局部相关性。
自正态模型
一般情况下,能量函数包含两项:
第一项是局部均值项,将每个像素拉向其先验均值 \mu_s。先验均值可以是位置相关的(\mu_s 变化,对应可变光照条件),也可以是常数(\mu_s = \mu = 128,对应均匀光照)。
第二项是耦合项,惩罚相邻像素之间的差异,鼓励图像平滑。\beta 越大,平滑约束越强。
两项的相对权重由 \alpha 和 \beta 的比值决定,控制数据保真度与空间平滑度之间的平衡。
高斯模型的条件概率
对于 \gamma-连通邻域(\gamma 是每个像素的邻居数,4-连通时 \gamma = 4,8-连通时 \gamma = 8),条件概率为:
指数内的表达式是关于 x_s 的二次函数,因此条件分布是高斯分布。通过配方可以将其改写为标准高斯形式:
条件期望
条件分布的均值(条件期望)为:
当先验均值为常数 \mu_s = \mu 时:
这个表达式是先验均值 \mu 与邻域像素均值 \frac{1}{\gamma}\sum_{t \in \mathcal{V}_s} x_t 的加权平均,权重分别正比于 \alpha 和 \beta\gamma。条件期望位于先验均值和邻域重心之间,这体现了数据项和平滑项的折中。
条件方差
条件分布的方差为:
条件方差不依赖于先验均值 \mu_s,也不依赖于邻域像素的具体取值 x_t,只由模型参数 \alpha、\beta 和邻域大小 \gamma 决定。\alpha 或 \beta 越大,条件方差越小,像素取值的不确定性越低。
充分统计量
对于固定的邻域配置,邻域像素之和
是计算条件分布所需的充分统计量。条件期望和条件方差都可以仅通过 X_{\mathbf{V}} 来表达,不需要知道每个邻居的具体取值。这简化了采样和推断的计算。
采样与优化
问题转化
在许多应用中,我们不需要从MRF中采样,而是需要找到概率最大的配置。由于吉布斯分布的形式 P(X = x) \propto \exp(-U(x)),寻找最高概率配置等价于寻找能量函数的全局最小值。这是一个组合优化问题。
问题分类
优化问题可以从三个维度进行分类。第一个维度是全局极小与局部极小:全局极小是整个配置空间中能量最低的点,局部极小是在某个邻域内能量最低但不一定是全局最低的点。第二个维度是连续标签与离散标签:连续标签(如高斯MRF)允许使用梯度方法,离散标签(如Ising、Potts模型)只能使用组合优化方法。第三个维度是凸能量与非凸能量:凸能量函数保证局部极小就是全局极小,非凸能量函数可能存在多个局部极小,优化更加困难。
ICM算法
ICM(Iterated Conditional Modes,迭代条件模式)是一种针对离散标签MRF的局部优化算法。
算法步骤
算法对每个站点进行顺序更新,每次更新包含三个步骤。首先选择一个站点 s。然后在固定邻域配置的条件下,计算该站点取每个可能状态时的条件概率(等价于计算条件局部能量)。最后选择使条件概率最大(条件局部能量最小)的状态作为该站点的新取值。
与Gibbs采样器的区别在于:Gibbs采样器根据条件概率随机抽取新状态,而ICM直接选择条件概率最大的状态。ICM是确定性算法,不引入随机性。
算法特性
ICM收敛到局部极小而非全局极小,因为每步更新只能降低或保持能量不变,当所有站点都无法通过单独改变取值来降低能量时,算法终止于局部极小点。算法结果强烈依赖初始配置,不同的初始化可能导致收敛到不同的局部极小。算法速度很快,因为每步只需要计算局部能量,不涉及全局计算。对于连续标签的情况,ICM类似于梯度下降法,每步沿着使能量下降最快的方向更新。
带温度参数的吉布斯分布
温度参数的引入
在吉布斯分布中引入温度参数 T > 0:
全局能量仍然定义为团势能之和:
带温度的配分函数为:
温度参数 T 控制分布的"锐度":T 越小,分布越集中于低能量配置;T 越大,分布越平坦。
极端温度的行为
当 T \to +\infty 时,P_T(X = x) 趋向于配置空间 \Omega 上的均匀分布,所有配置等概率。当 T \to 0 时,P_T(X = x) 趋向于只在能量全局最小的配置上取非零值,其他配置概率为零。
高温极限的推导
两个配置的概率之比为:
当 T \to \infty 时,对于有限配置空间中的任意两个配置:
因为 \frac{U(y) - U(x)}{T} \to 0。这意味着所有配置的概率趋于相等。
具体推导如下。将概率表达式改写:
当 T \to \infty 时,分母中每一项都趋向于1,因此:
这是配置空间上的均匀分布(等分布)。
低温极限的推导
定义全局能量最小值和最优配置集合:
\Omega^* 包含所有达到全局最小能量的配置,可能不止一个。
当 T \to 0 时,对于能量高于最小值的配置 y(即 U(y) > U(x) 对某个 x \in \Omega^*):
因为 \frac{U(y) - U(x)}{T} \to +\infty。
将概率表达式改写,以 U^* 为参考:
当 T \to 0 时,分母中 y \notin \Omega^* 的项都趋向于0(因为 U(y) > U^*),因此:
低温极限下,概率集中在全局最优配置集合 \Omega^* 上的均匀分布。
几何直观
从图形上看,能量函数 U(x) 在配置空间上形成一个起伏的曲面,有多个局部极小和一个(或多个)全局极小。概率分布 P_\theta(x) 是能量曲面的"倒影"。
这里图有问题
温度参数提供了从均匀分布(高温)到集中于全局最优的分布(低温)之间的平滑过渡,这是模拟退火算法的理论基础。
模拟退火算法
模拟退火(Simulated Annealing)是一种能够找到全局最优解的随机优化算法,由Geman和Geman于1984年提出。该算法的名称来源于金属退火过程:将金属加热到高温后缓慢冷却,使原子有足够时间重新排列成低能量的晶体结构。
算法思想
算法通过构建一个图像序列来实现优化,每幅图像都从带温度参数的吉布斯分布 P_{T_n}(X) 中采样。温度 T_n 随迭代步数 n 缓慢下降,每次采样以当前配置作为初始化。当温度接近零时,分布 P_{T_n} 集中在全局能量最小的配置上,此时得到的配置就是(近似的)全局最优解。
算法成功的关键在于两个条件:温度下降必须足够缓慢(对数冷却速率),以及初始温度必须足够高。如果温度下降过快,系统可能在完全探索配置空间之前就被"冻结"在局部极小中。
收敛定理
定理陈述
设转移核 Q_n(x, y) 满足 T_n \searrow 0(温度单调下降趋向零),且温度序列满足对数冷却条件:
则马尔可夫链的分布收敛到全局最优配置集合上的均匀分布:
其中 \Omega^* = \{x \in \Omega \mid U(x) = U^*\} 是达到全局能量最小值 U^* 的配置集合,\delta(x \in \Omega^*) 是指示函数,当 x \in \Omega^* 时取1,否则取0。
这个定理表明:通过按照分布 P_{T_n}(X) 依次采样,并让温度按对数速率下降,最终得到的配置将以概率1属于全局最优集合。
初始温度的理论值
初始温度 T_0 的选择与采样算法有关。对于Metropolis算法,T_0 = \Delta U_{max},即配置空间中最大的能量差。这保证在初始阶段,即使提议的新配置能量大幅增加,也有相当的概率被接受,从而充分探索配置空间。
对于Gibbs采样器,T_0 = \sum_{s \in S} \delta U(\cdot / V_s)_{max},即所有站点的最大局部能量变化之和。这里 \delta U(\cdot / V_s)_{max} 表示在给定邻域配置 V_s 下,站点 s 取不同值时的最大能量差。
实践中的冷却策略
理论上的对数冷却速率收敛太慢,实际应用中通常采用指数冷却:
其中 \alpha \approx 0.98 是冷却系数,T_0 \approx \delta U(\cdot / V_s)_{max}。指数冷却比对数冷却快得多,但不再保证收敛到全局最优,只能得到近似解。实践表明,适当选择参数的指数冷却通常能找到足够好的解。
模拟退火的几何直观
能量函数 U 在配置空间 \Omega 上形成一个复杂的曲面,包含多个局部极小(如图中左侧的浅谷)和一个全局极小(如图中 x^* 处的深谷,对应能量 U^*)。
从任意初始点出发(图中A点),如果使用纯粹的下降算法(如ICM),系统会沿着能量下降的方向移动,但可能陷入局部极小而无法到达全局极小。
模拟退火的关键在于:在高温阶段,算法有较大概率接受能量上升的移动(如从局部极小跳出,图中B点所示的上升移动),这使系统能够跨越能量屏障,探索配置空间的不同区域。随着温度逐渐下降,接受能量上升移动的概率减小,系统逐渐"冷却"到低能量区域。如果冷却足够缓慢,系统最终会找到全局极小 x^*。
高温保证探索性(跳出局部极小的能力),低温保证收敛性(最终稳定在低能量配置),温度的缓慢下降在这两者之间实现平衡。
贝叶斯分析与马尔可夫随机场在图像处理中的应用
本课程将MRF理论与贝叶斯推断相结合,应用于图像处理的两大核心任务。第一个任务是图像标注,包括问题建模、像素独立假设下的解决方案、基于MRF的解决方案以及具体示例。第二个任务是图像复原,包括问题建模和线过程的引入。此外还将讨论扩展内容及与相关主题的联系。
数据采集过程建模
图像处理问题可以统一在一个数据采集框架下理解。原始场景 x 经过退化、检测和测量过程后,得到观测数据 y。这个过程可以表示为:
观测过程的随机性由条件概率 \Pr(Y = y \mid X = x) 刻画,它描述了给定真实场景 x 时观测到 y 的概率。这个条件概率也称为似然函数,它编码了成像系统的物理特性,包括模糊、噪声、采样等退化因素。
状态空间的区分
根据任务类型,x 和 y 所属的状态空间有所不同。
对于图像复原问题,观测 y_s 和待恢复的原始图像 x_s 都属于灰度空间 E(如 E = \{0, 1, \ldots, 255\} 或 E = \mathbf{R})。任务是从退化的灰度图像恢复清晰的灰度图像。
对于图像标注问题(如分割、分类),观测 y_s 属于灰度空间 E,但待估计的 x_s 属于标签空间 \Lambda(如 \Lambda = \{0, 1, \ldots, q-1\} 表示 q 个类别)。任务是为每个像素分配一个类别标签。
后验分布与贝叶斯推断
逆问题的表述
核心问题是:给定观测 y,如何推断原始场景 x?这是一个逆问题,从效果(观测)反推原因(场景)。贝叶斯框架通过后验分布来回答这个问题。
贝叶斯公式
根据贝叶斯定理,后验概率可以写成:
这个公式将后验概率分解为三个组成部分。
后验概率 \Pr(X = x \mid Y = y) 是我们最终想要的量,它表示在观测到 y 的条件下,真实场景是 x 的概率。似然 \Pr(Y = y \mid X = x) 描述观测过程,即如果真实场景是 x,观测到 y 的概率有多大。这一项由成像系统的物理模型决定。先验 \Pr(X = x) 编码了关于场景的先验知识,在观测之前我们认为场景 x 出现的概率。MRF正是用来建模这个先验分布的工具。证据 \Pr(Y = y) 是归一化常数,对于固定的观测 y,它不依赖于 x,因此在比较不同 x 的后验概率时可以忽略。
由于证据项与 x 无关,后验概率正比于似然与先验的乘积:
这个关系是贝叶斯图像处理的核心:后验 = 似然 × 先验。
MAP估计
最大后验(Maximum A Posteriori,MAP)估计选择使后验概率最大的配置作为点估计:
MAP估计在所有可能的场景中找出最可能产生观测 y 的那个场景。由于后验正比于似然乘以先验,MAP估计等价于在似然和先验之间寻找最佳平衡:既要与观测数据一致(高似然),又要符合先验假设(高先验概率)。
图像标注示例
以脑部MRI图像分割为例,任务是将图像中的每个像素分配到6个类别之一。标签空间定义为:
这6个类别分别对应:背景、皮肤、骨骼、灰质、白质、脑室。观测 y 是MRI灰度图像,待估计的 x 是标签图,每个像素位置 s 的取值 x_s \in \Lambda 表示该位置属于哪个组织类型。
逐像素贝叶斯标注
像素独立假设
最简单的方法是假设在后验分布 P(X \mid Y) 下,各像素的标签条件独立。这意味着联合后验分布可以分解为各像素边缘后验的乘积:
在这个假设下,全局MAP估计分解为独立的逐像素MAP估计。对于每个像素 s,只需找到使局部后验概率 P(X_s \mid Y_s) 最大的标签即可。
局部贝叶斯公式
对于单个像素,后验概率正比于似然与先验的乘积:
逐像素MAP估计选择使这个后验最大的标签作为该像素的分类结果。
似然项的确定
似然项 P(Y_s = y_s \mid X_s = x_s) 描述了当像素 s 的真实类别是 x_s 时,观测到灰度值 y_s 的概率。这一项的形式取决于成像传感器的特性和所考虑的类别。
确定似然项有三种途径。第一种是物理建模,根据成像系统的物理原理推导出观测模型。第二种是监督学习,通过手动标注感兴趣区域(训练样本),从数据中估计每个类别的灰度分布。第三种是无监督学习,使用EM算法等迭代方法从未标注数据中估计分布参数。
先验项的确定
先验项 P(X_s = x_s) 表示像素 s 属于类别 x_s 的先验概率。在逐像素模型中,先验通常编码关于各类别比例的知识。如果没有特殊的先验信息,可以假设各类别等概率,即均匀先验。
高斯似然示例
一个常见的设定是假设每个类别的灰度值服从高斯分布。对于类别 \lambda_k,灰度值的条件分布为:
其中 \mu_k 和 \sigma_k 分别是类别 k 的均值和标准差。如果不使用类别比例的先验(即均匀先验),分类规则简化为将像素分配给使似然最大的类别。
逐像素方法的局限性
逐像素贝叶斯标注存在根本性缺陷:它完全忽略了空间一致性。每个像素的分类只依赖于该像素自身的灰度值,与邻域像素的分类结果无关。
这导致分类结果缺乏空间连贯性。在真实图像中,同一组织区域内的像素应该具有相同的标签,但逐像素方法可能产生大量孤立的错误分类点(椒盐噪声效应)。即使某个像素的灰度值因噪声而偏离其类别的典型值,如果它的邻居都属于某个类别,它也很可能属于同一类别。逐像素方法无法利用这种空间上下文信息。
这种模型不适合图像处理任务,因为自然图像具有强烈的空间结构,相邻像素高度相关。解决方案是在标签场 X 上引入全局先验,用马尔可夫随机场来建模标签之间的空间依赖关系,从而在分类中融入空间一致性约束。
图像标注的数据采集过程
MAP准则
图像标注的目标是找到使后验概率最大的标签配置。根据贝叶斯公式,MAP准则可以写成:
这将问题分解为两部分:似然项 P(Y \mid X) 描述观测过程,先验项 P(X) 编码标签场的空间结构。
似然项的建模
对于似然项 P(Y \mid X),通常做两个假设。第一个假设是给定标签场 X 后,各像素的观测条件独立:
第二个假设是每个像素的观测只依赖于该像素自身的标签,与其他像素的标签无关:
在这两个假设下,似然可以写成指数形式:
这个形式本身就是一个MRF,其中能量函数只包含单点团(1阶团),团势能为 -\log P(Y_s \mid X_s)。
条件概率 P(Y_s \mid X_s) 的具体形式取决于传感器特性和所考虑的类别,需要根据具体应用来确定。
先验模型的选择
像素独立先验
如果假设先验分布下各像素标签独立:
将这个先验代入后验公式,由于似然项也是逐像素分解的,整个后验分布退化为逐像素后验的乘积:
这正是之前讨论的逐像素贝叶斯分类,无法捕捉空间一致性。
MRF先验
为了引入像素之间的空间交互(如区域规则性),对标签场 X 采用MRF假设。先验分布具有吉布斯形式:
能量函数是所有团势能之和:
团势能 V_c(x) 设计为鼓励空间一致性,例如Potts模型惩罚相邻像素取不同标签。
后验分布的吉布斯形式
后验能量函数
将似然项和MRF先验代入后验公式,后验分布也具有吉布斯形式:
后验能量函数 \mathcal{U}(x / y) 由两部分组成:
第一项来自似然,第二项来自先验。后验场也是马尔可夫随机场,因为后验能量仍然可以写成团势能之和的形式。
两项的含义
似然项(数据附着项):
这一项建立了数据 y 与标签 x 之间的联系,强制标签配置与观测数据一致。当某个像素的标签与其灰度值不匹配时(即 P(Y_s \mid X_s) 很小),这一项的贡献会很大,从而惩罚这种不一致。
先验项(正则化项):
这一项不依赖于观测数据,只取决于标签配置本身。它编码了关于解的先验知识,例如空间平滑性或区域一致性。正则化项的作用是在数据约束不足时(如噪声严重)提供额外的约束,使解更加合理。
MAP估计的优化视角
MAP估计寻找使后验概率最大的配置,等价于最小化后验能量:
这个优化问题在数据附着项和正则化项之间寻找平衡。如果只考虑数据附着项,解会完全拟合观测数据,包括噪声;如果只考虑正则化项,解会忽略观测数据。MAP估计在两者之间取得折中,既与数据一致,又满足先验约束。
脑部MRI图像分割示例
脑部MRI图像分割是图像标注的典型应用。任务是将MRI图像中的每个像素分配到不同的组织类别。图像显示了多个轴向切片,不同脑组织(如灰质、白质、脑脊液)在MRI图像中呈现不同的灰度特征,这些特征可以用高斯分布来建模。
问题设定
考虑简化的三类分割问题,标签空间为:
其中 \phi 表示背景,MG 表示灰质(Matière Grise),MB 表示白质(Matière Blanche)。观测值 y_s \in \{0, 1, \ldots, 255\} 是灰度值。
后验能量函数
根据贝叶斯框架,后验能量函数由数据项和正则化项组成:
第一项是似然项的负对数,第二项是MRF先验的能量。
似然模型
假设给定标签后,灰度值服从高斯分布。对于标签 x_s,似然为:
各类别的参数设定为:背景 \phi 的均值 \mu_\phi = 50,标准差 \sigma_\phi = 1;灰质 MG 的均值 \mu_{MG} = 150,标准差 \sigma_{MG} = 1;白质 MB 的均值 \mu_{MB} = 200,标准差 \sigma_{MB} = 1。
这些参数意味着背景区域灰度较暗(均值50),灰质中等亮度(均值150),白质最亮(均值200)。标准差设为1表示类内变化很小,这是简化假设。
Potts先验模型
对标签场采用Potts模型,团势能定义为:
或等价地写成 V_c(x_s, x_t) = \beta \cdot \Delta(x_s, x_t),其中 \Delta(x_s, x_t) = 1 当 x_s \neq x_t,否则为0。
完整的后验能量
将高斯似然代入,后验能量的具体形式为:
第一项度量每个像素的灰度值与其标签类别均值的偏离程度,第二项惩罚相邻像素取不同标签。
局部条件能量
对于ICM算法,需要计算给定邻域配置 V_s 下的局部条件能量:
其中 k = \ln(\sqrt{2\pi}\sigma_{x_s}) 是常数项。数据项度量观测与标签的匹配程度,正则化项统计邻域内与当前标签不同的邻居数量。
数值示例
假设某像素 s 的观测值为 y_s = 80,其4-连通邻域中有1个背景像素、3个灰质像素、1个白质像素。计算该像素取各标签时的局部条件能量。

优化策略
ICM算法收敛到局部极小,结果依赖初始化。一个好的初始化策略是使用最大似然估计:对每个像素独立选择使似然最大的标签,忽略空间约束。这相当于只考虑数据项的逐像素分类,然后ICM迭代加入空间正则化。
模拟退火的条件概率
使用模拟退火算法时,需要计算带温度参数的条件概率。对于上述数值示例,在温度 T^{(n)} 下:
高温时三个概率接近均匀,低温时概率集中在能量最低的标签上。随着温度逐渐下降,系统从随机探索过渡到确定性选择最优标签。
优化方法的选择
MAP估计的目标是找到最小化后验能量的最优配置。两种主要的优化算法各有特点。
模拟退火
模拟退火对后验场的吉布斯分布进行采样,温度逐渐下降。该方法是随机算法,每步根据带温度的条件概率随机选择新状态。其优点是理论上保证收敛到全局最小,能找到真正的MAP估计。缺点是收敛速度慢,因为对数冷却速率要求温度下降极其缓慢,实际应用中往往需要大量迭代。
ICM算法
ICM是确定性算法,每步选择使局部条件概率最大(等价于局部条件能量最小)的状态。其优点是收敛速度快,通常只需少量迭代即可稳定。缺点是只能收敛到局部最小,不保证找到全局最优解。
ICM算法详解
算法流程
算法从初始配置 x^{(0)} 开始,该初始化应尽量接近真实解。然后生成图像序列 x^{(n)},每一步 n 对所有站点进行更新。更新过程包括两个步骤:首先随机选择一个站点 s,然后将该站点的状态更新为使局部后验概率最大的值:
这里 V_s^{(n-1)} 是上一步迭代中邻域的配置。更新规则等价于选择使局部条件能量最小的标签。
停止准则
当配置的变化率低于预设阈值时算法终止。变化率可以定义为本次迭代中改变标签的像素比例。当几乎没有像素需要改变时,说明已经达到局部极小点。
算法特性
ICM是确定性算法,给定相同的初始化,每次运行产生相同的结果。这意味着结果强烈依赖于初始配置的选择,不同的初始化可能导致收敛到不同的局部极小。算法收敛速度快,因为每步只需要计算局部能量,且能量单调下降保证了快速收敛。但算法不保证找到后验能量 \mathcal{U}(x \mid y) 的全局最小,只能保证找到局部最小。
初始化策略
由于ICM对初始化敏感,选择好的初始配置至关重要。常用策略是使用最大似然初始化:对每个像素独立选择使似然 P(Y_s \mid X_s) 最大的标签,完全忽略空间约束。这相当于逐像素贝叶斯分类的结果。虽然这个初始化可能包含噪声,但它通常已经接近真实解,ICM迭代可以通过空间正则化来消除噪声点。
脑部MRI分割实例
实例展示了将MRF方法应用于脑部MRI图像分割的完整流程。输入是一系列轴向切片的MRI图像,从颅底到颅顶逐层扫描。每幅切片显示不同层面的脑组织结构。
分割结果将每个像素分配到相应的组织类别。背景区域(图像外部的黑色区域)被正确识别,脑组织内部的灰质和白质也被区分开来。MRF先验的正则化效果使得分割结果具有空间连续性,避免了逐像素方法常见的椒盐噪声问题。
不同切片的分割展示了算法对三维脑结构的适应性。颅底层面主要是骨骼和颅外组织,中间层面包含丰富的皮层灰质和深部白质,顶部层面则以大脑皮层为主。算法能够根据各层面的灰度特征和空间结构自动调整分割结果。
脑成像分割完整框架
似然模型
假设给定标签场 X 后,各像素的观测条件独立:
对于高斯情况,通过监督学习从标注样本中估计每个类别 i 的概率密度函数参数。每个类别的灰度分布建模为高斯分布 \mathcal{N}(\mu_i, \sigma_i),似然函数为:
参数 \mu_i 和 \sigma_i 可以通过在训练图像上手动标注感兴趣区域,然后计算各区域的样本均值和标准差来获得。
正则化模型
标签之间的局部交互采用Potts模型。后验分布 P(X \mid Y) 是吉布斯分布,其局部条件能量为:
第一项 \log \sigma_{x_s} 来自高斯分布的归一化常数,当各类别方差不同时需要考虑。第二项是数据附着项,度量观测值与类别均值的偏离。第三项是正则化项,\Delta(x_s, x_r) 是指示函数,当 x_s \neq x_r 时取1,否则取0。
优化方法
MAP估计 \hat{x} 可以通过两种方法求解。模拟退火使用随机初始化,能够找到全局最优但速度较慢。ICM使用似然估计作为初始化(逐像素最大似然分类的结果),收敛快但只能找到局部最优。
分割结果
分割结果图使用伪彩色显示不同组织类别:背景(黑色)、皮肤/头皮(蓝色)、灰质(绿色)、白质(黄色/红色)、脑脊液/脑室(品红色)。MRF正则化确保了分割区域的空间连续性,边界平滑且符合解剖结构。
Potts模型的势能矩阵
对于多类分割,可以定义更一般的Potts模型,用矩阵表示不同标签对之间的交互强度。以三类问题(\phi、MG、MB)为例,势能矩阵为:
| \phi | MG | MB | |
|---|---|---|---|
| \phi | 0 | \beta | \beta |
| MG | \beta | 0 | \beta' |
| MB | \beta | \beta' | 0 |
对角元素为0表示相同标签不产生能量惩罚。非对角元素可以不同,例如 \beta' \neq \beta 允许灰质-白质边界的惩罚与其他边界不同,这可以编码解剖先验知识(如灰质和白质相邻是正常的)。
遥感图像分割
问题背景
遥感图像(如合成孔径雷达SAR图像)具有不同于光学图像的噪声特性。SAR图像受到相干斑噪声的影响,这是一种乘性噪声,导致灰度分布不再是高斯分布。图像显示的是一幅SAR图像,其中可以看到农田、道路、建筑等不同地物类型。
似然模型
仍然假设条件独立性:
但单像素似然采用Gamma分布而非高斯分布。对于类别 x_s,似然函数为:
其中 L 是视数(number of looks),表示成像过程中的多视平均次数,L 越大噪声越小。\mu_{x_s} 是类别 x_s 的平均反射率参数。\Gamma(L) 是Gamma函数。这个分布也称为Nakagami-Rayleigh分布,是SAR强度图像的标准统计模型。
正则化模型
标签之间的局部交互仍然采用Potts模型,与脑成像问题相同。
后验分布
后验分布是吉布斯分布,局部条件能量为:
第一项 L\frac{y_s^2}{\mu_{x_s}} 是Gamma分布似然的负对数的主要部分,度量观测值与类别平均反射率的匹配程度。第二项 -\log \mu_{x_s} 来自归一化常数。第三项是Potts正则化项。
优化方法
同样可以使用模拟退火或ICM算法求解MAP估计。由于SAR图像噪声较强,正则化项的作用更加明显,\beta 参数的选择对结果影响较大。
遥感图像分割结果
分割结果图使用伪彩色显示不同地物类别。图像中可以清晰区分出农田(绿色调)、城市建筑区(亮色块状区域)、道路(线状结构)等不同地物类型。MRF正则化使得分割结果保持了空间连续性,同类地物形成连通区域,边界清晰且符合实际地物分布特征。
多源数据融合分割
问题设定
在遥感应用中,常常有多个传感器或多个波段的数据可用。设 K 为通道(数据源)数量,每个像素的观测是一个属性向量:
其中 Y^k 表示第 k 个通道的观测图像。标签空间包含 M 个类别:
多源似然模型
假设给定标签后,各像素独立且各通道条件独立。似然函数可以逐层分解:
进一步假设给定标签后各通道独立:
取负对数后,数据附着项变为各通道贡献之和:
这意味着多源数据的信息可以通过简单求和来融合。
置信系数
不同数据源对不同类别的区分能力可能不同。引入置信系数(可靠性系数)C_{(k,\lambda)} 来描述第 k 个数据源对类别 \lambda 的可靠程度。加权后的数据附着项为:
归一化因子 \frac{1}{\sum_k C_{(k,\lambda)}} 确保总权重为1。
似然函数的形式
单通道似然 V(y_s^k \mid \lambda) 可以采用分段线性函数的形式。这种函数在某个区间内取较低值(表示观测值与类别匹配良好),在区间外随着偏离程度线性增加。
分段线性似然的参数可以通过两种方式确定。第一种是监督定义,通过分析训练样本的直方图,手动设置阈值来定义各类别的灰度范围。第二种是自动定义,使用直方图多尺度分析等方法自动确定分段点。
置信系数的设置
置信系数 C_{(k,\lambda)} 描述传感器 k 对类别 \lambda 的判别能力,取值范围通常为 [0, 1]:
当 C_{(k,\lambda)} = 0 时,表示传感器 k 对类别 \lambda 没有区分能力,该通道的信息在判断类别 \lambda 时被完全忽略。当 C_{(k,\lambda)} = 0.5 时,表示传感器 k 对类别 \lambda 具有中等可靠性。当 C_{(k,\lambda)} = 1 时,表示传感器 k 对类别 \lambda 完全可靠,该通道的信息被充分利用。
这种机制允许根据先验知识灵活地组合多源信息,例如光学图像可能对植被分类更可靠,而SAR图像对水体检测更可靠。
上下文项与类别邻接约束
马尔可夫标签场
标签场的先验仍然采用MRF模型,能量函数为:
类别邻接先验
在某些应用中,存在关于类别之间能否相邻的先验知识。这种知识可以通过邻接矩阵 (\gamma(\lambda_i, \lambda_j))_{i,j \in \{1,\ldots,M\}} 来编码,其中 \gamma(\lambda_i, \lambda_j) 表示类别 \lambda_i 和 \lambda_j 相邻时的能量惩罚。
正则化势能定义为:
通过设置不同的 \gamma 值可以表达不同类型的邻接约束。禁止邻接表示某两个类别在物理上不可能相邻,设置 \gamma(\lambda_1, \lambda_3) = +\infty,这使得任何包含此类邻接的配置概率为零。有利邻接表示某两个类别相邻是正常或期望的,设置 \gamma(\lambda_1, \lambda_2) = 0,不产生额外惩罚。一般情况下,\gamma 取有限正值表示一定程度的惩罚,值越大惩罚越重。
参数选择
模型中的参数(如正则化强度 \beta、置信系数等)需要合理选择。常用方法包括比较不同配置下的局部能量来判断参数是否合理,以及使用L曲线方法在数据保真度和正则化强度之间寻找平衡点。L曲线绘制数据项与正则化项的关系,曲线的拐点通常对应最优的参数选择。
多光谱冰区标注实例
AVHRR(高级甚高分辨率辐射计)是NOAA卫星上的多光谱成像仪,用于监测地球表面。图像展示了利用多通道数据进行冰区分类的实例。通道1和通道3提供不同波段的观测信息,各通道对不同地物(冰、水、云等)的响应特性不同。通过融合多通道信息并应用MRF分割方法,得到的标注结果(右图)将区域划分为不同类别:蓝色表示开阔水域,红色和白色表示不同类型的冰盖,绿色可能表示混合区或特定冰况。多源融合方法有效利用了各通道的互补信息,提高了分类精度。
图像复原问题
问题框架
图像复原与图像标注的框架相似,但状态空间不同。原始场景 x(清晰图像)经过退化、检测和测量过程后得到观测 y(退化图像):
观测过程由条件概率 \Pr(Y = y \mid X = x) 描述。在复原问题中,x 和 y 都是灰度图像,属于同一状态空间。
加性高斯白噪声模型
最简单的退化模型是加性高斯白噪声(AWGN):
逐像素写为:
其中噪声 \epsilon_s 独立同分布,服从零均值高斯分布:
参数 \sigma^2 是噪声方差,表示噪声强度。
在此模型下,似然函数为:
这是因为给定 x_s 后,y_s = x_s + \epsilon_s 服从均值为 x_s、方差为 \sigma^2 的高斯分布。
带卷积的退化模型
更一般的退化模型包含模糊(卷积)和噪声:
逐像素写为:
其中 h_{rs} 是点扩散函数(PSF)在位置 (r, s) 的值,描述像素 r 对观测位置 s 的贡献。噪声仍然服从 \epsilon_s \sim \mathcal{N}(0, \sigma^2)。
常见的模糊核包括均匀模糊(矩形窗函数,在半径 R 内取常数值)和高斯模糊(高斯函数,由标准差 \sigma_c 控制宽度)。
高斯噪声下的图像去噪
似然函数
对于纯加性高斯噪声(无模糊),似然函数为:
正则化先验
解的正则性通过MRF先验来保证。先验分布具有吉布斯形式:
其中 \Phi(x_r, x_s) 是势函数,度量相邻像素之间的差异。\beta > 0 控制正则化强度。
后验分布
后验分布也是吉布斯分布:
后验能量函数为:
第一项是数据附着项,惩罚复原图像与观测图像的偏离。第二项是正则化项,惩罚相邻像素之间的不连续性。
MAP估计
MAP估计等价于最小化后验能量:
正则化函数的选择
正则化势函数通常只依赖于相邻像素的差值:
其中 u = x_r - x_s 是像素差。两种典型选择是Potts模型(卡通模型),定义为 V_c(x_s, x_t) = \beta \Delta(x_s, x_t),当 x_s \neq x_t 时取 \beta,否则取0,这种模型保持分段常数结构,适合卡通风格图像。另一种是Tikhonov正则化,定义为 V_c(x_s, x_t) = \beta(x_s - x_t)^2,即二次惩罚函数,这种模型鼓励平滑变化,对应高斯MRF,得到的解是平滑的。
二次正则化(Tikhonov)的优点是后验能量是凸的,可以用线性方法求解,但它会过度平滑边缘。非二次正则化可以更好地保持边缘,但优化更加困难。
正则化函数的选择
二次正则化
高斯场(Tikhonov正则化)采用二次势函数:
这种正则化对均匀区域效果良好,能够有效抑制噪声,产生平滑的复原结果。但其主要缺点是边缘模糊:由于二次惩罚对所有差异都施加惩罚,无论差异来自噪声还是真实边缘,因此边缘在复原过程中会被平滑掉。
在不连续处抑制正则化
为了在保持平滑区域的同时保护边缘,需要在不连续处抑制正则化项。两种实现思路是使用截断二次函数(将二次惩罚限制在某个最大值)和引入线过程(显式建模边缘位置)。
考虑不连续性的复原
线过程的引入
线过程 B = (B_{st}) 是定义在像素对之间的二值随机场,用于指示边缘位置。对于相邻像素对 (s, t),线变量定义为:
在图像网格上,线变量位于相邻像素之间的边上,形成对偶网格。当 b_{st} = 1 时,表示像素 s 和 t 属于不同区域,它们之间的差异不应被正则化惩罚。
联合后验分布
引入线过程后,需要同时估计灰度场 X 和线场 B。联合后验分布为:
似然项 P(Y \mid X) 只依赖于灰度场,与线场无关(噪声模型不涉及边缘)。先验 P(X, B) 联合建模灰度场和线场的关系。
联合先验能量
联合先验的能量函数为:
这个能量包含两项。第一项 (1 - b_{st})(x_s - x_t)^2 是条件正则化项:当 b_{st} = 0(无边缘)时,相邻像素差异受到二次惩罚;当 b_{st} = 1(有边缘)时,惩罚项被关闭,允许像素值跳变。第二项 \gamma b_{st} 是边缘代价:每条边缘都有固定代价 \gamma,防止过多边缘出现。参数 \gamma 控制边缘检测的灵敏度。
联合优化与等价模型
能量最小化
目标是联合最小化 (x, b) 上的能量:
对于固定的像素差 u = x_s - x_t,关于 b_{st} 的最小化可以解析求解:
当 (x_s - x_t)^2 < \gamma 时,b_{st} = 0 最优(不设边缘);当 (x_s - x_t)^2 > \gamma 时,b_{st} = 1 最优(设置边缘)。
等价的显式模型
将线过程边缘化后,联合能量最小化等价于只关于 x 的最小化:
其中等效势函数为:
这建立了显式线过程模型与隐式截断势函数模型之间的等价关系,称为弱膜模型(weak membrane model)。
边缘保持正则化函数
经典正则化函数
多种正则化函数被提出用于边缘保持复原。Geman和McClure(1985)提出:
这个函数对小差异近似二次,对大差异趋于常数,从而限制了对大差异的惩罚。
Hebert和Leahy(1989)提出:
这是对数形式的边缘保持函数。
Charbonnier(1994)提出:
这是双曲线形式,也称为伪Huber函数。
正则化函数的条件
良好的边缘保持正则化函数 \phi 应满足三个条件。
条件一:
这保证在小差异处 \phi(u) \approx u^2,即对平滑区域的噪声进行二次惩罚,与Tikhonov正则化行为一致。
条件二:
这保证对大差异的惩罚增长速度远慢于二次函数,从而保护边缘不被过度平滑。
条件三:
这保证从二次行为到边缘保持行为的平滑过渡,避免数值优化中的不稳定性。
满足这些条件的正则化函数在小尺度上表现为二次正则化(抑制噪声),在大尺度上表现为截断正则化(保护边缘),实现了去噪和边缘保持的平衡。
正则化函数与线过程的等价定理
定理陈述
设 \phi: [0, +\infty[ \to [0, +\infty[ 是一个函数,且 \phi(\sqrt{u}) 在 ]0, +\infty[ 上严格凹。定义:
则存在严格凸且递减的函数 \psi: [L, M] \mapsto [\alpha, \beta],使得:
其中边界参数定义为:
对于任意 u,下确界在唯一的 b_u 处达到:
这个定理建立了隐式正则化函数 \phi 与显式线过程模型之间的精确数学等价关系。通过引入辅助变量 b(对应线过程),非凸的 \phi 函数可以表示为关于 b 的凸优化问题。
Geman-Reynolds势函数
函数形式
Geman和Reynolds提出的势函数为:
这个函数从 u = 0 处的 -\beta 单调增加到 u \to \infty 时的 0。
参数含义
参数 \beta 控制势函数的范围(range),即函数值从最小到最大的变化幅度,决定了正则化的整体强度。参数 \delta 控制势函数的振幅(amplitude),即函数从二次行为过渡到饱和行为的尺度,决定了什么程度的差异被视为边缘。
当 |u| \ll \delta 时,函数近似二次,对小差异进行平滑;当 |u| \gg \delta 时,函数趋于常数,不再增加惩罚,从而保护边缘。通过调节 \beta 和 \delta 可以控制正则化的效果。
隐式与显式模型的等价性
为了保持不连续性,最小化以下两种表达式是严格等价的。
显式线过程表达式
第一项是数据附着项。第二项是加权正则化项,权重 b_{rs} 由线过程控制:b_{rs} 小时正则化弱(允许边缘),b_{rs} 大时正则化强(强制平滑)。第三项是线过程的先验,\psi(b_{rs}) 对极端的 b 值施加惩罚。
隐式 \phi 函数表达式
这里线过程被边缘化掉,直接用非凸的 \phi 函数作为正则化项。
等价线过程的恢复
给定隐式模型的解 x,等价的线过程变量可以通过以下公式恢复:
这个公式给出了每对相邻像素之间的有效边缘强度。当像素差 |x_s - x_r| 很小时,b_{rs} \approx 1(强正则化);当像素差很大时,b_{rs} \approx 0(弱正则化,即边缘)。
最小化算法
GNC算法
GNC(Graduated Non-Convexity,渐进非凸)由Blake和Zisserman提出。其原理是将非凸能量函数用凸函数近似,然后逐步修改使其趋向原始非凸函数。算法从凸近似的全局最优开始,随着非凸性的引入逐步调整解。GNC是确定性算法,在某些情况下有收敛性证明。
MFA算法
MFA(Mean Field Annealing,平均场退火)使用显式线过程模型。该方法结合温度下降策略和平均场近似:用线变量的期望值替代随机变量本身,得到确定性的迭代方程。算法交替进行线过程估计和灰度场估计,温度逐渐下降使解趋于稳定。
Artur-Legend算法
这是另一种使用显式线过程的方法。首先根据当前灰度场用解析公式计算线过程(闭式表达式),然后固定线过程,用梯度下降法更新灰度场估计。两步交替迭代直到收敛。这种方法利用了线过程可以解析求解的性质,简化了优化过程。
MRF与图模型
图模型表示独立性
图模型是用图结构来表示随机变量之间统计依赖关系的工具。在图模型中,节点代表随机变量,边代表变量之间的概率交互关系。如果两个变量之间没有边相连,意味着在给定其他变量的条件下它们是条件独立的。
图模型的复杂度介于两个极端之间。完全独立的情况下,所有变量 u_1, u_2, u_3, \ldots, u_n 相互独立,图中没有任何边,联合分布完全分解为边缘分布的乘积。完全依赖的情况下,任意两个变量都直接相关,图是完全图(任意两点之间都有边),无法进行因子分解简化。MRF介于这两者之间,变量之间存在局部依赖关系,图中只有邻居之间有边相连,这种稀疏的图结构使得联合分布可以分解为局部因子的乘积。
因子图
因子图是另一种表示概率分布分解结构的图模型。它包含两类节点:变量节点(圆形,表示随机变量 u_i)和因子节点(方形,表示因子函数 f_k)。变量节点和因子节点之间的边表示该变量参与该因子的计算。
因子图明确展示了联合分布如何分解为多个局部因子的乘积,每个因子只涉及一组变量。这种表示对于设计高效的推断算法(如置信传播)特别有用。
MRF的图模型表示
分布的因子分解
MRF的核心特性是其联合分布可以分解为团势函数的乘积。随机变量之间的统计依赖关系通过这种因子分解来刻画:
其中 \psi_c(x_s, s \in c) = \exp(-V_c(x)) 是团 c 上的势函数,Z 是配分函数。
图结构与团分解
MRF的无向图结构直接反映了其因子分解形式。图中的节点对应随机变量 u_1, u_2, \ldots, u_n,边连接具有直接依赖关系的变量对。图的团(完全子图)对应因子分解中的各个因子。
例如,一个包含变量 u_1, u_2, u_3, u_n 的MRF图可以分解为多种团:单点团 \{u_1\}, \{u_2\}, \ldots;二阶团如 \{u_1, u_2\}, \{u_1, u_3\}, \ldots;高阶团如 \{u_1, u_2, u_3\}。联合分布是所有这些团上势函数的乘积。这种分解将高维联合分布表示为低维局部函数的组合,是MRF计算可行性的基础。
条件随机场
判别式随机场
条件随机场(Conditional Random Field,CRF)是MRF的一个重要变体,也称为判别式随机场。与传统MRF建模联合分布 P(X) 不同,CRF直接建模条件分布(后验分布)P(X \mid Y)。
在图模型表示中,CRF包含两类节点:白色圆圈表示待估计的参数(标签变量 u_i),黑色圆圈表示观测变量 v_j。标签变量之间的边表示它们的空间依赖关系,标签变量与观测变量之间的虚线表示观测如何影响标签的条件分布。
后验场的直接建模
CRF直接将后验分布建模为吉布斯形式:
与传统贝叶斯方法(分别建模先验 P(X) 和似然 P(Y \mid X),再通过贝叶斯公式得到后验)不同,CRF直接参数化后验分布。这种方法的优势在于可以避免对观测分布 P(Y) 建模,后者在高维情况下往往很困难。
势函数的特点
CRF的团势函数 V_c(x, y) 可以同时依赖于标签变量 x 和观测变量 y。观测 y 作为外部场(external field)影响标签的条件分布,但 y 本身被视为给定的,不需要对其概率分布建模。
监督学习框架
CRF通常在监督学习框架下使用。给定标注的训练数据 \{(x^{(i)}, y^{(i)})\},通过最大化条件对数似然来学习势函数的参数。势函数通常分为两类:一元势函数 V_c(x_s, y) 描述单个标签与整个观测的关系,可以使用分类器(如逻辑回归)来参数化;二元势函数 V_c(x_s, x_t, y) 描述相邻标签之间的关系,也可以依赖于观测(如根据局部图像特征调整平滑强度)。这种数据驱动的方法使CRF能够从训练数据中自动学习合适的势函数形式,而不需要手工设计。
马尔可夫随机场与图割优化
本图片的核心主题是马尔可夫随机场(Markov Random Fields, MRF)以及图割(Graph-cut)优化方法,由 Telecom Paris 的 Florence Tupin 讲授。这两个概念在图像处理领域紧密相连:MRF 提供了一种对图像进行概率建模的数学框架,而图割则是求解 MRF 优化问题的一种高效算法。整个图片将围绕如何用概率模型描述图像、如何定义能量函数、以及如何高效地求解这个优化问题展开。
历史背景与发展脉络
马尔可夫随机场的概念最早并非来自图像处理,而是源于统计物理学。在统计物理中,研究晶体结构时需要描述晶格上各个原子之间的相互作用关系——每个原子的状态(比如自旋方向)会受到其相邻原子状态的影响。这种局部相互作用的思想后来被引入到图像分析中,因为图像中的像素也具有类似的性质:一个像素的取值往往与它周围邻居像素的取值高度相关。
1984 年,Geman 兄弟(Stuart Geman 和 Donald Geman)发表了一篇开创性的论文,首次系统地将 MRF 引入图像处理领域,并提出了用 Gibbs 采样(一种随机模拟方法)来求解 MRF 模型的方案。这篇论文奠定了 MRF 在图像分析中的理论基础。然而,由于当时的优化算法效率较低(随机采样方法收敛速度慢),MRF 在实际应用中受到了限制。直到 2000 年左右,研究者发现图割算法可以高效地求解某些类型的 MRF 能量最小化问题,使得 MRF 模型在实际应用中变得可行,从而重新激发了学术界对 MRF 的兴趣。
MRF 的核心思想
MRF 的基本原理可以概括为一句话:在图像处理中引入上下文关系(contextual relationship),并且只需要局部邻域(local neighborhood)就足够了。
具体来说,传统的逐像素处理方法把每个像素看作独立的个体,单独对其进行分类或估计。但现实中,图像具有很强的空间连续性——如果一个像素属于天空区域,那么它的邻居像素大概率也属于天空。MRF 正是利用了这种空间上下文信息:它不再孤立地看待每个像素,而是同时考虑像素本身的观测值和它与邻居像素之间的关系。而马尔可夫性质保证了这种依赖关系只需要在局部邻域内考虑即可,不需要考虑整幅图像中所有像素之间的关系,这大大降低了建模和计算的复杂度。
自然图像的先验模型与空间上下文
图片通过一张港口船只的自然图像来说明空间上下文的含义。在自然图像中,像素之间存在强烈的空间相关性:相邻像素往往具有相似的灰度值或颜色,只有在物体边缘处才会出现剧烈变化。这种空间规律性就是所谓的先验知识(prior model)。MRF 模型的作用就是把这种先验知识用数学语言形式化,使得算法在处理图像时能够利用这种空间上下文信息。
去噪实例:脉冲噪声与全变分方法
图片展示了一个图像去噪的实际案例(来自 Darbon 和 Sigelle 的工作)。左边是一张被脉冲噪声(impulsive noise)严重污染的图像——脉冲噪声的特点是随机地将某些像素的值替换为极端值(全黑或全白),导致图像中出现大量的椒盐点,几乎无法辨认原始内容。右边是使用全变分(Total Variation, TV)方法进行去噪后的结果,可以看到人脸的结构被很好地恢复出来。
全变分方法的核心思想与 MRF 的先验模型一脉相承:它假设自然图像在大部分区域是平滑的(相邻像素值变化小),只在边缘处有跳变。TV 正则化通过最小化图像梯度的总变分来实现去噪,同时保持边缘不被模糊。这个例子直观地展示了引入空间上下文信息(即利用邻域像素关系)对图像处理任务的帮助——如果只看单个像素,根本无法区分噪声和信号;但一旦考虑了邻域关系,就可以有效地将噪声去除。
图割优化的典型应用场景
目标选取
Rother、Kolmogorov 和 Blake 的工作展示了基于图割的交互式目标选取方法(即 GrabCut 算法)。用户只需在图像上用一个矩形框粗略地框选出感兴趣的物体(例如花朵或人脸),算法就能自动将前景物体从背景中精确分离出来。这个过程的本质是一个二值标注问题:每个像素要么属于前景,要么属于背景。算法通过建立一个 MRF 模型,同时考虑每个像素自身的颜色特征(判断它更像前景还是背景)以及相邻像素之间的一致性约束(相邻像素倾向于属于同一类别),然后用图割算法求解这个能量最小化问题,最终得到一条精确的前景-背景分割边界。
数字拼接
Rother 等人的另一项工作展示了数字拼接(digital tapestry)技术。给定多张不同场景的源图像,算法能够将它们无缝拼合成一张新的合成图像。下方的结果图中,左侧合成图将多张照片中的不同元素(树木、人物、风景)融合在一起,右侧合成图则将骑马的人物与冰川瀑布的背景拼合。这个任务的核心挑战在于如何选择每张源图像的哪些区域参与合成,以及如何让拼接缝处过渡自然。图割算法在这里的作用是找到最优的拼接边界,使得不同来源图像之间的过渡尽可能不可察觉。
图像修复
Allène 和 Paragios 的工作展示了图像修复(inpainting)的应用。用户在图像中标记出需要移除的区域(例如图中用红色标记的部分),算法自动用周围的纹理和结构信息填补这些空缺区域,使修复后的图像看起来自然完整。修复后的结果中,被标记的区域已经被合理地填充,几乎看不出修补的痕迹。这同样可以被建模为一个 MRF 优化问题:需要为缺失区域的每个像素找到最合适的填充值,使其既与周围已有像素保持一致(空间先验),又符合图像整体的纹理统计特征。
以上三个应用——目标选取、数字拼接、图像修复——都属于图像标注或图像优化问题,它们的共同特点是都可以被统一地建模为 MRF 框架下的能量最小化问题,并通过图割算法高效求解。
图片结构概览
整个图片分为两大部分。第一部分是贝叶斯分析与马尔可夫模型,解决的是建模问题:如何用概率语言描述图像,如何定义先验和似然。第二部分是优化方法,解决的是求解问题:给定 MRF 模型后,如何找到最优的标注结果,其中图割算法是核心内容。
图像概率模型的基本符号
在正式进入理论之前,需要先建立一套统一的数学符号体系。
集合 S = \{s\} \subset \mathbf{Z}^d 表示图像中所有像素位置的集合,称为站点集(set of sites)。这里 \mathbf{Z}^d 是 d 维整数空间,对于二维图像来说 d=2,即每个站点 s 对应一个二维整数坐标 (i, j),S 是一个有限集合,包含图像中所有像素的位置。
每个站点 s 上的像素取值 x_s 属于一个灰度空间 E。如果是标准的 8 位灰度图像,E = \{0..255\};如果是标注问题(分类问题),E = \{0..q-1\},其中 q 是类别数量;在更一般的情况下 E 也可以是连续的实数集 \mathbb{R}。
对于每个站点 s,定义一个随机变量 X_s,它描述了站点 s 上像素值的不确定性。将所有站点上的随机变量组合在一起,就得到一个随机场 X = \{X_s\}_{s \in S},它是定义在整个图像网格上的随机变量族。随机场的一个具体取值 x = \{x_s\}_{s \in S} 称为一个配置(configuration),它对应一幅完整的图像——即给每个像素都赋予了一个具体的灰度值或标签。所有可能配置的集合记为 \Omega = E^{|S|},其含义是每个站点都可以独立取 E 中的任意值,因此总的配置空间大小是 |E| 的 |S| 次方,这是一个极其庞大的空间。
概率定义
在这个符号体系下,可以定义三个层次的概率。P(X_s = x_s) 是局部概率,描述单个像素取某个值的概率。P(X = x) = P(X_1 = x_1, X_2 = x_2, \ldots, X_s = x_s, \ldots) 是全局联合概率,描述整幅图像取某个特定配置的概率,它同时刻画了所有像素之间的统计依赖关系。P(X_s = x_s | X_t = x_t, t \neq s) 是局部条件概率,描述在已知所有其他像素取值的条件下,像素 s 取某个值的概率。马尔可夫随机场的核心性质将体现在这个条件概率上——它会大大简化所需考虑的条件集合。
贝叶斯分析与图像处理
观测的获取过程
在图像处理的贝叶斯框架中,存在两个层次的变量。x 代表原始场景(original scene),即我们真正想要恢复或估计的目标,例如一幅无噪声的干净图像或每个像素的真实类别标签。y 代表观测(observation),即我们实际获得的数据。从 x 到 y 的过程中,经历了退化、检测和测量等环节——传感器引入噪声、光学系统产生模糊、采样过程带来量化误差等。因此 y 是 x 的一个不完美的、被损坏的版本。整个图像处理的目标就是从 y 出发,尽可能准确地恢复 x。
最大后验概率准则
贝叶斯框架下,恢复 x 的核心工具是后验概率 P(X|Y),它表示在观测到 y 的条件下,x 取各种可能值的概率分布。根据贝叶斯定理:
这个公式将后验概率分解为两个部分。P(Y|X) 是似然项,也称为数据附着项(data attachment term),它描述了在给定真实场景 x 的条件下,观测到 y 的概率,本质上刻画的是从 x 到 y 的退化过程(噪声模型)。P(X) 是先验项,它编码了我们对真实场景 x 的先验知识,例如自然图像是空间平滑的、边缘是稀疏的等,起到正则化(regularization)的作用。
最大后验概率(MAP)准则就是选择使后验概率 P(X|Y) 最大的那个 x 作为最终的估计结果。由于后验正比于似然乘以先验,MAP 估计实际上是在数据拟合(似然项要求估计结果与观测一致)和先验约束(先验项要求估计结果符合我们的先验知识)之间寻找平衡。如果只最大化似然而忽略先验,结果会过度拟合噪声;如果先验过强,结果会过度平滑而丢失细节。MAP 准则通过两者的乘积来实现这种平衡。
能量函数的构建
观测过程的似然建模
在贝叶斯框架中,似然项 P(Y=y|X=x) 描述的是观测过程。这里做了一个关键的条件独立性假设:给定真实场景 x 后,各个站点的观测值 y_s 是相互独立的。这意味着每个像素处的噪声是独立产生的,不受其他像素噪声的影响。在这个假设下,联合似然可以分解为各站点似然的乘积:
第一个等号表示条件独立性分解,第二个等号则进一步假设每个站点的观测 y_s 只依赖于该站点自身的真实值 x_s,而不依赖于其他站点的真实值。这在物理上对应着逐像素独立退化的噪声模型,例如加性高斯白噪声就满足这一假设。
先验模型与 Hammersley-Clifford 定理
先验项 P(X) 编码了对解的期望性质。自然图像中,相邻像素之间存在强相关性(空间规律性),因此先验模型需要刻画站点与其邻居之间的相互作用关系。将 X 建模为马尔可夫随机场,就意味着每个站点的条件概率只依赖于其局部邻域,而非整个图像。
Hammersley-Clifford 定理建立了马尔可夫随机场与 Gibbs 分布之间的等价关系:一个正概率的随机场是 MRF,当且仅当它服从 Gibbs 分布。Gibbs 分布的形式为:
其中 Z 是归一化常数(配分函数),保证所有配置的概率之和为 1。U(x) 是全局能量函数,它将一个配置映射到一个实数值——能量越低的配置概率越高,能量越高的配置概率越低。全局能量函数可以分解为团势函数(clique potentials)之和:
其中 \mathcal{C} 是所有团(clique)的集合。团是指图中相互都是邻居的站点子集。U_c(x) = U_c(x_s, \ s \in c) 表示团 c 上的势函数,它只依赖于团 c 内站点的取值。这种分解结构体现了 MRF 的局部性:全局能量是所有局部交互的累加,每个局部交互只涉及少数几个相邻站点。对于最常见的成对 MRF(pairwise MRF),团只包含单个站点和相邻站点对,因此能量分解为单站点项和成对交互项之和。
后验分布的能量形式
将 Gibbs 分布的先验和条件独立的似然代入贝叶斯公式 P(X|Y) \propto P(Y|X)P(X),后验分布本身也是一个 Gibbs 分布:
其中后验能量 \mathcal{U}(x|y) 由两部分构成。将似然的乘积取对数后变为求和,再加上先验能量 U(x):
这个能量函数可以进一步整理为更紧凑的形式:
第一项 \sum_{s \in S} V_c(y_s | x_s) 是数据项(data term),对应每个站点上似然的负对数,衡量估计值 x_s 与观测值 y_s 之间的匹配程度。第二项 \sum_{\{s,t\}} V_c(x_s, x_t) 是正则化项(regularization term),来自先验模型,衡量相邻站点 s 和 t 的取值之间是否满足先验期望的关系(如平滑性)。这两项的平衡决定了最终结果在数据忠实度与空间规律性之间的折中。
由于 Gibbs 分布中指数函数的单调性,最大化后验概率等价于最小化后验能量:
这个等价关系将概率推断问题转化为能量最小化(组合优化)问题,是后续所有优化算法的出发点。
马尔可夫模型的具体实例
分割与分类任务
在图像分割(classification)任务中,每个像素需要被赋予一个离散的类别标签。最简单的情形是二值分割,标签空间 E = \{0, 1\},对应 Ising 模型——这个模型直接借鉴自统计物理中描述铁磁材料自旋状态的 Ising 模型。推广到多类别分割,标签空间变为 E = \{0, ..., K\},对应 Potts 模型。Potts 模型的正则化势函数定义为:
其中 \delta(x_s \neq x_t) 是指示函数,当 x_s \neq x_t 时取值为 1,否则为 0;\beta > 0 是控制正则化强度的参数。这个势函数的含义是:如果相邻两个像素的标签不同,就会产生一个大小为 \beta 的能量惩罚;如果标签相同,则不产生惩罚。因此最小化总能量时,算法会倾向于让相邻像素拥有相同的标签,从而产生空间上连续的分割区域。\beta 越大,正则化越强,分割结果越平滑;\beta 越小,结果越忠实于数据但可能出现更多噪声碎片。
图像恢复任务
在图像恢复(restoration)任务中,标签空间是连续的(灰度值或实数值),正则化势函数的形式为 V_c(x_s, x_t) = \phi(x_s - x_t),即惩罚项是关于相邻像素差值的函数。不同的 \phi 函数选择对应不同的先验假设和恢复效果:
高斯模型(二次型)\phi(u) = u^2 对像素差值施加二次惩罚,等价于假设图像是高斯随机场。这个模型倾向于产生全局平滑的结果,但缺点是对大的差值(即边缘处)也施加了很重的惩罚,导致边缘被过度模糊。
Geman 和 McClure(1985)提出 \phi(u) = \frac{u^2}{1 + u^2},这是一个非凸函数。当 |u| 较小时,\phi(u) \approx u^2,行为类似高斯模型,鼓励平滑;但当 |u| 很大时,\phi(u) 趋近于 1,惩罚不再继续增长。这意味着大的像素差值(对应边缘)不会被过度惩罚,从而允许边缘的存在,即实现了边缘保持(edge-preserving)效果。
Hebert 和 Leahy(1989)提出 \phi(u) = \log(1 + u^2),其思想与 Geman-McClure 类似,也是一个增长速度逐渐减缓的函数,对大差值的惩罚增长非常缓慢,从而保持边缘。
Charbonnier(1994)提出 \phi(u) = 2\sqrt{1 + u^2} - 2,这是一个凸函数,在保持一定边缘保持能力的同时保留了凸性,使得优化问题更容易求解。
全变分(TV)模型 \phi(u) = |u| 对差值施加绝对值惩罚(L_1 范数)。与二次惩罚相比,L_1 惩罚对大差值的增长速度更慢(线性而非二次),因此更能容忍边缘跳变。同时 TV 是凸函数,优化问题有唯一全局最优解。TV 模型在实际应用中非常流行,正是前面去噪示例中使用的方法。
这些不同的 \phi 函数构成了一个从完全平滑(高斯)到边缘保持(Geman-McClure、TV 等)的谱系,使用者可以根据具体任务的需求选择合适的先验模型。
优化方法的困难与选择
到此完成了建模部分,进入优化部分。核心问题是:给定后验能量 \mathcal{U}(x|y),如何在庞大的配置空间 \Omega 中找到使能量最小的配置 x。配置空间的规模为 Card(\Lambda)^{(np \times nl)},即标签数的像素总数次方。对于一幅 256 \times 256 的二值图像,可能的配置数量就是 2^{65536},穷举搜索完全不可行。
模拟退火
Geman 兄弟在 1984 年提出的模拟退火(Simulated Annealing)是一种迭代随机算法。它借鉴了金属冶炼中缓慢冷却使晶体达到最低能量状态的物理过程,通过反复进行 Gibbs 采样并逐渐降低温度参数来探索配置空间。在高温时,算法接受能量增加的跳转,有利于跳出局部极小;随着温度降低,算法越来越倾向于只接受能量降低的跳转,最终收敛到全局最小值。模拟退火在理论上能够找到全局最优解,但收敛速度很慢,需要大量的 Gibbs 采样迭代,计算开销很大。
迭代条件模式
ICM(Iterated Conditional Modes)是一种确定性的贪心算法。它在每一步中固定所有其他像素的值,只优化当前像素的标签选择,使局部条件能量最小,然后逐像素扫描整幅图像,反复迭代直到收敛。ICM 速度很快,但只能找到局部最小值,而且最终结果对初始化很敏感——不同的初始标注可能导致完全不同的局部最优解。
图中最小割
图割方法(minimum cut in a graph)同时兼具了速度快和全局最优两个优势。通过将能量最小化问题等价地转化为图论中的最小割/最大流问题,可以用多项式时间的算法找到全局最优解。但这一方法有一个限制条件:它只适用于一类受限的能量函数(restricted class of energies),并非所有形式的 MRF 能量都能用图割精确求解。具体来说,对于二值标签问题且能量函数满足子模性(submodularity)条件时,图割可以保证找到精确的全局最优解。
图割优化方法的章节结构
图片的图割优化部分将按以下顺序展开:首先回顾图论的基本概念作为准备知识,然后讨论二值标签情形下的精确图割算法,接着介绍多标签情形下的近似图割算法,最后讨论某些特殊情形下的精确算法。
图论基础与割的概念
图的割
一个图 G = (X, E) 由节点集合 X 和边集合 E 组成。图的割(cut)是将节点集合 X 划分为两个不相交的子集 A 和 B,满足 A \cup B = X 且 A \cap B = \emptyset,即每个节点要么属于 A,要么属于 B,不存在遗漏或重叠。割的代价定义为所有跨越两个子集的边的权重之和:
其中 w(x, y) 是连接节点 x 和 y 的边的权重。直观来看,割就是在图中画一条分界线,将所有节点分成两组,而割的代价就是被这条分界线"切断"的所有边的权重总和。
在图片的示意图中,节点被分为 A(左侧蓝色圈)和 B(右侧)两部分,被切断的边权重分别为 14 ,这里需要注意,只有连接 A 中节点和 B 中节点的边才计入割的代价,A 内部或 B 内部的边不计入。
带终端节点的 s-t 割
在 MRF 能量最小化的图割方法中,使用的是一种特殊的割——s-t 割。在原有的图中添加两个特殊的终端节点:源点(source)s 和汇点(sink)t。s-t 割要求将所有节点划分为两个集合 S 和 T,其中 S 必须包含源点 s,T 必须包含汇点 t。割的代价同样定义为:
这里需要注意方向性:只计算从 S 到 T 方向的边权重。图片用两个例子对比说明了 s-t 割的定义。左图是一个合法的 s-t 割:源点 s 在 S 中,汇点 t 在 T 中,割的代价为 5(被切断的边权重之和为 2 + 3 = 5)。右图不是合法的 s-t 割,因为 s 和 t 被划分到了同一侧,违反了 s-t 割的基本要求。
最小割
在所有可能的 s-t 割中,代价最小的那个称为最小割(min-cut)。最小割对应着将图划分为两部分的最经济方式——切断的边权重总和最小。在图片中,最小割的代价 cap([S, T]) = 2 + 3 = 5,图中用红色线条标出了被切断的边。最小割之所以与 MRF 能量最小化相关,是因为后续会将 MRF 能量函数的各项编码为图中边的权重,使得找到最小割就等价于找到使能量最小的标注。
流与最大流
与割对偶的概念是流(flow)。在一个有向图中,流描述的是从源点 s 到汇点 t 的某种"运输"过程。流需要满足两个约束条件:第一,容量约束,即每条边上的流量不能超过该边的容量 flow(p, q) \leq w(p, q);第二,守恒约束,即对于除 s 和 t 之外的每个中间节点,流入的总流量必须等于流出的总流量(in-going flow = out-going flow),就像水流不能在中间节点处凭空产生或消失。最大流问题就是在满足这两个约束的前提下,找到从 s 到 t 的最大总流量。
图片给出了一个流的示例:每条边上标注的是"当前流量/容量"。例如某条边标注为 2/3,表示该边容量为 3,当前流经的流量为 2。可以验证每个中间节点的流入等于流出,且没有任何边的流量超过其容量。
最大流与最小割之间存在一个经典的对偶定理——最大流最小割定理(Max-flow Min-cut Theorem):从 s 到 t 的最大流量恰好等于最小 s-t 割的代价。这个定理的直觉是,最小割就是网络中的"瓶颈",它限制了从源到汇能够通过的最大流量。正是因为这个等价关系,求解最小割问题可以转化为求解最大流问题,而最大流问题存在高效的多项式时间算法(如 Ford-Fulkerson、push-relabel 等),使得图割方法在实际应用中非常高效。
最大流最小割定理与求解算法
最大流等于最小割
最大流最小割定理(MinCut = MaxFlow)是图割方法的理论基石。该定理表明:从源点 s 到汇点 t 的最大流的值,恰好等于最小 s-t 割的容量。换一种表述方式,最大流等于最小容量的割,而流的值等于割的代价。这个等价性的实际意义在于:我们不需要枚举所有可能的 s-t 割来寻找最小割,而是可以通过求解最大流问题来间接获得最小割。当最大流算法终止时,网络中的饱和边(流量等于容量的边)自然地定义了最小割的位置。
在图片中,最小割将图分为 S(包含源点 s 和下方节点)和 T(包含汇点 t 和上方节点),被切断的边权重分别为 2 和 3,因此 cap([S, T]) = 2 + 3 = 5,这也等于从 s 到 t 的最大流量。
Ford-Fulkerson 算法
Ford 和 Fulkerson 在 1962 年提出的算法是求解最大流问题的经典方法。该算法的核心思想基于两个概念:残差图(residual graph)和增广路径(shortest path / augmenting path)。残差图记录了每条边上还能额外通过多少流量——对于正向边,残余容量等于原始容量减去当前流量;同时还存在反向边,允许"撤回"已经发送的流量。算法不断在残差图中搜索从 s 到 t 的路径,沿路径增加流量,直到找不到新的增广路径为止。此时的流就是最大流。
Ford-Fulkerson 算法的时间复杂度为 O(nmc_{max}),其中 n 是节点数,m 是边数,c_{max} 是所有边中最大的容量值。由于复杂度与 c_{max} 相关,当边的容量取整数且数值很大时,算法可能较慢。
Push-Relabel 算法
Goldberg 和 Tarjan 提出的 Push-Relabel 算法采用了不同的策略。与 Ford-Fulkerson 在全局搜索增广路径不同,Push-Relabel 在局部操作:它允许中间节点暂时违反流守恒约束(即某个节点的流入量可以暂时大于流出量,产生"溢出"),然后通过 push(将溢出的流推向邻居节点)和 relabel(更新节点的高度标签以确定推送方向)两种操作逐步消除溢出,最终达到全局的流守恒。该算法的时间复杂度为 O(n^3) 或 O(n^2\sqrt{m}),不依赖于边的容量大小,因此在容量值很大时比 Ford-Fulkerson 更有优势。
面向图像处理的专用算法
Boykov 和 Kolmogorov 针对图像处理中图的特殊结构,设计了一种更高效的最大流算法。该算法的基本流程分为三步:首先,从两个终端节点 s 和 t 分别出发,各自生长一棵搜索树;然后,当两棵树相遇时,就找到了一条从 s 到 t 的增广路径;最后,沿增广路径推送流量,更新残差图,并重复上述过程直到两棵树无法再相遇。
这个算法之所以在图像处理中特别高效,是因为图像对应的图具有特殊的拓扑结构——节点排列在规则的网格上,每个节点只与少数几个邻居相连(例如四邻域或八邻域),边的数量相对于节点数量来说很少(稀疏图)。Boykov-Kolmogorov 算法充分利用了这种稀疏结构,在实际运行中远快于通用的最大流算法。相关的软件实现可以从 Kolmogorov 的网站获取。
图片接下来将进入图割优化的第二部分——二值标签情形(Binary case),即标签空间只有两个取值时,如何将 MRF 能量最小化问题精确地转化为图上的最小割问题。
二值情形与 Ising 模型的图割求解
Ising 模型的能量函数
Greig 等人在 1989 年首次展示了如何将二值标签的 MRF 能量最小化问题精确转化为图的最小割问题。在 Ising 模型中,每个像素只有两个可选标签:0(黑)和 1(白)。对应的能量函数为:
第一项 \sum_s \mathcal{D}(x_s, y_s) 是数据项,对应之前推导中的似然负对数 -\ln P(Y_s = y_s | X_s = x_s),衡量的是给像素 s 分配标签 x_s 时,该标签与观测值 y_s 之间的不匹配程度。第二项是 Ising 正则化项,使用 Potts 势函数 \beta \delta(x_s \neq x_t):当相邻像素 s 和 t 的标签不同时产生 \beta 的惩罚,标签相同时惩罚为 0。参数 \beta 控制正则化的强度——\beta 越大,越倾向于让相邻像素拥有相同标签,分割结果越平滑。
手写标注进一步说明了这个能量函数的结构:数据项部分对应数据附着(attache aux données),即 -\ln P(Y_s = y_s | X_s = x_s);正则化部分是 Ising 模型,其中 \beta 在 x_s \neq x_t 时取值为 \beta,在 x_s = x_t 时取值为 0(即 sinon,意为"否则")。
图的构建方法
将这个能量最小化问题转化为最小割问题的关键在于如何构建图。构建过程如下:
图中的普通节点对应图像中的所有像素 p。在此基础上添加两个终端节点:源点(source)代表标签 0,汇点(sink)代表标签 1。每个像素节点与两个终端节点之间各有一条边,同时相邻像素之间也有边相连。具体的边权重设置如下:
每个像素 p 与源点 s 之间的边权重为 w(p, s) = \mathcal{D}(0, y_p),即将像素 p 标记为 0 时的数据代价。每个像素 p 与汇点 t 之间的边权重为 w(p, t) = \mathcal{D}(1, y_p),即将像素 p 标记为 1 时的数据代价。对于四邻域连通的相邻像素对 p 和 q,它们之间的边权重为 w(p, q) = \beta。
这种边权重的设置使得图的最小割与 MRF 能量之间建立了精确的对应关系。
割与标注的等价性
理解这种对应关系的关键在于:当我们对图进行一次 s-t 割时,每个像素节点要么被分到源点 s 所在的集合 S(对应标签 0),要么被分到汇点 t 所在的集合 T(对应标签 1)。因此,一个 s-t 割天然地对应了一种像素标注方案(étiquetage)。
手写注释用一个具体的例子说明了这一点。考虑一行有 5 个像素(s, t, u, v, w),标注结果为 x = [0, 0, 1, 1, 1]。在对应的图中,源点(标签 0)在上方,汇点(标签 1)在下方,每个像素节点在中间一行。被切断的边(即割所经过的边)决定了能量的各项贡献:对于标签为 0 的像素(如 s 和 t),它们与汇点之间的边被切断,贡献 \mathcal{D}(y_s, 1) 等数据代价(这里需要注意,实际上标签为 0 的像素保留了与源点的连接,切断了与汇点的连接)。对于标签为 1 的像素,它们与源点之间的边被切断,贡献 \mathcal{D}(y_p, 0)。对于标签不同的相邻像素对(即标签从 0 变为 1 的边界处),它们之间的边被切断,贡献 \beta。
手写注释中给出的割的代价计算为:
这恰好等于 Ising 能量 U(x|y) 在标注 x = [0, 0, 1, 1, 1] 下的取值。因此 Cut = U(\text{étiquetage}),即割的代价等于对应标注的能量。由此可以得出结论:最小割(Min Cut)对应的就是使能量 U 取全局最小值的标注方案。标注问题(étiquetage)与割(Cut)之间存在一一对应关系,而最小割可以通过高效的最大流算法求解,从而实现了 Ising 模型的精确全局优化。
这里需要注意每个像素节点标签的确定方式:一个像素最终获得的标签,取决于它与哪个终端节点之间的边被切断。如果像素与源点(标签 0)之间的边被保留(即像素与源点在割的同一侧),则该像素被标记为 0;如果像素与汇点(标签 1)之间的边被保留,则被标记为 1。手写标注概括为:节点的标签等于被切断的弧所对应的标签(label du noeud = étiquette de l'arc coupé)。
一维与二维 Ising 模型的图构建全貌
图结构的可视化
图片通过两组图示展示了从一维到二维的图构建过程。
在左侧的一维示意图中,源点 S(标签 0)位于顶部,汇点 P(标签 1)位于底部,中间一行是像素节点。每个像素节点向上连接源点的边权重为 \mathcal{D}(0, y_i),向下连接汇点的边权重为 \mathcal{D}(1, y_i),相邻像素之间的边权重为 \beta。虚线表示被割切断的边(coupé),切断的位置决定了每个像素的标签归属。
右侧展示了二维情形的图结构。像素排列在一个二维网格上(灰色节点),源点 source(红色)位于顶部,汇点 sink(蓝色)位于底部。每个像素节点不仅与两个终端节点相连(蓝色和红色的边),还与其四邻域的相邻像素通过边(黄色)相连,权重为 \beta。
底部的流程图清晰地概括了整个求解过程的四个阶段:(a) 从像素网格出发;(b) 构建关联图,添加终端节点和所有边;(c) 在图上求解最小 s-t 割;(d) 根据割的结果确定每个像素的最优标签,得到最优解。黑色实心圆点代表标签 1 的像素,空心圆点代表标签 0 的像素。
割的代价与能量的严格对应
对割的代价进行形式化推导。设 S 为割后与源点(标签 0)相连的像素集合,T 为与汇点(标签 1)相连的像素集合。割的代价为:
这个公式的三个部分分别对应三类被切断的边。第一项:S 中的像素(与源点相连,即被分配到源点一侧)与汇点之间的边被切断,权重为 \mathcal{D}(1, y_p)。第二项:T 中的像素(与汇点相连)与源点之间的边被切断,权重为 \mathcal{D}(0, y_p)。第三项:S 和 T 之间的相邻像素对之间的边被切断,每条贡献 \beta。
这里需要注意标签指派的方向。定义标注 x 为:如果 p \in S(与源点相连),则 x_p = 1;如果 p \in T(与汇点相连),则 x_p = 0。在这个定义下,C(S, T) = U(x|y),即割的代价严格等于对应标注的 Ising 能量。理解这个对应关系的关键在于:像素 p 被分到源点一侧意味着它与汇点的连接被切断,被切断的边权重 \mathcal{D}(1, y_p) 恰好是将 p 标记为 1 时的数据代价(因为 p 与源点相连意味着 x_p = 1);反之亦然。
四种标注情形的逐一验证
图片用两个相邻像素 i 和 j 的所有四种标注组合,逐一验证了割的代价与能量的对应关系。
情形一:u_i = 0, u_j = 0(两个像素都标记为 0)。两个像素都与汇点相连(都在 T 侧),因此它们与源点之间的边被切断。被切断的边贡献为 \mathcal{D}(0, v_i) + \mathcal{D}(0, v_j),而 i 和 j 之间的边不被切断(因为它们在同一侧),正则化贡献为 0。
情形二:u_i = 0, u_j = 1(i 标记为 0,j 标记为 1)。i 在 T 侧,j 在 S 侧。i 与源点的边被切断贡献 \mathcal{D}(0, v_i),j 与汇点的边被切断贡献 \mathcal{D}(1, v_j),i 和 j 之间的边被切断贡献 \beta。总代价为 \mathcal{D}(0, v_i) + \mathcal{D}(1, v_j) + \beta。
情形三:u_i = 1, u_j = 0。与情形二对称,i 在 S 侧,j 在 T 侧。被切断的边贡献为 \mathcal{D}(1, v_i) + \mathcal{D}(0, v_j) + \beta。
情形四:u_i = 1, u_j = 1(两个像素都标记为 1)。两个像素都在 S 侧,它们与汇点的边被切断,贡献为 \mathcal{D}(1, v_i) + \mathcal{D}(1, v_j),i 和 j 之间的边不被切断,正则化贡献为 0。
在每种情形中,割的代价都恰好等于对应标注下 Ising 能量函数中该像素对的贡献。将所有像素对的贡献加总,就得到了完整能量与完整割代价的等式。因此最小割确实给出了全局能量最小的标注方案。
二值情形的推广:一般化的图可表示能量
从 Ising 到一般二值能量
前面讨论的 Ising 模型中,正则化项采用了特定的 Potts 势函数 \beta\delta(x_s \neq x_t)。Kolmogorov 和 Zabih 在 2004 年将这一框架推广到更一般的二值能量函数。一般形式的能量为:
其中 V_c(x_s, x_t) 不再局限于 Potts 形式,而是任意的成对势函数。由于标签只有 0 和 1 两个取值,V_c 可以取四个值:V_c(0,0)、V_c(0,1)、V_c(1,0)、V_c(1,1)。
并非所有形式的 V_c 都能通过图割精确求解。能够被图割精确优化的 V_c 必须满足子模性(sous-modulaire / submodular)条件:
这个不等式的含义是:两个相邻像素取相同标签时的总势能,不超过它们取不同标签时的总势能。Potts 模型显然满足这个条件(0 + 0 \leq \beta + \beta)。子模性条件保证了构建的图中所有边权重非负,从而最小割问题有良好定义。如果这个条件不满足,构建出的图中会出现负权重的边,最小割问题将无法正确求解。
数据项的边权重构建
Kolmogorov 和 Zabih 的图构建方法中,数据项的处理方式与 Ising 模型略有不同。设 V_p(0) 和 V_p(1) 分别代表像素 p 取标签 0 和 1 时的数据代价(即 \mathcal{D}(0, y_p) 和 \mathcal{D}(1, y_p))。约定如果 p \in S(与源点相连一侧),则 x_p = 0。
对于每个像素 p,数据项的边只需要一条(而非两条),具体取决于 V_p(1) - V_p(0) 的符号。如果 V_p(1) - V_p(0) \geq 0,即标签 1 的数据代价更高,则在源点 s 与像素 p 之间添加一条边,权重为 V_p(1) - V_p(0)。如果 V_p(0) - V_p(1) > 0,即标签 0 的数据代价更高,则在像素 p 与汇点 t 之间添加一条边,权重为 V_p(0) - V_p(1)。
手写标注指出,这种做法将数据附着边的数量减半(除以 2)——每个像素只连接一个终端节点而非两个。这是因为能量最小化问题中真正起作用的是两个标签数据代价之间的差值,而非各自的绝对值。通过只保留差值对应的边,可以减少图中边的总数,提高算法效率,同时不影响最小割的结果(最终的最小割标注方案保持不变,只是割的绝对代价会差一个常数偏移)。
正则化项的边权重分析
对于一对相邻像素 p 和 q,正则化项 V_c(x_p, x_q) 有四种取值。在图中,p 和 q 分别通过边与源点 s 和汇点 t 相连,同时 p 和 q 之间也有边。为了建立符号简写,定义 A = V(0,0),B = V(0,1),C = V(1,0),D = V(1,1)。
在图结构中,四种标注对应四种不同的割:当 p 和 q 都取标签 0 时(都在 S 侧),不切断 p-q 之间的边,割贡献对应 A = V_c(0,0);当 p 取 0、q 取 1 时,p-q 之间某些边被切断,贡献对应 B = V_c(0,1);以此类推 C = V_c(1,0) 和 D = V_c(1,1)。需要确定每条边的权重(记为 a, b, c 等),使得四种割的代价分别等于 A, B, C, D。
边权重的求解(以 C \geq A 且 C \geq D 为例)
图片以 C \geq A 且 C \geq D 的情形为例,详细推导了边权重的求解过程。图中需要确定的边权重有:从源点 s 到像素 q 的边权重 a,从 p 到 q 的边权重 b,从 p 到汇点 t 的边权重 c。
通过列出四种标注对应的割代价方程(每种标注对应哪些边被切断),并令它们分别等于对应的 V_c 值,可以解出:
这里需要验证所有边权重非负。a = C - A \geq 0 由假设 C \geq A 保证。c = C - D \geq 0 由假设 C \geq D 保证。b = B + C - D - A \geq 0 恰好等价于子模性条件 V(0,0) + V(1,1) \leq V(0,1) + V(1,0),即 A + D \leq B + C。
手写标注中还验证了 a + c = C - A + C - D = 2C - A - D,这个值确实与构建需要一致。由此可见,子模性条件并非人为施加的限制,而是保证图中所有边权重非负的必要且充分条件。如果 V_c 不满足子模性,b 就会为负,意味着需要一条负权重的边,而负权重的边在最小割问题中没有意义(会使问题变得不可解)。
交互式分割与硬约束
基本原理
在交互式分割中,用户手动指定图像中哪些区域属于目标物体(object),哪些区域属于背景(background)。这些用户标注的像素称为种子点(seeds),它们的类别标签是确定的、不可更改的,构成了所谓的硬约束(hard constraints)。分割问题因此变成:在这些硬约束的前提下,对剩余未标注像素进行二值分类,使总能量最小。
实现硬约束的方法是:在构建图时,给种子点与其对应终端节点之间的边赋予极大的权重。这样在求最小割时,这些边永远不会被切断,从而保证种子点的标签不会被改变。
硬约束的优势
硬约束带来了三个方面的好处。第一,它能引入模拟退火等传统优化方法难以处理的强制性约束——在随机采样过程中很难保证某些像素的标签始终不变,而图割方法通过边权重自然地实现了这一点。第二,用户标注的目标区域和背景区域的像素可以作为训练样本,用有监督学习的方式估计似然项(数据附着项)的参数,例如估计前景和背景各自的颜色分布。第三,如果用户追加新的种子点标注,算法可以在之前结果的基础上快速更新,无需从头计算。
Boykov-Jolly 图构建方法
Boykov 和 Jolly 的方法展示了交互式分割的完整流程。步骤 (a) 中,用户在图像上标注种子点,用 \mathcal{O} 表示目标种子集合,\mathcal{B} 表示背景种子集合。步骤 (b) 中,将图像构建为图:所有像素作为普通节点,添加两个终端节点——背景终端 T(对应标签 background)和目标终端 S(对应标签 object)。每个像素与两个终端节点相连,相邻像素之间也有边相连。步骤 (c) 中,求解最小 s-t 割,虚线表示被切断的边。步骤 (d) 中,根据割的结果得到分割结果。
图的边权重设置
图中包含三类边,权重设置如下:
对于相邻像素对 \{p, q\} \in \mathcal{N}(邻域关系),边权重为 B_{\{p,q\}},这就是正则化项,鼓励相邻像素具有相同的标签。B_{\{p,q\}} 的具体值通常与两个像素的灰度值差异有关——差异越小,权重越大,意味着越不希望在此处产生分割边界。
对于像素 p 与源点 S(目标终端)之间的边 \{p, S\},权重取决于像素 p 的身份。如果 p 是普通像素(p \in \mathcal{P} 且 p \notin \mathcal{O} \cup \mathcal{B}),权重为 \lambda \cdot R_p(\text{"bkg"}),即该像素属于背景的似然代价(乘以平衡参数 \lambda)。如果 p 是目标种子点(p \in \mathcal{O}),权重为 K,其中 K 是一个非常大的常数,保证这条边不被切断,实现硬约束。如果 p 是背景种子点(p \in \mathcal{B}),权重为 0,意味着这条边可以被无代价地切断——背景种子点不应与目标终端相连。
对于像素 p 与汇点 T(背景终端)之间的边 \{p, T\},逻辑完全对称。普通像素的权重为 \lambda \cdot R_p(\text{"obj"}),即该像素属于目标的似然代价。目标种子点 p \in \mathcal{O} 的权重为 0(可无代价切断与背景终端的连接)。背景种子点 p \in \mathcal{B} 的权重为 K(不可切断)。
这种权重设置的逻辑是一致的:种子点通过 K(极大值)被强制绑定到对应的终端节点,而通过 0 被完全断开与另一终端的连接。普通像素则根据似然值 R_p 来决定与两个终端的连接强度,参数 \lambda 控制数据项相对于正则化项的权重比例。
分割结果示例
Boykov 和 Jolly 的方法应用于一张黑白照片(大钟图像)。用户在图像上标注了少量种子点:O 标记目标区域(钟),B 标记背景区域。基于这些种子点,算法自动完成了前景-背景分割。结果图展示了分割后的前景物体和背景的分离效果。底部的两对小图进一步展示了分割结果的细节:左侧是前景提取结果,右侧是对应的二值掩模。
GrabCut:基于图割的交互式分割方法
Rother、Kolmogorov 和 Blake 提出的 GrabCut 方法是对 Boykov-Jolly 方法的改进,主要体现在以下几个方面。
GrabCut 利用了彩色信息而非仅使用灰度值。它仍然是两类分割问题(目标和背景),但不再简单地用单一的概率分布来描述每类的颜色特征,而是使用高斯混合模型(Gaussian Mixture Model, GMM)来分别建模目标和背景的颜色分布。GMM 由多个高斯分量组成,每个分量对应一种颜色模式,这样就能捕捉目标或背景中颜色的多样性。例如一朵红花的前景中,花瓣、花蕊、茎叶各自有不同的颜色,单一高斯分布无法描述,但多个高斯分量的混合可以很好地拟合这种多模态分布。
正则化项的权重不再是固定的常数 \beta,而是根据相邻像素之间的梯度大小进行加权。梯度大的地方(颜色变化剧烈,可能是边缘),正则化权重小,允许分割边界通过;梯度小的地方(颜色平滑区域),正则化权重大,阻止在此处产生分割边界。这样正则化项就自适应地引导分割边界沿着图像的真实边缘走。
分布参数的学习采用半监督迭代方式。初始化时,用户只需框选一个矩形区域,框外的部分自动作为背景训练样本,框内的部分作为前景候选。基于这些初始样本估计前景和背景的 GMM 参数后,执行一次图割分割,然后根据分割结果更新前景和背景的样本集合,重新估计 GMM 参数,再次执行图割。这个过程不断迭代直到收敛。
手写标注进一步解释了 GrabCut 的具体实现细节:使用 RGB 三通道的颜色直方图(histogramme R, V, B)来描述颜色分布,GMM 中包含 K 个高斯分量用于建模目标(K classes pour l'objet),同样用 K 个高斯分量建模背景(K classes pour le fond)。GrabCut 的分割结果如图所示——用户只需画一个矩形框(红色框),算法就能精确地将花朵从复杂背景中提取出来,或将人像从杂乱的绿叶背景中分离。
多标签情形的近似图割算法
图片到此完成了二值标签情形的讨论,进入第三部分——近似算法(Approximate algorithms)。二值情形下,图割可以精确求解全局最优;但当标签数量超过两个时,问题变得更加困难。
多标签能量函数
Boykov 等人将图割方法推广到多标签情形。能量函数的形式与二值情形相同:
但此时每个像素的标签 x_p 属于一个有限的离散集合 E,包含多个标签值 \{\alpha, \beta, \ldots, \gamma\},共 K 个类别。手写标注中给出了标签集合 \{0, 1\} 推广到 \{\alpha, \beta, \ldots, \gamma\} 的对应关系。
核心思路是将多标签问题分解为一系列二值问题来求解——每次只处理两个标签之间的选择,利用二值图割来求解这个子问题,然后逐步迭代改善整体标注。这种策略有两种具体实现方式:\alpha-\beta swap(每次选取两个固定标签 \alpha 和 \beta,只允许当前标记为 \alpha 或 \beta 的像素在这两个标签之间交换)和 \alpha-expansion(每次选取一个标签 \alpha,允许所有像素决定是否将自己的标签改为 \alpha)。
正则化函数的约束条件
多标签图割方法对正则化函数 V_c 有特定的要求。V_c 必须是一个半度量(semi-metric)或度量(metric)。
半度量要求对所有 \alpha, \beta \in E^2 满足两个条件:对称性 V_c(\alpha, \beta) = V_c(\beta, \alpha) \geq 0,以及 V_c(\alpha, \beta) = 0 \Leftrightarrow \alpha = \beta(相同标签之间的惩罚为零,不同标签之间的惩罚严格为正)。
度量在半度量的基础上还需满足三角不等式:V_c(\alpha, \beta) \leq V_c(\alpha, \gamma) + V_c(\gamma, \beta)。三角不等式的含义是:从标签 \alpha 直接跳到 \beta 的惩罚,不超过先从 \alpha 跳到中间标签 \gamma 再从 \gamma 跳到 \beta 的总惩罚。
手写标注给出了一个具体例子来说明半度量的含义:考虑三个标签 \alpha, \beta, \gamma,如果 V_c(\alpha, \beta) = 1,V_c(\alpha, \gamma) = 0,V_c(\gamma, \beta) = 0.5,那么 (\alpha - \beta)^2 = 1 \leq (\alpha - \gamma)^2 + (\gamma - \beta)^2 = 0 + 0.25 = 0.25 不成立,所以截断二次函数(troncated quadratic)是半度量但不是度量。Potts 模型则满足度量条件。
满足半度量条件足以使用 \alpha-\beta swap 算法,满足度量条件则可以使用 \alpha-expansion 算法。
近似算法的局限
这里需要注意,与二值情形不同,多标签情形下的图割方法只能给出近似解(局部最优),而非全局最优解。算法通过反复迭代二值图割来逐步降低能量,最终收敛到一个局部最小值,但无法保证找到全局最小值。
\alpha-\beta swap 算法
定义与基本思想
\alpha-\beta swap 是将多标签问题分解为二值子问题的第一种策略。首先需要理解标注(labeling)与分区(partitioning)的关系:一个标注方案等价于将图像像素集合 I 划分为若干子集 \mathbf{P} = \{P_l | l \in E\},其中 P_l = \{p \in I | x_p = l\} 是所有被标记为 l 的像素构成的集合。
\alpha-\beta swap 操作的定义是:从当前分区 \mathbf{P} 变换到新分区 \mathbf{P}',要求对所有标签 l \neq \alpha, \beta 都有 P_l = P_l',即只有标签为 \alpha 和 \beta 的像素允许改变标签,其他标签的像素保持不动。换言之,一次 \alpha-\beta swap 只涉及两个标签之间的像素交换——某些原本标记为 \alpha 的像素可以改为 \beta,某些原本标记为 \beta 的像素可以改为 \alpha。
手写标注中的示意图展示了这个概念。图像中有多个区域分别被标记为 \alpha、\beta、\gamma 等标签。在一次 \alpha-\beta swap 中,\gamma 区域保持不变,只有 \alpha 和 \beta 区域的像素可以在这两个标签之间重新分配。对于位于 \alpha 或 \beta 区域与 \gamma 区域边界上的像素,它们与 \gamma 邻居之间的交互能量需要被纳入考虑——如果一个 \alpha 像素的邻居 x_q 标记为 \gamma,那么这个像素选择 \alpha 或 \beta 将分别产生 V_c(\gamma, \alpha) 或 V_c(\gamma, \beta) 的正则化代价。
图的构建
对于一次 \alpha-\beta swap 的求解,构建的图只包含当前标记为 \alpha 或 \beta 的像素作为节点,记这个像素子集为 S_{\alpha\beta}。添加两个终端节点:\alpha 节点和 \beta 节点。图中的边分为三类:
第一类,每个像素 p \in S_{\alpha\beta} 与 \alpha 节点之间的边,权重为:
这个权重由两部分组成:\mathcal{D}(\alpha, y_p) 是将像素 p 标记为 \alpha 的数据代价;后面的求和项是像素 p 与其所有不属于 S_{\alpha\beta} 的邻居(即标签既非 \alpha 也非 \beta 的邻居,标签固定不变)之间的正则化代价,假设 p 被标记为 \alpha。这些外部邻居的标签在本次 swap 中不会改变,因此它们的贡献可以直接"吸收"到终端节点的边权重中。
第二类,每个像素 p \in S_{\alpha\beta} 与 \beta 节点之间的边,权重为:
逻辑与第一类完全对称,只是假设 p 被标记为 \beta。
第三类,如果两个像素 p 和 q 在四邻域中相邻且都属于 S_{\alpha\beta},则它们之间有一条边,权重为 w(p, q) = V_c(\alpha, \beta)。当 p 和 q 最终被分配到不同标签时(一个选 \alpha 一个选 \beta),这条边被切断,产生 V_c(\alpha, \beta) 的正则化惩罚。
最终每个像素的标签由割决定:像素被割到哪个终端节点的一侧,就获得对应的标签。
三种割的情形
图片用三个示意图展示了两个相邻像素 p 和 q 之间的三种可能的割结果。每个像素都通过 t_p^\alpha, t_q^\alpha 连接 \alpha 终端,通过 t_p^\beta, t_q^\beta 连接 \beta 终端,p 和 q 之间通过边 e_{\{p,q\}} 相连。
第一种情形:割从两个像素的上方通过(切断 t_p^\alpha 和 t_q^\alpha),p 和 q 都被分到 \alpha 终端一侧,最终标签为 [\alpha, \alpha]。p-q 之间的边不被切断。
第二种情形:割从两个像素的下方通过(切断 t_p^\beta 和 t_q^\beta),p 和 q 都被标记为 [\beta, \beta]。p-q 之间的边同样不被切断,但同时 V_c(\alpha, \beta) 出现在中间图标注中,表示当 p 和 q 被分到不同侧时才会触发这条边的贡献。
第三种情形:割穿过 p-q 之间(一个在 \alpha 侧,一个在 \beta 侧),标签为 [\beta, \alpha] 或 [\alpha, \beta]。此时 e_{\{p,q\}} 被切断,贡献 V_c(\alpha, \beta) 的惩罚。
通过对所有标签对 (\alpha, \beta) 依次执行 \alpha-\beta swap,反复迭代直到没有任何一对标签的 swap 能进一步降低总能量,算法就收敛到了一个局部最优解。
\alpha-\beta swap 的具体示例
图片通过一个 8 \times 8 的标注网格展示了 \alpha-\beta swap 的实际效果。网格中的每个数字代表一个像素的标签(取值为 1, 2, 3, 4)。这里执行的是针对标签 2 和 3 的 swap 操作。
左侧是原始标注,中间是 swap 之后的结果,右侧的变化图(changes)用黑白方式标出了发生标签改变的像素位置——白色像素表示标签发生了变化,黑色像素表示标签未变。可以观察到,只有原本标记为 2 或 3 的像素才可能发生变化,标记为 1 或 4 的像素在整个过程中保持不动。例如,某些原本标记为 2 的像素在 swap 后变成了 3,某些原本标记为 3 的像素变成了 2,这些改变使得总能量降低。算法需要对所有标签对 (\alpha, \beta) 依次执行 swap(如 (1,2), (1,3), (1,4), (2,3), (2,4), (3,4)),反复循环直到任何一对标签的 swap 都无法再降低能量为止。
\alpha-expansion 算法
定义
\alpha-expansion 是将多标签问题分解为二值子问题的第二种策略,与 \alpha-\beta swap 的思路不同。\alpha-expansion 的定义是:从当前分区 \mathbf{P} 变换到新分区 \mathbf{P}',要求当前已经标记为 \alpha 的像素必须保持标签 \alpha 不变,而其他任何标签的像素都可以选择将自己的标签改为 \alpha(也可以选择保持原来的标签不变)。换言之,\alpha-expansion 是标签 \alpha 的领地扩张过程——\alpha 区域只能扩大或保持不变,不能缩小。
与 \alpha-\beta swap 的关键区别在于:swap 每次只涉及两个标签的像素子集,而 expansion 涉及所有像素——每个像素都面临一个二值选择:保持当前标签 x_p,还是改为 \alpha。
图的构建
手写标注中的示意图展示了 \alpha-expansion 的图结构。源点代表标签 \alpha,汇点代表 \bar{\alpha}(即保持当前标签不变)。所有像素都作为图中的节点参与优化。
每个像素 p 与源点 \alpha 之间的边权重为 \mathcal{D}(y_p, \alpha),即将 p 标记为 \alpha 的数据代价。每个像素 p 与汇点 \bar{\alpha} 之间的边权重为 \mathcal{D}(y_p, x_p),即保持 p 当前标签 x_p 的数据代价(x_p 是 p 的当前标签,即 classe courante du pixel)。
对于相邻像素对 p 和 q,正则化项的处理比 \alpha-\beta swap 更复杂。如果 p 和 q 最终都选择 \alpha,正则化代价为 V_c(\alpha, \alpha) = 0。如果都保持当前标签,代价为 V_c(x_p, x_q)。如果一个选 \alpha 一个保持当前标签 x_q,代价为 V_c(\alpha, x_q)。但这里出现了一个问题(手写标注中用红色问号标出):当 p 保持 x_p,q 保持 x_q,而 x_p \neq x_q 时,正则化代价 V_c(x_p, x_q) 无法仅通过两个终端节点之间的边来表示——因为 p 和 q 虽然都在 \bar{\alpha} 一侧,但它们的实际标签不同,而简单的二值图割无法区分这种情况。
辅助节点的引入
为了解决上述问题,\alpha-expansion 的图构建中需要引入辅助节点(auxiliary node)和额外的边。V_c 必须满足度量条件(metric),这比 \alpha-\beta swap 要求的半度量条件更强。
构建过程的要点如下:图中包含所有像素作为节点。添加两个终端节点,一个代表 \alpha,另一个代表 \bar{\alpha}(当前标签)。每个像素的最终标签由被切断的边决定——如果与 \alpha 终端的连接被保留(像素在 \alpha 侧),则标签变为 \alpha;如果与 \bar{\alpha} 终端的连接被保留,则保持当前标签 x_p。
对于当前标签不同的相邻像素对(x_p \neq x_q),需要在它们之间添加一个辅助节点以及额外的边,来正确编码三种可能结果(都选 \alpha、一个选 \alpha 一个保持、都保持但标签不同)对应的不同正则化代价。度量条件中的三角不等式 V_c(\alpha, \beta) \leq V_c(\alpha, \gamma) + V_c(\gamma, \beta) 保证了这些额外边的权重非负,从而使最小割问题有良好定义。
手写标注中的颜色编码帮助区分了不同类型的边和割:红色线对应 V_c(\alpha, x_q) 或 V_c(x_p, x_q) 的正则化贡献,绿色线对应 V_c(x_p, \alpha) 的贡献,黄色线对应数据项 \mathcal{D}(y_p, x_p) 的贡献。底部的绿色方框标注了三种可能的标签组合:[x_p, \alpha]、[x_p, x_q] 等。
整个 \alpha-expansion 算法的流程是:依次对每个标签 \alpha \in E 执行一次 expansion,反复循环直到没有任何标签的 expansion 能进一步降低总能量。由于每次 expansion 都涉及所有像素且每个像素有更大的搜索空间,\alpha-expansion 通常比 \alpha-\beta swap 收敛更快,在实践中也更为常用。
\alpha-expansion 的图割可表示性证明
子模性条件的推导
为了使 \alpha-expansion 的二值子问题能用图割精确求解,需要验证子模性条件。在 \alpha-expansion 中,二值标签的含义是:标签 0 对应 \alpha,标签 1 对应 \bar{\alpha}(保持当前标签不变)。具体来说,如果像素 p 选择标签 1,它就保持当前标签 x_p = \bar{\alpha}(p);如果像素 q 选择标签 1,它就保持当前标签 x_q = \bar{\alpha}(q)。
子模性条件要求:
将二值标签翻译回原始多标签的含义:V_c(0,0) = V_c(\alpha, \alpha),V_c(1,1) = V_c(\bar{\alpha}(p), \bar{\alpha}(q)) = V_c(x_p, x_q),V_c(0,1) = V_c(\alpha, \bar{\alpha}(p)) = V_c(\alpha, x_p)(这里注意原文标注的顺序),V_c(1,0) = V_c(\bar{\alpha}(q), \alpha) = V_c(x_q, \alpha)。代入后得到:
由于 V_c(\alpha, \alpha) = 0(半度量性质),简化为:
这恰好就是三角不等式的形式。因此,当 V_c 满足度量条件时,子模性条件自动成立,\alpha-expansion 的二值子问题可以用图割精确求解。这也解释了为什么 \alpha-expansion 要求 V_c 是度量,而 \alpha-\beta swap 只需要半度量——前者的子模性验证依赖三角不等式,后者不需要。
图的完整结构
图片给出了 \alpha-expansion 的完整图结构示意图。图中有两个终端节点:\alpha(源点,位于顶部)和 \bar{\alpha}(汇点,位于底部)。所有像素 p, q, r, s 等作为普通节点排列在中间一行。
每个像素 p 通过边 t_p^\alpha 连接到 \alpha 终端,通过边 t_p^{\bar{\alpha}} 连接到 \bar{\alpha} 终端。对于当前标签不同的相邻像素对(如 p 和 q,x_p \neq x_q),需要在它们之间插入一个辅助节点 a。辅助节点 a 与 p 之间有边 e_{\{p,a\}},与 q 之间有边 e_{\{a,q\}},同时 a 通过边 t_a^{\bar{\alpha}} 连接到 \bar{\alpha} 终端。对于当前标签相同的相邻像素对(图中右侧的 r 和 s,同属于区域 P_\alpha),不需要辅助节点,直接通过边 e_{\{q,r\}} 相连即可。
辅助节点周围的边权重设置如下:e(p, a) = V(l_p, \alpha),即 V_c(x_p, \alpha);e(a, q) = V(\alpha, l_q),即 V_c(\alpha, x_q);t_a^{\bar{\alpha}} = V(l_p, l_q),即 V_c(x_p, x_q)。
三种割的情形与辅助节点的作用
图片用三个示意图详细展示了在有辅助节点 a 的情况下,相邻像素对 p 和 q(x_p \neq x_q)的三种可能割。
第一种情形:p 和 q 都选择 \alpha(割在下方,切断 t_p^{\bar{\alpha}}、t_q^{\bar{\alpha}} 和 t_a^{\bar{\alpha}})。此时辅助节点 a 也在 \alpha 侧,p-a、a-q 之间的边都不被切断。被切断的边中与正则化相关的只有 t_a^{\bar{\alpha}} = V_c(x_p, x_q),但这个代价在标签都变为 \alpha 后实际上应该为 V_c(\alpha, \alpha) = 0。这种情形的处理需要仔细分析总代价的平衡。
第二种情形:p 和 q 都保持当前标签(割在上方,切断 t_p^\alpha、t_q^\alpha)。辅助节点 a 在 \bar{\alpha} 侧。被切断的边贡献中,与 p-q 相关的正则化代价通过辅助节点路径体现为 V_c(x_p, x_q)。手写标注用蓝色标出标签结果为 [x_p, x_q]。
第三种情况解释有错,重新弄
\alpha-expansion 的具体示例
图片用与之前相同的 8 \times 8 标注网格展示了 \alpha-expansion 在标签 3 上的效果。左侧是原始标注,对标签 3 执行 expansion 后,中间是结果标注,右侧是变化图。可以观察到,一些原本不是 3 的像素在 expansion 后变成了 3(标签 3 的区域扩大了),而原本就是 3 的像素保持不变(标签 3 的区域只能扩张不能收缩)。其他标签(1, 2, 4)的像素,要么保持原标签,要么转变为 3,没有其他选择。与 \alpha-\beta swap 的变化图对比,可以看到 expansion 一次操作就能影响所有标签的像素,变化范围更广,因此收敛速度通常更快。
不同优化策略的视觉对比
Boykov 等人通过一组彩色分割示例对比了不同优化策略的效果。图像中包含三个标签区域:\alpha(红色)、\beta(青色)和 \gamma(绿色)。
(a) 初始标注(initial labeling):边界非常粗糙、不规则,充满了噪声碎片,这是一个质量很差的初始解。(b) 标准移动(standard move):逐像素地贪心优化(类似 ICM),每次只改变一个像素的标签。由于每步只做微小的局部调整,结果只是在初始标注的基础上做了轻微的平滑,大量噪声碎片仍然保留,整体改善有限。(c) \alpha-\beta swap:一次操作允许两个标签之间的像素批量交换,搜索空间远大于逐像素移动。结果明显更好,边界更加平滑,但仍存在一些不规则之处。(d) \alpha-expansion:一次操作允许所有像素考虑是否转向某个标签,搜索空间最大。结果最为平滑和干净,三个区域的边界非常规整,接近理想的分割效果。
这组对比直观地说明了:每次操作的搜索空间越大(从单像素到标签对到全局扩张),能量景观中跳跃的步幅越大,越容易跳出局部最优,最终解的质量越高。
两种近似算法的总结
算法对比
\alpha-\beta swap 要求正则化势函数 V_c 满足半度量条件,\alpha-expansion 要求 V_c 满足更强的度量条件。手写标注指出了两者之间的权衡:\alpha-\beta swap 对能量函数的要求更宽松(plus général,更一般化),适用范围更广;\alpha-expansion 对能量函数的限制更强(classe d'énergie plus limitée),但由于每次操作的搜索空间更大,探索能力更强(meilleure exploration),实际效果通常更好。
性能特点
两种算法共享以下性能特征。它们都收敛到一个局部最小值,通常只需几次迭代就能收敛。与模拟退火相比,速度快得多——模拟退火需要大量的随机采样迭代,而图割方法每次迭代都通过求解最大流来完成大规模的标签更新。它们允许在能量景观中进行大幅度的跳跃(much bigger moves),这是它们优于逐像素贪心方法(如 ICM)的关键原因。此外,存在关于局部最优解与全局最优解之间距离的理论保证——虽然不能找到精确的全局最优,但可以证明找到的解的能量不会超过全局最优解能量的某个常数倍。
图像恢复实验对比
图片通过一个经典的菱形测试图像(diamond image)展示了图割方法与模拟退火的实际对比。测试图像包含多个灰度层级的嵌套菱形,叠加了噪声。实验使用了两种不同的能量函数:E_2 采用 Potts 模型,E_1 采用截断二次(troncated quadratic)模型。
第一张是含噪的输入图像。第二张是使用图割方法(\alpha-expansion)在 E_2(Potts)能量下的恢复结果,菱形区域被很好地分割和恢复。第三张是使用模拟退火在 E_1(截断二次)能量下的结果,恢复效果也不错但计算时间远长于图割方法。第四张是使用图割方法在 E_1 能量下的结果,质量与模拟退火相当,但速度快得多。这组实验验证了图割近似算法在实际应用中既能保持高质量的恢复效果,又具有远超模拟退火的计算效率。
接下来进入最后一个部分——精确算法(Exact algorithms),讨论在某些特殊条件下如何用图割找到多标签问题的精确全局最优解。
图像恢复中的精确图割算法
恢复问题的能量形式
图像恢复任务的能量函数为:
手写标注说明了各变量的含义:u 代表待恢复的解(solution),v 代表观测值(observation)。数据项 \mathcal{D}(u_p, v_p) 衡量恢复值与观测值之间的差异,正则化项 g(u_p - u_q) 约束相邻像素恢复值之间的差异。这里没有对 \Omega(定义域)施加额外约束,手写标注还指出 g 需要是凸函数(concave 被划掉,标注为 convexe)。
正则化势函数的选择
对于 g 的选择,列举了几种常见形式。二次函数 (u_p - u_q)^2 是最简单的选择,手写标注说明它可以通过解方程组(résolution d'un système)来求解,不一定需要图割。截断二次函数 \min((u_p - u_q)^2, k) 在差值超过阈值 k 后不再增加惩罚,具有边缘保持能力,但手写标注指出它难以优化(difficile à optimiser),因为它是非凸的。Phi 函数需要满足导数上的特定条件。全变分(Total Variation)在连续域上定义为 \int_\Omega |\nabla u|,在离散域上对应 g(u_p - u_q) = |u_p - u_q|。
全变分正则化的离散化
恢复问题在加入参数 \beta 控制正则化强度后的完整形式为:
全变分最小化对应 \int_\Omega |\nabla u| 的最小化。连续域中梯度的范数定义为:
在各向异性(anisotropic)模型下,用 L_1 范数近似梯度范数:
进一步离散化到像素网格上:
这恰好对应于 g(u_p - u_q) = |u_p - u_q|,即相邻像素差值的绝对值,也就是梯度的 L_1 范数。手写标注指出,L_1 范数的使用意味着对解的梯度施加稀疏性约束(sparcité des gradients sur la solution)——大部分相邻像素对的差值应该为零或很小(平滑区域),只有少数位置(边缘处)允许有较大的差值。这就是 TV 正则化能够保持边缘同时去除噪声的数学原理。
Ishikawa 精确解法
前提假设
Ishikawa 方法能够在多标签情形下找到精确的全局最优解,但需要 g 是定义在整数上的凸函数。设 V 为像素集合,L 为标签集合。凸性条件是精确解法的核心前提——TV 正则化中 g(u) = |u| 是凸函数,因此满足这个条件;而截断二次函数由于非凸性不满足。
图的构建
Ishikawa 方法构建的图比二值情形复杂得多。节点集合定义为 X = V \times L \cup \{s, t\},即对每个像素 p 和每个标签 i 都创建一个节点 n_{pi}(像素 p 在标签 i 处的节点),再加上源点 s 和汇点 t。如果有 |V| 个像素和 |L| 个标签,则图中有 |V| \times |L| + 2 个节点。可以将这个结构想象为一个二维网格:每一列对应一个像素,每一行对应一个标签层级,加上顶部的源点 s 和底部的汇点 t。
边分为两类:列内边(竖直方向)和行间边(水平方向)。
列内边连接同一像素的不同标签层级节点,编码数据项。权重设置如下:从源点 s 到像素 p 的最高标签节点 n_{p(L-1)} 的边权重为 c(s, n_{p(L-1)}) = \mathcal{D}(L, y_p)。从标签 i+1 的节点到标签 i 的节点的边权重为 c(n_{p(i+1)}, n_{pi}) = \mathcal{D}(i, y_p)。从最低标签节点 n_{p1} 到汇点 t 的边权重为 c(n_{p1}, t) = \mathcal{D}(1, y_p)。反方向的边(从低标签到高标签,即 c(n_{pi}, n_{p(i+1)}))权重设为 +\infty,目的是阻止割在列内向上回折形成环路——割必须在每列中恰好切断一条竖直边,这条被切断的边的位置就决定了该像素的标签。
正则化项的编码
正则化项通过行间边(水平方向,连接不同像素的同一标签层级的节点)来编码。
在 TV 正则化的简化情形下,只需要水平方向的边,权重统一为 \beta,对应 g(x_p - x_q) = \beta|x_p - x_q|。割在两个相邻列中切断位置不同时(即两个相邻像素的标签不同),水平方向上会有多条边被切断,切断的数量恰好等于两个标签之间的差值 |x_p - x_q|,每条贡献 \beta,总贡献恰好是 \beta|x_p - x_q|。
在一般凸正则化的情形下,被割切断的像素节点之间的连接边的权重需要根据 g 的凸性进行相应设置,但基本原理相同——割切断的水平边的总权重等于正则化项 g(u_p - u_q) 的值。g 的凸性保证了这种编码方式的正确性,即最小割找到的解确实对应全局能量最小的标注。
Ishikawa 方法的具体示例
手写示例的详细分析
手写标注通过一个具体的小例子展示了 Ishikawa 图的完整结构和割的计算。考虑 5 个像素 p, q, r, s, t,标签集合为 \{0, 1, 2, 3, 4\}。能量函数为:
图的结构是一个二维网格:每一列对应一个像素,每一行对应一个标签层级(从底部的 0 到顶部的 4),源点 s 在最顶部,汇点在最底部。每一列中,从源点出发依次向下连接各标签层级的节点,最终连接到汇点。竖直方向的边从上到下编码数据项,权重分别为 \mathcal{D}(u_p, i),其中 i 是对应的标签值。图中用蓝色标注了部分数据项边的权重,例如 \mathcal{D}(v_p, 2)、\mathcal{D}(v_p, 0) 等。标注还特别提醒:每个标签层级上,同一列只有一个节点属于数据项(att coeux données 0 par label,即注意每个标签层的数据贡献)。
水平方向的边连接相邻像素在同一标签层级的节点,权重为 \beta(用红色 \beta 标出)。这些水平边编码了 TV 正则化项。
在这个例子中,割的结果为标注 [0, 0, 2, 2, 3],即像素 p 和 q 取标签 0,r 和 s 取标签 2,t 取标签 3。割在每一列中切断一条竖直边,切断的位置决定了该像素的标签——切断位置越靠近源点,标签越大。
割的总代价计算如下:
前五项是数据项的贡献,来自每列中被切断的竖直边。后面的 2\beta + \beta 是正则化项的贡献,来自被切断的水平边。具体来说,像素 q(标签 0)与像素 r(标签 2)之间的标签差为 |0 - 2| = 2,意味着在这两列之间有 2 条水平边被切断(分别在标签层级 1 和 2 处),每条贡献 \beta,共 2\beta。像素 s(标签 2)与像素 t(标签 3)之间的标签差为 |3 - 2| = 1,有 1 条水平边被切断,贡献 \beta。而像素 p 与 q(标签都是 0)以及 r 与 s(标签都是 2)之间标签相同,不切断水平边,正则化贡献为 0。
用绿色标注的验证计算确认了这一点:
这正好等于割中被切断的水平边的总权重。由此验证了 Ishikawa 图构建的正确性——割的总代价确实精确等于能量函数 U(u|v) 在对应标注下的值。
完整流程概览
底部的流程图以更宏观的视角展示了 Ishikawa 方法的三个阶段。(a) 从像素网格出发,构建关联图。图的结构是一个多层网格:源点 s 在顶部,汇点 t 在底部,中间有 |L| 个层级(\alpha_1, \ldots, \alpha_{k-1}, \alpha_k, \alpha_{k+1}, \ldots, \alpha_{L-1}),每个层级包含所有像素的对应节点。同一层级内,相邻像素的节点通过水平边相连(编码正则化项);同一像素的不同层级节点通过竖直边相连(编码数据项)。源点与最高层级的所有节点相连,最低层级的所有节点与汇点相连。
(b) 在这个多层图上求解最小 s-t 割。割在图中形成一个曲面,这个曲面在每一列中的位置决定了对应像素的标签——曲面越高(越靠近源点),标签越大。
(c) 根据割的位置提取每个像素的最优标签,得到全局最优解。与二值情形类似,输出图中用黑白灰不同深浅表示不同的标签值(灰度级别),这就是恢复后的图像。
Ishikawa 方法的计算代价随标签数量线性增长(节点数为像素数乘以标签数),对于标签数量不太大的情况(如灰度恢复中量化为几十个灰度级别),仍然是可行的。但对于 256 个灰度级别的完整恢复问题,图的规模会变得非常大。
Ishikawa 方法的三种割情形分析
图片通过两个相邻像素 i 和 j 的三种不同割情形,详细展示了 Ishikawa 图中割代价与能量函数之间的对应关系。
图中每一列代表一个像素,从源点 s 到汇点 t 依次排列各标签层级 \alpha_1, \alpha_{k-1}, \alpha_k, \alpha_{k+1}, \ldots, \alpha_L。竖直边编码数据项,水平边编码正则化项。绿色曲线标出了割穿过图的路径。
解释有错
情形 (d):像素 i 和 j 取相同标签 \alpha_k。割在两列中都在同一标签层级 \alpha_k 处切断竖直边,水平方向没有边被切断(因为割在两列中的位置相同)。割的代价中数据项贡献为 \mathcal{D}(\alpha_k, v_i) + \mathcal{D}(\alpha_k, v_j),正则化贡献为 0,这与能量函数中 g(\alpha_k - \alpha_k) = g(0) = 0 一致。
情形 (e):像素 i 取标签 \alpha_{k-1},像素 j 取标签 \alpha_{k+1},即割在 i 列较低位置切断、在 j 列较高位置切断。由于两列割的位置不同,在标签层级 \alpha_{k-1} 和 \alpha_k 之间的水平边被切断,每条贡献 \beta,共 2 条,贡献 \beta + \beta。割的总代价中数据项为 \mathcal{D}(\alpha_{k-1}, v_i) + \mathcal{D}(\alpha_{k+1}, v_j),正则化项为 \beta + \beta = 2\beta,对应 \beta|\alpha_{k+1} - \alpha_{k-1}| = 2\beta(假设标签间距为 1)。
情形 (f):像素 i 取标签 \alpha_{k+1},像素 j 取标签 \alpha_{k-1},方向与情形 (e) 相反。割在 i 列较高位置切断、在 j 列较低位置切断。在这种情况下,割的路径需要跨越反方向的水平边。数据项贡献为 \mathcal{D}(\alpha_{k-1}, v_i) + \mathcal{D}(\alpha_{k+1}, v_j)。正则化贡献中出现了 \beta + \infty,这意味着割试图沿反方向穿过(从高标签列到低标签列),触碰到了权重为 +\infty 的反向竖直边。这使得这种割的代价为无穷大,因此最小割永远不会选择这种路径。+\infty 权重的反向边正是为了防止这种不合理的割出现——它强制割在每一列中必须单调地从上到下穿过,不允许回折。
一般情形的图结构
在一般凸正则化的情形下,两个相邻像素 v 和 w 之间的水平边不再限于同一标签层级的连接,而是形成一个完全连接的结构。图中展示了像素 v(左列)和像素 w(右列)之间的边连接方式:v 列中标签层级 i 处的节点 u_{v,i} 不仅与 w 列同一层级的节点 u_{w,i} 相连,还与其他层级的节点(如 u_{w,j}、u_{w,j+1} 等)通过斜向边相连。如果像素 v 的标签为 X_v = i,像素 w 的标签为 X_w = j,则割切断的水平和斜向边的总权重恰好等于 g(i, j)。
这种全连接结构使得图的边数量大幅增加(从 TV 情形下的 O(|V| \times |L|) 增加到 O(|V| \times |L|^2)),但保证了任何凸正则化函数都能被精确编码。
正则化项的割代价公式
惩罚项与边容量的关系
Ishikawa 方法中,正则化项 g(i, j)(像素 v 取标签 i、像素 w 取标签 j 时的正则化代价)可以表示为被割切断的所有水平/斜向边的容量之和:
第一个双重求和覆盖了从 v 列到 w 列方向被切断的边,第二个双重求和覆盖了从 w 列到 v 列方向被切断的边。两部分加起来就是所有被割穿过的像素间边的容量总和。
凸性与边容量的推导
图片给出了一个关键命题:如果正则化函数 g(i, j) 被定义为上述割切断边的容量之和,且 g 只依赖于标签差值 i - j(即 g(i, j) = \tilde{g}(i - j)),那么 \tilde{g} 必然是凸函数。反过来,如果 g 是凸函数,那么可以通过以下公式确定正则化项对应的边容量:
这个公式的结构是 \tilde{g} 的二阶差分除以 2。凸性保证了二阶差分非负(凸函数的二阶差分 \geq 0),从而边容量 c(n_{vi}, n_{wj}) \geq 0。当标签差 |i - j| 足够大时,如果 \tilde{g} 的增长趋于饱和(如截断函数),二阶差分变为零,对应的边容量也变为零。
这里还有两点补充说明。第一,对于灰度差异足够大的情况,边容量变为 0,这意味着远离的标签层级之间实际上不需要连边,可以减少图的规模。第二,数据项没有任何凸性或其他形式的约束——它可以是任意函数,只要正则化项满足凸性即可。
Darbon-Sigelle 精确解法
问题形式
Darbon 和 Sigelle 在 2006 年提出了另一种精确求解方法,针对的能量函数为:
与 Ishikawa 方法的区别在于,这里的正则化项具体为加权 TV 形式 w_{pq}|x_p - x_q|,其中 w_{pq} 是像素对 (p, q) 的权重,可以随空间位置变化。
水平集分解的原理
Darbon-Sigelle 方法的核心思想是水平集分解(level set decomposition)。不直接在多标签空间中优化,而是将多标签问题分解为一系列独立的二值问题,每个二值问题对应一个阈值水平。
水平集的定义
对于一个多灰度值图像 x,定义其在阈值 \lambda 处的水平集为 x^\lambda = \{x_s^\lambda\},其中每个像素的水平集值定义为:
即当像素值 x_s \leq \lambda 时取 1,否则取 0。这是一个二值函数——给定阈值 \lambda,原始图像被二值化为一个黑白图像。原始像素值可以从其所有水平集中恢复:
即 x_s 等于使得 x_s^\lambda 首次变为 1 的最小阈值 \lambda。图片的图表展示了这个关系:横轴为 \lambda,纵轴为 x_s^\lambda 的取值(0 或 1),在 \lambda = x_s 处发生从 0 到 1 的跳变。x^\lambda = \{x_s^\lambda\} 表示整幅图像在阈值 \lambda 处的水平集。
能量的水平集重新表述
通过水平集分解,原始的多标签能量可以被重写为各水平集上二值能量的叠加。
正则化项可以分解为:
这个公式说明,原始的多标签 TV 正则化等于所有水平集 \lambda 上的二值 TV 之和。由于 x_s^\lambda 是二值的,|x_s^\lambda - x_t^\lambda| 只有在两个像素的水平集值不同时(一个为 0,一个为 1)才为 1,否则为 0。进一步展开:
这个表达式将绝对值拆解为关于 x_s^\lambda 和 x_t^\lambda 的线性和二次项的组合,其中利用了 x_s^\lambda 的二值性质((x_s^\lambda)^2 = x_s^\lambda)。
数据项同样可以用水平集表示。设 f(y_s | x_s) = g_s(x_s),则:
这里 \mathbb{1}_{\lambda < x_s} = 1 - x_s^\lambda,因为当 \lambda < x_s 时 x_s^\lambda = 0(阈值还没到达像素值),所以指示函数值为 1。这个分解将数据项表示为各水平集上贡献的叠加,每个水平集 \lambda 的贡献权重为 g_s(\lambda + 1) - g_s(\lambda),即数据代价函数在相邻标签之间的差分。
水平集分解方法的优势在于:将一个多标签优化问题分解为 L - 1 个独立的二值优化问题,每个二值问题可以用标准的二值图割精确求解。如果各水平集之间确实独立(在某些条件下成立),那么整体解就是各水平集最优解的组合,从而得到全局精确最优解。这比 Ishikawa 方法的图规模更小(L-1 个小图而非一个大图),在实际计算中可能更加高效。
水平集能量的完整重写
将前面推导的正则化项和数据项的水平集分解合并,原始的多标签能量函数可以被完整地重写为各水平集能量的叠加:
其中每个水平集 \lambda 对应一个独立的二值能量函数 E^\lambda(x^\lambda),其具体形式为:
第一项来自正则化(TV)的水平集分解,第二项来自数据项的水平集分解,g_s(0) 是一个与 x^\lambda 无关的常数项。每个 E^\lambda(x^\lambda) 都是关于二值变量 \{x_s^\lambda\} 的能量函数,其结构与 Ising 模型(铁磁模型)完全相同——包含单站点项和成对交互项,可以用二值图割精确求解。
从水平集最优解到全局最优解
设 \hat{x}^\lambda 是每个水平集 \lambda 上二值能量 E^\lambda(x^\lambda) 的全局最小化解。要使这些独立求解的二值最优解组合起来恰好构成原始多标签问题的全局最优解,需要满足一个关键的嵌套条件(nesting condition):
这个条件的含义是:对于更高的阈值 \mu,水平集中值为 1 的像素集合应该包含更低阈值 \lambda 的水平集中值为 1 的像素。这符合水平集的物理含义——如果 x_s \leq \lambda,那么一定有 x_s \leq \mu(因为 \mu > \lambda),所以 x_s^\lambda = 1 意味着 x_s^\mu = 1。如果各水平集的独立最优解自然地满足这个嵌套关系,那么全局最优解可以直接从水平集重构:
即每个像素的最优标签等于使其水平集值首次变为 1 的最小阈值。
能量条件与图结构
局部条件能量的凸性条件
如果数据项的局部条件能量满足凸性条件,那么各水平集的独立优化自动保证嵌套性质成立。这意味着各水平集之间不需要任何耦合,可以完全独立地求解 L-1 个二值图割问题。由于各水平集独立,还可以用二分法(dichotomy)在灰度集上加速搜索——不需要逐个水平集求解,而是通过二分策略跳过某些水平集,进一步提高效率。
非凸似然下的可水平化正则化
当似然函数(数据项)不满足凸性条件时,各水平集的独立最优解可能不满足嵌套条件。Darbon 和 Sigelle 的解决方案是在水平集之间引入一个耦合项 \sum_s \alpha H(x_s^\lambda - x_s^{\lambda+1}),强制相邻水平集之间保持嵌套关系。H 是一个惩罚函数,当 x_s^\lambda > x_s^{\lambda+1}(违反嵌套条件)时施加惩罚。引入耦合项后,各水平集不再独立,需要构建一个包含所有水平集的图来联合求解。这个图的结构与 Ishikawa 方法的图不同,但规模相近(节点数都是像素数乘以标签数的量级)。
去噪实验结果
Darbon 和 Sigelle 展示了两类噪声下的去噪结果。
第一类是高斯噪声,使用 L_2 数据项加 TV 正则化(L2+TV)。图片展示了两组不同噪声强度的例子。左侧是含噪图像,右侧是去噪结果。在轻度高斯噪声下,去噪后的图像非常清晰,面部细节和帽子纹理都被很好地保留,只是在某些平滑区域出现了 TV 方法特有的阶梯效应(staircase effect)——即平滑渐变区域被近似为若干个分段常数区域。在较强的高斯噪声下,去噪效果依然令人满意,尽管部分细节有所损失,但整体结构恢复良好。
第二类是脉冲噪声,使用 TV 正则化。脉冲噪声的特点是将随机像素替换为极端值(黑或白椒盐噪声),因此比高斯噪声更难处理。图片展示了三组不同噪声密度的实验。在中等密度的脉冲噪声下,去噪后的图像质量很高,人脸、帽子、头发等结构清晰可辨。在更高密度的脉冲噪声下(图像几乎被噪声覆盖,原始内容难以辨认),TV 去噪仍然能恢复出基本的图像结构,虽然细节损失较多但主要特征(面部轮廓、帽子形状)保持完整。在极高密度的脉冲噪声下(图像中黑白噪声点占绝大多数),去噪结果中仍然可以识别出人脸的大致轮廓和结构,但出现了一些伪影和细节丢失。
这些实验结果展示了基于图割的 TV 最小化方法在图像恢复中的有效性——它能够精确求解全局最优解,同时对不同类型和强度的噪声都具有良好的鲁棒性。与之前介绍的模拟退火方法相比,图割方法在保持相同或更好恢复质量的同时,计算速度快了若干个数量级。
多标签优化的应用实例
自然图像去噪与恢复
图片展示了一组松鼠图像的多标签优化结果。(a) 是原始的清晰图像,(b) 是被噪声污染后的观测图像,噪声非常严重,几乎无法辨认松鼠的细节。(c) 和 (d) 分别展示了不同方法或不同参数设置下的恢复结果——(c) 的恢复效果较好,松鼠的轮廓和草地的纹理基本可辨;(d) 中可以看到更多细节被恢复出来,但也保留了部分噪声残留。(e) 和 (f) 展示了另外两种处理结果,在去噪程度与细节保留之间展现了不同的权衡。这组对比说明了正则化参数 \beta 的选择对结果的影响——\beta 过大会导致过度平滑,\beta 过小则噪声去除不充分。
遥感图像处理
下方展示了图割方法在遥感图像处理中的应用。上排是 SAR(合成孔径雷达)图像的处理结果:左图是原始 SAR 图像(可以看到停机坪上的飞机和跑道),中间是经过 TV 去噪后的结果(斑点噪声被有效抑制,跑道和建筑结构变得清晰),右图是某种参数估计的彩色编码结果(用色彩表示不同的物理量或分类结果)。
下排展示了光学遥感图像的分类结果:左图是原始的高分辨率光学卫星图像(可以看到停车场、建筑、道路、植被等),中间和右侧是基于 MRF 模型和图割优化得到的分类或参数估计结果,用伪彩色编码表示不同类别(蓝色可能代表建筑/道路,红黄色代表植被等)。色标旁的数值表示参数的取值范围。这些实例展示了 MRF 和图割方法从自然图像到遥感图像的广泛适用性。
全图片方法总结
图片最后通过一张总结表格,将所有介绍过的图割方法按照标签空间、正则化条件、图结构和最优性保证进行了系统对比。
Greig 等人的方法处理二值标签空间,使用 Ising 正则化模型,构建的图包含所有像素节点加上源点 s 和汇点 t,能够找到全局最优解。这是最早也是最基础的图割方法。
Kolmogorov 和 Zabih 的方法同样处理二值标签空间,但将正则化推广到任意满足子模性条件的函数,图结构与 Greig 方法相同(像素 + s, t),同样保证全局最优。这是二值情形最一般化的精确解法。
Freedman 的方法也处理二值标签空间,能够处理三阶(order 3)的正则化项,即涉及三个像素的团势函数,超越了成对 MRF 的限制。
Boykov 等人的方法将图割推广到多标签空间,提出了两种近似算法。\alpha-\beta swap 要求正则化满足半度量条件,图中只包含当前涉及的两个标签的像素子集加上 s, t,得到局部最优解(local*,星号表示有理论保证的近似比)。\alpha-expansion 要求正则化满足更强的度量条件,图中包含所有像素加上 s, t,同样得到局部最优解但探索能力更强。
Ishikawa 的方法处理多标签空间,要求正则化是标签差值 |x_s - x_t| 的凸函数。图的规模为 S \times n + s, t(即像素数乘以标签数),能够找到全局最优解。代价是图的规模随标签数线性增长。
Darbon 等人的方法同样处理多标签空间,分为两种情况。当局部条件能量满足凸性时,各水平集可以独立求解,甚至可以用二分法(dichotomy)加速,得到全局最优解。当似然不满足凸性但正则化满足可水平化(levelable)条件时,需要构建包含所有水平集的联合图(S \times n + s, t),仍然能得到全局最优解。
从表格中可以清晰地看到整个图片的知识脉络:从二值到多标签,从精确到近似再回到精确,从简单的 Ising 模型到一般的凸正则化,每种方法都有其适用条件和最优性保证。选择哪种方法取决于具体问题的标签空间大小、正则化函数的性质、以及对全局最优性的需求。