2 数学预备
工业视觉工程的日常,表面上是调参数、配光源、写流程,底下却始终站着同一批数学角色:把工件”摆正”靠矩阵乘法,把一串边缘点变成一条基准线靠最小二乘,判断一个灰度值算不算异常靠概率分布,把定位精度从整像素推进到亚像素靠插值。这些内容在大学课程里分散于线性代数、概率统计与数值分析三门课,本章把其中真正会在产线上反复出场的一小块集中起来,按”后面哪一章要用”的标准取舍——不求全,只求每个公式都有明确的去处。下表是本章的学习地图:
| 本章小节 | 内容 | 支撑的后续章节 |
|---|---|---|
| 小节 2.1 | 向量、变换矩阵、齐次坐标、特征向量 | 章节 10、章节 5、章节 14 |
| 小节 2.2 | 正规方程、加权最小二乘、数值稳定性 | 章节 14、章节 5 |
| 小节 2.3 | 期望与方差、高斯分布、直方图、中心极限定理 | 章节 6、章节 7、章节 26 |
| 小节 2.4 | 双线性插值、抛物线三点插值 | 章节 10、章节 20、章节 14 |
需要说明:本章是理论章,没有独立的配套实验工程;这里推导出的每一条结论,都会在后续各章的真实实验中反复兑现——例如 章节 6 用 \(\sigma=18\) 的高斯噪声实验印证”平均抵消独立误差”,章节 14 用 0.723 px 对 0.257 px 的内点 RMSE 对照演示平方惩罚对离群点的敏感性。读者可以把本章当作一份”带证明的备忘录”,遇到后面章节的公式拿不准来历时,随时翻回来。
2.1 向量、矩阵与几何变换
全书用粗体小写字母表示向量(vector),且一律是列向量:图像平面上一个连续坐标点记作 \(\mathbf{x} = (x, y)^\top\),与 符号约定 一致;离散图像 \(f[n,m]\) 的 \(n\) 为行(向下)、\(m\) 为列(向右)。矩阵(matrix)用大写字母表示。一个 \(2\times 2\) 矩阵 \(A\) 作用在点上(\(\mathbf{x}' = A\mathbf{x}\))就是一次线性变换:旋转、缩放、剪切,都是某个具体的 \(A\)。
工业视觉最常用的三种 2D 变换构成一个由严到宽的家族。刚体变换(rigid transformation)只含旋转与平移:
\[ \mathbf{x}' = R\,\mathbf{x} + \mathbf{t}, \qquad R = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}, \]
共 3 个自由度(转角 \(\theta\) 加平移 \(\mathbf{t}\) 的两个分量),保持一切长度与角度——这正是”工件在载台上挪了位置、转了角度,但工件本身没变”的数学表述,也是位置补正的标准模型。相似变换(similarity transformation)在刚体之外允许一个整体缩放因子 \(s\)(即 \(\mathbf{x}' = sR\,\mathbf{x} + \mathbf{t}\),4 个自由度),长度不再不变,但角度与形状仍保持——适用于工作距离发生变化、像变大变小了的场合。仿射变换(affine transformation)进一步放开为任意可逆的 \(2\times 2\) 矩阵加平移(6 个自由度),允许两轴各自缩放与剪切,直线仍是直线、平行仍平行,但角度不再保持。章节 10 将把这套家族用于图像重采样与位置补正。
注意上面三式都写成”矩阵乘法加平移”——平移没法并进 \(2\times 2\) 矩阵里,因为线性变换必须把原点映到原点。齐次坐标(homogeneous coordinates)用一个简单的扩维解决此事:给每个点补一个 1,记 \(\tilde{\mathbf{x}} = (x, y, 1)^\top\),则仿射变换整体变成一次 \(3\times 3\) 矩阵乘法:
\[ \begin{pmatrix} x' \\ y' \\ 1 \end{pmatrix} = \begin{pmatrix} a_{11} & a_{12} & t_x \\ a_{21} & a_{22} & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} x \\ y \\ 1 \end{pmatrix}. \]
齐次坐标的工程价值在串联:取像坐标 → 畸变校正 → 位置补正 → 物理坐标,每一步都是一个 \(3\times 3\) 矩阵,整条链可以预先乘成一个矩阵,运行时每个点只做一次乘法。若最后一行不限于 \((0,0,1)\),便得到透视变换(单应,homography)——章节 5 描述平面标定板成像时离不开它。
最后是特征向量(eigenvector)的几何直觉,它将在 章节 14 的直线拟合闭式解中正面登场。对一组点 \(\{\mathbf{p}_i\}_{i=1}^{N}\),记质心 \(\bar{\mathbf{p}} = \frac{1}{N}\sum_i \mathbf{p}_i\),定义散布矩阵(scatter matrix)
\[ S = \sum_{i=1}^{N} (\mathbf{p}_i - \bar{\mathbf{p}})(\mathbf{p}_i - \bar{\mathbf{p}})^\top, \]
这是一个 \(2\times 2\) 对称矩阵。它的两个特征向量相互垂直,对应特征值(eigenvalue)大的那个方向,就是点集散得最开的方向——把一串沿某条边分布的边缘点丢进去,主特征向量直接给出边的走向。这不是巧合:可以证明,最小化各点到直线垂直距离平方和的最优直线,恰好过质心、方向取 \(S\) 的主特征向量。求一次质心、解一个 \(2\times 2\) 特征问题,直线拟合就有了闭式解——这正是 章节 14 中”解有闭式”一语的全部内容。
2.2 最小二乘与稳健性
最小二乘(least squares)是测量类算法的发动机,值得完整推一遍最简单的情形。设有 \(N\) 个点 \((x_i, y_i)\),想拟合直线 \(y = kx + b\),把”拟合得好”定义为竖直残差的平方和最小:
\[ E(k, b) = \sum_{i=1}^{N} (k x_i + b - y_i)^2 . \]
\(E\) 是 \(k, b\) 的光滑凸函数,极小值处偏导数为零:
\[ \frac{\partial E}{\partial k} = 2\sum_i x_i (k x_i + b - y_i) = 0, \qquad \frac{\partial E}{\partial b} = 2\sum_i (k x_i + b - y_i) = 0 . \]
整理成关于 \((k,b)\) 的线性方程组,即正规方程(normal equations):
\[ \begin{pmatrix} \sum_i x_i^2 & \sum_i x_i \\ \sum_i x_i & N \end{pmatrix} \begin{pmatrix} k \\ b \end{pmatrix} = \begin{pmatrix} \sum_i x_i y_i \\ \sum_i y_i \end{pmatrix}. \]
两行两列、解一次便得 \(k, b\);第二行还顺手给出一条好记的性质:\(b = \bar{y} - k\bar{x}\),即最小二乘直线必过点集质心。一般情形完全同构:把模型写成 \(A\boldsymbol{\theta} \approx \mathbf{y}\)(\(A\) 的每行是一个观测,\(\boldsymbol{\theta}\) 是待求参数),正规方程就是 \(A^\top A\,\boldsymbol{\theta} = A^\top \mathbf{y}\)。无论是圆拟合、标定板的单应估计还是手眼关系求解,最后多半都落到这个形式上。
条件数(condition number)度量解对输入扰动的放大倍数,而 \(A^\top A\) 的条件数是 \(A\) 的平方。若直接用像素坐标(动辄上千)拟合,\(\sum x_i^2\) 与 \(N\) 相差六个数量级,矩阵接近病态,浮点误差被急剧放大;圆拟合含 \(x^2+y^2\) 项,情况更糟。工程守则:先减去质心把数据中心化(必要时再除以尺度归一化),在小坐标下求解,最后把结果变换回去——几行代码换回好几位有效数字。
两个常用扩展。一是加权最小二乘(weighted least squares):若各观测的可信度不同,给每项配权重 \(w_i \ge 0\),最小化 \(\sum_i w_i r_i^2\),正规方程相应变为 \(A^\top W A\,\boldsymbol{\theta} = A^\top W \mathbf{y}\)(\(W\) 为对角权重矩阵)——推导与上面逐字相同,只是每个和式里多乘一个 \(w_i\)。二是把”竖直残差”换成点到直线的垂直距离:此时最优解不再由正规方程给出,而正是上一节的闭式——过质心、方向取散布矩阵主特征向量;它不偏向任何坐标轴,是几何拟合的正确姿势。
最小二乘的软肋同样藏在那个平方里:残差 12 px 的一个毛刺点,对目标函数的贡献是残差 0.5 px 正常点的近 600 倍,拟合结果会被极少数离群点绑架——章节 14 的对照实验给出了触目的数字(内点 RMSE 0.723 px 对 0.257 px)。解药是把平方惩罚换成对大残差宽容的惩罚(如 Huber 加权 (Huber 1964),借助加权最小二乘迭代求解)或随机抽样共识 RANSAC (Fischler 和 Bolles 1981),两者都留待该章结合实验细讲;本章只需记住病根:平方放大了大残差的话语权。
2.3 概率与统计基础
噪声没法逐像素预言,但可以统计刻画。把一次灰度观测看成随机变量(random variable)\(X\),两个最重要的摘要量是期望(expectation)\(\mu = \mathrm{E}[X]\)(多次观测的平均趋向)与方差(variance)\(\sigma^2 = \mathrm{E}[(X-\mu)^2]\)(围绕期望的散布程度),方差的平方根 \(\sigma\) 称为标准差,与灰度同量纲,工程上直接当”噪声幅度”用。由期望的线性性,加上独立观测的方差可加性,立刻得到一条产线上天天在用的定律:对 \(N\) 个独立同分布的观测取平均,平均值的方差是单次观测的 \(1/N\),即标准差缩小为 \(\sigma/\sqrt{N}\)——多帧平均、章节 6 的邻域平滑、章节 14 搜索线上的投影平均,全是这条 \(\sqrt{N}\) 定律的化身。
机器视觉里最重要的分布是高斯分布(Gaussian distribution)\(\mathcal{N}(\mu, \sigma^2)\),概率密度为
\[ p(x) = \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{(x-\mu)^2}{2\sigma^2}\right). \]
它的取值高度集中:落在 \(\mu \pm \sigma\)、\(\mu \pm 2\sigma\)、\(\mu \pm 3\sigma\) 内的概率分别约为 68.3%、95.4% 与 99.7%——最后一条就是著名的 3σ 法则。它给阈值设定提供了直接的语言:若良品区域的灰度服从 \(\mathcal{N}(\mu, \sigma^2)\),把”超出 \(\mu \pm 3\sigma\)“判为异常,单像素误报率只有约 0.3%。但要当心规模效应:一幅五百万像素的图,0.3% 意味着上万个像素纯因运气越界,所以缺陷检测实践中常放宽到 \(4\sigma\)~\(6\sigma\),或在 3σ 之后再加连通面积筛选——章节 26 会回到这笔账。
估计 \(\sigma\) 本身也要防离群点:样本标准差含平方项,几个坏点就能把它撑大。稳健的替代是绝对中位差(median absolute deviation,MAD):\(\hat{\sigma} = 1.4826 \times \operatorname{median}_i\big(|x_i - \operatorname{median}(x)|\big)\),系数 1.4826 使它在高斯数据上与标准差一致。中位数天然无视少数极端值,MAD 因此是产线阈值统计的常备件。
实际图像的分布从哪来?数一数就有:统计每个灰度级出现的像素数,得到直方图(histogram);除以总像素数,它就是灰度分布的经验估计——期望、方差都能直接从直方图算出。亮背景配暗工件的图像会呈现双峰直方图,两峰之间的谷底是天然的分割阈值;章节 7 的 Otsu 方法正是把直方图当作概率分布、寻找使两类之间方差最大的阈值,本节的期望与方差就是它的全部原料。
最后回答一个悬了两章的问题:凭什么传感器噪声用高斯模型?答案是中心极限定理(central limit theorem):大量相互独立、各自微小的随机扰动之和,无论单个扰动是什么分布,总和都趋于高斯分布。像素读数的扰动恰好是这种情形——暗电流的热涨落、读出电路噪声、增益放大的电子噪声层层叠加,每项都小而独立,于是总效果近似高斯。章节 6 以 \(\sigma=18\) 的高斯噪声做全部对照实验,依据正在于此;同时这也解释了该章的反例——椒盐噪声来自坏点与传输误码这类单一的、大幅度事件,不满足”大量微小独立”的前提,所以不是高斯,也就不该用对付高斯的办法对付它。
2.4 插值
图像只在整数格点上有值,但算法偏偏总在非整数位置要值:旋转一幅图像,目标像素映射回源图像的位置几乎从不落在格点上(章节 10);沿任意方向的搜索线取灰度剖面,采样点也在格点之间(章节 20)。插值(interpolation)负责回答”格点之间是什么”。
最便宜的是最近邻插值(nearest-neighbor interpolation):取距离最近的格点值。它不产生新的灰度值、速度最快,但位置上等于做了至多 0.5 像素的取整,几何变换后的边缘会呈锯齿状,测量场合基本不用。标准答案是双线性插值(bilinear interpolation):设采样点落在第 \(n\)、\(n+1\) 行与第 \(m\)、\(m+1\) 列围成的单位方格内,行、列方向的小数偏移分别为 \(\beta, \alpha \in [0,1)\),则
\[ f(n+\beta,\, m+\alpha) = (1-\alpha)(1-\beta)\, f[n,m] + \alpha(1-\beta)\, f[n,m+1] + (1-\alpha)\beta\, f[n+1,m] + \alpha\beta\, f[n+1,m+1]. \]
四个权重恰好是采样点把单位方格分成的四块对角面积:离哪个格点越近,那个格点的发言权越大;四个权重之和恒为 1,平坦区域插出来还是平坦的。双线性输出连续、计算量小,是工业几何变换的默认选择;更高阶的双三次(bicubic)插值用 \(4\times 4\) 邻域换取更平滑的结果,留待 章节 10 实测对比。
另一类插值不为重采样,而为找极值的精确位置——这是亚像素定位的数学核心。一维剖面的离散极值只能精确到整像素:设极值在局部坐标 \(u=0\) 处,函数值为 \(g_0\),左右邻 \(u=\mp 1\) 处为 \(g_{-1}, g_{+1}\)。真正的连续极值点未必在 \(u=0\),但三个点足以确定一条抛物线 \(g(u) = au^2 + bu + c\),用它的顶点近似真极值。代入三个采样点:
\[ g(0) = c = g_0, \qquad g(\pm 1) = a \pm b + c = g_{\pm 1}, \]
两式相加、相减立得
\[ a = \frac{g_{+1} + g_{-1} - 2g_0}{2}, \qquad b = \frac{g_{+1} - g_{-1}}{2}. \]
抛物线顶点位于导数为零处,即 \(u^\ast = -\,b/(2a)\),代入 \(a, b\):
\[ \delta = u^\ast = \frac{g_{-1} - g_{+1}}{2\,(g_{-1} - 2g_0 + g_{+1})}. \]
这正是 章节 14 边缘定位流程第 4 步的亚像素公式。两点检查可以加深信任:其一,若 \(g_{-1} = g_{+1}\)(左右对称),\(\delta = 0\),极值就在整像素处,符合直觉;其二,只要 \(g_0\) 是严格的离散极大值,分母 \(g_{-1} - 2g_0 + g_{+1} < 0\) 恒成立且 \(|\delta| \le 1/2\)——顶点不会跑出相邻像素的中点,公式数值上是安全的。三次取值、一次除法,定位精度即可从 1 像素量级进到 0.1 像素量级,这就是”亚像素几乎免费”的全部成本。
工业案例:把测量做对的三件小事
一家精密结构件厂的视觉工程师曾在复盘会上总结过三个”小数学”教训。第一件:早期的圆度检测程序直接用全幅像素坐标拟合圆,坐标值上千,含 \(x^2+y^2\) 项的正规方程条件数巨大,同一工件连测十次圆心能漂 0.3 px;拟合前先减质心、解完再加回去,漂移当场降到 0.02 px。第二件:用”均值 ±3σ 剔坏点”清洗边缘点时,σ 是连同坏点一起算的——坏点先把 σ 撑大,再借放宽的门槛全体过关;改为先用 MAD 估计稳健的 σ、或剔除后迭代重估,门槛才真正立了起来。第三件:一条量线宽的工序重复精度始终差 0.1 px 上下,排查光源、振动无果,最后发现取剖面用的是最近邻插值——换成双线性,重复精度立刻达标。三件事没有一件涉及高深算法,全是本章这几页纸的内容。
2.5 小结
- 齐次坐标把”矩阵乘法加平移”统一成一次 \(3\times 3\) 乘法,串联变换链可预乘成单个矩阵;刚体(3 自由度)、相似(4)、仿射(6)构成由严到宽的 2D 变换家族,分别保持长度、形状与平行性。
- 正规方程来自”对目标函数求偏导置零”:一般形式 \(A^\top A\,\boldsymbol{\theta} = A^\top \mathbf{y}\),加权版只需在每个和式里乘 \(w_i\);按垂直距离拟合直线的闭式解是”过质心、方向取散布矩阵主特征向量”。
- 数值稳定性是测量精度的一部分:\(A^\top A\) 把条件数平方,大坐标下务必先中心化再拟合;平方惩罚放大离群点话语权,稳健拟合(Huber、RANSAC)在 章节 14 接棒。
- 高斯分布 + 3σ 法则是阈值设定的语言,中心极限定理解释了传感器噪声为何近高斯;直方图是分布的经验估计,平均使噪声按 \(\sigma/\sqrt{N}\) 收敛——平滑、投影、多帧平均共享同一条定律。
- 双线性插值按对角面积加权四个邻点;抛物线三点插值给出顶点偏移 \(\delta = (g_{-1}-g_{+1})/(2(g_{-1}-2g_0+g_{+1}))\),且恒有 \(|\delta|\le 1/2\)——它是全书一切亚像素公式的源头。
概率、统计与高斯模型一脉的系统论述见 (Bishop 2006);最小二乘的正规方程、条件数与数值稳定性是数值线性代数的经典内容,权威参考是 (Golub 和 Van Loan 2013);几何变换、线性代数与优化在视觉语境下的速查可参阅 (Szeliski 2022) 的附录。本章内容在 Steger 等人的著作 (Steger, Ulrich, 和 Wiedemann 2018) 中有更完整、更贴近工业测量的展开,尤其是几何变换、最小二乘拟合及其不确定度分析两部分,适合作为延伸阅读。