第 4 章 模型拟合与优化 (Model Fitting and Optimization)
核心结论
-
散乱数据插值(§4.1):最近邻 / 线性 / 双线性 / 三线性插值;不规则网格数据 → 规则网格。
-
变分法与正则化(§4.2):能量最小化
E(u) = E_d(u) + \lambda E_s(u);数据项 + 平滑项;图像去噪 / 分割的标准框架。 -
马尔可夫随机场 (MRF)(§4.3):图模型表示像素关系;Gibbs 采样 / 信念传播(BP)求解;图像分割 / 去噪的统计框架。
-
优化算法:梯度下降 / Levenberg-Marquardt / 模拟退火 / 图割(Graph Cut)。
-
鲁棒估计:RANSAC / Hough 变换 / M-估计器——处理噪声与外点。
|
本章主旨
本章是"图像 → 信息"的桥梁——把像素数据拟合成数学模型(直线 / 曲线 / 分割)。理解后才能做边缘检测 / 图像分割 / 立体匹配 / 3D 重建。优化理论贯穿整个 CV;本章给出基础工具。 |
一、核心概念
本章围绕 6 个核心概念展开:散乱插值 → 变分法 → MRF → 优化算法 → 鲁棒估计 → M-估计器。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
散乱数据插值 |
最近邻 / 线性 / 双线性插值;不规则网格 → 规则网格。 |
§4.1;图像重采样 / 变形 / 配准基础。 |
变分法与正则化 |
能量最小化 |
§4.2;图像去噪 / 分割 / 光流的标准框架。 |
马尔可夫随机场 (MRF) |
图模型表示像素关系;BP / 图割求解。 |
§4.3;图像分割 / 去噪的统计框架。 |
优化算法 |
梯度下降 / Levenberg-Marquardt / 模拟退火;凸 vs 非凸。 |
§4.2;所有 CV 优化的基础工具。 |
鲁棒估计 |
RANSAC / Hough 变换 / M-估计器;处理外点(outlier)。 |
§4.4;特征匹配 / 相机标定的核心。 |
图割 (Graph Cut) |
把能量最小化转为图论问题;高效全局最优(能量是子模时)。 |
§4.2;图像分割的工业级方法。 |
二、详细笔记
2.1 散乱数据插值 (Scattered Data Interpolation)
What:不规则网格 / 散乱点 → 规则网格 / 表面重建。
Why:图像重采样 / 变形 / 配准 / 3D 重建都需要插值。
How:
插值方法(§4.1):
-
最近邻:
u(x) = u(x_i),x_i是最近点。最快但阶梯状。 -
线性 / 双线性:
u(x) = \sum w_i u(x_i),\sum w_i = 1,w_i ∝ 1/|x - x_i|。 -
三次 / 双三次:16 个邻居;平滑但慢。
-
样条 / RBF:平滑通过所有点;适合稀疏数据。
|
插值的工程权衡
|
When:图像重采样(resize / 旋转);图像变形;3D 表面重建。
Example:cv2.resize(img, dsize, interpolation=cv2.INTER_LINEAR);scipy.interpolate.griddata。
2.2 变分法与正则化 (Variational Methods)
What:把图像处理问题转为能量最小化;E(u) = E_d(u) + \lambda E_s(u)。
Why:图像去噪 / 分割 / 光流 / 立体匹配的标准框架。
How:
变分框架(§4.2):
-
数据项
E_d:解应接近观测f。 -
平滑项
E_s:解应平滑。 -
λ:权重(越大越平滑)。
欧拉-拉格朗日方程:
(泊松方程或调和方程)。
|
正则化的工程意义
|
When:图像去噪(TV-L1);图像分割(Mumford-Shah);光流(TV-L1);深度学习(weight decay / dropout)。
Example:cv2.ximgproc.createFastGlobalSmootherFilter 实现 TV 平滑;Rudin-Osher-Fatemi 1992 是经典 TV 去噪。
2.3 马尔可夫随机场 (MRF)
What:图模型表示像素(节点)+ 邻域关系(边);联合分布 P(x) ∝ exp(-E(x)/T)。
Why:图像分割 / 去噪 / 立体匹配的统计框架;提供严格的概率基础。
How:
MRF 定义(§4.3):
-
x:像素标签(分割 / 去噪等)。 -
c:团(clique,通常是相邻像素对)。 -
E_c:团能量。 -
Z:配分函数(归一化)。 -
T:温度(控制分布尖锐度)。
求解算法:
-
Gibbs 采样:MCMC;慢但通用。
-
信念传播 (BP):消息传递;近似但快。
-
图割:能量是子模时全局最优;高效。
|
MRF vs CRF
|
When:图像分割(CRFasRNN / DeepLab);立体匹配(MRF / SGM);图像去噪。
Example:pydensecrf 实现 DenseCRF;OpenCV cv2.ximgproc.createDisparityWLSFilter 实现 SGM 立体匹配。
2.4 鲁棒估计 (Robust Estimation)
What:处理含外点(outlier)的数据——RANSAC / Hough / M-估计器。
Why:现实数据总有外点;鲁棒估计是 CV 算法的核心。
How:
RANSAC 算法(§4.4):
-
随机采样最小子集(如直线拟合采 2 点)。
-
估计模型。
-
计算 inlier 数(误差小于阈值)。
-
重复 N 次,取 inlier 数最多的模型。
-
用所有 inlier 重新估计模型。
|
RANSAC vs 鲁棒核函数
|
When:特征匹配(ORB / SIFT 误匹配去除);相机标定(外点去除);直线 / 圆 / 椭圆拟合。
Example:cv2.findFundamentalMat 用 RANSAC 估计基础矩阵;cv2.fitLine 用 M-估计器。
2.5 图割 (Graph Cut)
What:把能量最小化转为图论问题;用 max-flow / min-cut 算法求全局最优。
Why:能量是子模时图割给全局最优;图像分割的工业级方法。
How:
图割构造(§4.2):
-
节点:每个像素 + 源 + 汇。
-
边权重:数据项 + 平滑项。
-
最小割 = 最小能量。
子模条件:E(0,0) + E(1,1) ≤ E(0,1) + E(1,0);保证多项式时间全局最优。
|
图割 vs 其他优化
|
When:图像分割(前景 / 背景);立体匹配;图像拼接(找接缝)。
Example:cv2.grabCut(img, mask, rect, bgdModel, fgdModel, iterCount, mode);gco Python 库实现图割。
2.6 优化算法 (Optimization Algorithms)
What:梯度下降 / 牛顿法 / Levenberg-Marquardt / 模拟退火 / EM。
Why:所有 CV 算法都涉及优化;选对算法事半功倍。
How:
常见优化算法(§4.2):
-
梯度下降 (GD):
x ← x - η ∇f(x);简单但慢。 -
牛顿法:
x ← x - H⁻¹ ∇f(x);快但二阶导贵。 -
Levenberg-Marquardt (LM):高斯-牛顿 + 阻尼;适合非线性最小二乘。
-
EM 算法:处理隐变量;聚类 / 配准常用。
-
模拟退火 / ICM:跳出局部最优;慢。
|
凸 vs 非凸优化
|
When:曲线拟合(LM);聚类(EM);光流(变分法);训练神经网络(SGD / Adam)。
Example:scipy.optimize.least_squares(method='lm') 实现 LM;PyTorch optim.Adam 实现 Adam 优化。
三、关键图表
视觉图表
非可视化条目
|
非可视化条目(表 / 算法)
|
核心公式对照表
|
核心公式对照表
|
四、思维导图
mindmap
root((第 4 章 模型拟合与优化))
散乱插值
最近邻
双线性
样条RBF
变分法
数据项
平滑项
TV正则化
MRF
图模型
Gibbs采样
信念传播
鲁棒估计
RANSAC
Hough
M估计器
图割
子模能量
全局最优
GrabCut
优化算法
梯度下降
LM
EM
模拟退火
五、重点与易错点
-
变分法是 CV 优化基础:图像去噪 / 分割 / 光流都基于能量最小化。
-
MRF / CRF 是统计图像建模标准:直接建模条件分布,比 MRF 更灵活。
-
图割对子模能量全局最优:非子模能量(高阶)需 α-expansion 等近似。
-
RANSAC 对极端外点鲁棒:但需估计迭代次数;外点率 > 50% 时失效。
-
TV 正则化保边:L1 范数约束梯度;适合图像去噪 / 分割。
-
Levenberg-Marquardt 是非线性最小二乘首选:高斯-牛顿 + 阻尼;适合曲线 / 相机标定。
-
EM 算法处理隐变量:聚类 / 配准 / 隐马尔可夫模型的标准方法。
-
跨章衔接:第 5 章深度学习 = MRF + 大规模优化;第 6 章识别 = 优化损失函数;第 8 章对齐 = 鲁棒估计。