把连续的数学函数(例如高斯分布)变成可计算的离散卷积核(也叫模板 / 算子),是数字图像处理里最基础也最常用的一类“落地”操作。一个非常通用的流程是:
- 采样(Sampling): 在整数网格上取值
- 截断(Windowing): 选一个有限窗口,丢掉远处几乎为 0 的部分
- 归一化(Normalization): 按任务目标施加约束(和为 1、和为 0 等)
本文按“卷积核离散化 → 多尺度表示 → 特征点检测”的逻辑,把 Gaussian / LoG / DoG、图像金字塔、尺度空间、SIFT、PMK / SPM 串起来梳理一遍。
1 从连续函数到离散卷积核¶
1.1 高斯滤波(Gaussian Filter)¶
高斯滤波的核心是二维高斯分布函数:
1.1.1 确定参数¶
首先需要确定标准差 \(\sigma\)。\(\sigma\) 决定平滑的程度(\(\sigma\) 越大越模糊)。
1.1.2 采样与截断(确定窗口大小)¶
理论上高斯函数在无穷远处才趋于 0,但计算机无法处理无限大的矩阵:
- 规则: 根据正态分布的 “\(3\sigma\) 法则”,在 \(3\sigma\) 之外的权重极小,可以忽略
- 窗口大小: 通常取 \((6\sigma + 1)\times(6\sigma + 1)\) 并向上取整为奇数。例如 \(\sigma=0.8\) 可取 \(3\times 3\);\(\sigma=1.0\) 可取 \(5\times 5\)
- 坐标赋值: 以窗口中心为原点 \((0, 0)\)。对于 \(3\times 3\) 窗口,坐标 \((x, y)\) 取 \(\{-1, 0, 1\}\)
1.1.3 计算离散值¶
将每个坐标 \((x, y)\) 代入公式。以 \(\sigma=1.0\) 的 \(3\times 3\) 核为例:
- \(G(-1, -1)=\frac{1}{2\pi} e^{-\frac{1 + 1}{2}}\approx 0.0585\)
- \(G(0, 0)=\frac{1}{2\pi} e^{0}\approx 0.1592\)
以此类推计算出 9 个点的数值。
1.1.4 归一化(Normalization)¶
这一步决定了卷积核“做什么事”:为了保证滤波后图像整体亮度不变,高斯核通常要求所有元素之和为 1。
- 将计算出的值加总求和得到 \(S\)
- 让每个位置的值都除以 \(S\),得到离散的高斯卷积核
1.2 LoG 算子(Laplacian of Gaussian)¶
LoG 的思路是:先做高斯平滑,再取拉普拉斯二阶导。利用卷积结合律,这等价于先对高斯函数求导,再用导数核去卷积图像。
1.2.1 连续函数推导¶
对 \(G(x, y)\) 关于 \(x\) 和 \(y\) 分别求二阶偏导并相加(\(\nabla^2 G\)),得到“墨西哥草帽”函数:
1.2.2 采样与离散化¶
与高斯滤波类似,选定 \(\sigma\) 和窗口大小。由于 LoG 既有正值又有负值,窗口通常会比纯高斯核更大一些(例如 \(5\times 5\) 或 \(9\times 9\)):
- 将整数坐标 \((x, y)\) 代入上面的 LoG 公式,得到离散值
1.2.3 均值归零(Zero-Sum Constraint)¶
与高斯核不同,LoG 的目标是检测边缘(响应高频)。在平坦区域(灰度值相同)输出应接近 0,因此离散化后的 LoG 核常要求元素和为 0:
- 计算所有元素之和,若不为 0,通常通过微调中心点或按比例缩放使整体和为 0
1.3 小结:Gaussian vs LoG¶
| 特性 | 高斯滤波(Gaussian) | LoG 算子 |
|---|---|---|
| 数学形状 | 钟形曲线(Bell shape) | 墨西哥草帽(Mexican Hat) |
| 主要用途 | 去噪、平滑 | 边缘检测、斑点检测 |
| 核元素总和 | 必须等于 1(保持亮度) | 通常等于 0(抑制平坦区) |
| 中心点值 | 最大正值 | 极大的正值或负值 |
| 边缘表现 | 模糊边缘 | 提取二阶导数零交叉点 |
1.3.1 实际开发中的简化¶
在 OpenCV / MATLAB 中通常不需要手动推导离散值:
- 直接调用: 例如 OpenCV 的
getGaussianKernel - 整数化近似: 为加速计算,有时会把浮点卷积核乘以系数(例如 16 或 256)并取整,例如 \(3\times 3\) 近似核:
$$ \frac{1}{16} \begin{bmatrix} 1 & 2 & 1 \ 2 & 4 & 2 \ 1 & 2 & 1 \end{bmatrix} $$
这种形式在嵌入式或实时视觉系统中很常见,因为可用移位运算替代除法。
2 DoG(Difference of Gaussians)¶
DoG(Difference of Gaussians),中文常称 “高斯差分”。它的核心操作非常简单:同一张图像分别用两个不同的 \(\sigma\) 做高斯模糊,再相减。
2.1 核心原理¶
DoG 的计算过程:
- 高斯模糊 1: 用标准差 \(\sigma_1\) 滤波得到 \(L_1\)
- 高斯模糊 2: 用标准差 \(\sigma_2\) 滤波得到 \(L_2\)(通常 \(\sigma_2>\sigma_1\))
- 相减: \(DoG = L_1 - L_2\)
直观上,高斯滤波是“低通滤波器”(保留低频,滤掉高频):
- \(L_1\) 丢失少量细节
- \(L_2\) 丢失更多细节
- \(L_1 - L_2\) 提取的是两者之间的一段频带信息,近似“带通滤波器”
2.2 为什么要用 DoG(与 LoG 的关系)¶
DoG 最著名的一点:它是 LoG 的一个高效近似。
- LoG 的问题: 二阶导数计算量大且对噪声敏感
- DoG 的巧妙之处: 当两个高斯核的尺度比例 \(k=\sigma_2/\sigma_1\) 接近 1.6 时,DoG 的响应形状与 LoG 非常接近
因此在工程里,经常用 DoG 代替 LoG 去寻找图像中的特征点。
2.3 DoG 的典型应用¶
2.3.1 SIFT 关键点检测¶
SIFT(尺度不变特征变换)会构建 “高斯差分金字塔”:
- 对图像做一系列不同程度的高斯模糊
- 相邻模糊图像相减得到 DoG 图像
- 在 DoG 的尺度空间中搜索局部极值点,作为候选关键点(斑点)
2.3.2 斑点检测(Blob Detection)¶
DoG 对圆形、明暗变化明显的斑点响应强。当斑点半径与 \(\sigma\) 匹配时响应最大。
2.3.3 边缘检测与增强¶
DoG 也能提取边缘,在一些艺术化处理里可用于模拟素描效果或增强细节(锐化)。
2.4 小结:DoG vs LoG vs 高斯滤波¶
| 算子 | 操作 | 作用 | 形象比喻 |
|---|---|---|---|
| 高斯滤波 | 平滑 / 模糊 | 去噪、提取低频 | 磨皮 |
| LoG | 二阶导数 | 边缘 / 斑点检测(精准但慢) | 寻找轮廓和突变 |
| DoG | 相减 | 高效近似 LoG | 用减法模拟求导 |
一句话总结:DoG 通过“两次模糊 + 一次相减”高效提取关键结构,是许多传统特征方法的基础组件。
3 图像金字塔(Image Pyramid)¶
图像金字塔是一幅图像在不同分辨率下的一组表示:越往上分辨率越低,视觉上像一座金字塔。
3.1 为什么需要图像金字塔¶
视觉任务里目标大小不确定:
- 例如人脸可能占满屏幕(近处),也可能只有几个像素(远处)
- 固定大小的卷积核(例如 \(3\times 3\))只能捕捉固定尺度的模式
图像金字塔的目的,是为算法提供 “多尺度视角”。
3.2 金字塔的结构¶
底层(Level 0)是原图,向上层层下采样:
- 向下采样(Downsampling): 从底层到顶层,分辨率降低、信息减少
- 向上采样(Upsampling): 从顶层到低层,为重建或融合服务,通常会更模糊
3.3 常见的两种金字塔¶
3.3.1 高斯金字塔(Gaussian Pyramid)¶
制作方法:
- 对当前层进行高斯滤波(平滑去噪)
- 删除所有偶数行和偶数列(降采样),图像缩小为原来的 \(1/4\)
用途:多尺度目标检测、早期特征匹配等。
3.3.2 拉普拉斯金字塔(Laplacian Pyramid)¶
拉普拉斯金字塔记录的是残差(丢失的高频信息)。
制作方法:
- 用高斯金字塔第 \(n\) 层减去第 \(n+1\) 层上采样后的结果
- \(L_i = G_i - \text{Upsample}(G_{i+1})\)
用途:
- 图像压缩:平坦区域接近 0,利于编码
- 图像重建:用残差与顶层小图可还原原图
- 图像融合:多尺度无缝拼接(经典例子是苹果与橙子融合)
3.4 现代视觉中的应用¶
- SIFT 的尺度空间: DoG 就是在高斯金字塔相邻层之间做差
- FPN(特征金字塔网络): 深度网络里多层特征天然构成金字塔,FPN 把深层语义传回浅层,增强小目标检测能力
- 粗到精(Coarse-to-fine): 光流 / 配准等问题里先在小图估位移,再逐层精修
4 尺度空间(Scale Space)¶
尺度空间是同一幅图像在不同模糊程度(不同 \(\sigma\))下的连续表示。
4.1 为什么需要尺度¶
物体只有在特定尺度下才“有意义”:
- 微观尺度看叶脉纹理
- 中观尺度看树冠形状
- 宏观尺度可能只是一个绿色斑点
相机不知道目标距离:同一物体在图像里可能大也可能小。尺度空间提供了跨尺度的鲁棒表征。
4.2 高斯尺度空间的定义¶
在图像处理里(数学上有严格论证),构建尺度空间的基本手段是高斯模糊:
- \(I(x, y)\) 是原始图像
- \(G(x, y, \sigma)\) 是高斯核
- \(\sigma\) 是尺度参数
关键点:
- \(\sigma\) 小:模糊弱,代表精细尺度(细节多)
- \(\sigma\) 大:模糊强,代表粗略尺度(结构多)
4.3 两个常见维度:Octave 与 Layer¶
- Octave(八度): 对应图像金字塔的分辨率层级,每个 Octave 让分辨率减半
- Layer(层): 在同一分辨率下使用不同 \(\sigma\) 的多次高斯模糊
4.4 为什么必须用高斯核(因果性)¶
高斯核的关键性质是:随着尺度增大,只会“丢失结构”,不会凭空产生新结构(避免伪边缘与振铃)。这保证了尺度空间的单调性 / 因果性。
4.5 尺度空间的应用:特征检测¶
尺度空间最重要的用途之一,是 自动选择尺度。例如在 SIFT 中:
- 在 \(x, y\) 平面上比较邻域像素
- 在 \(\sigma\) 轴上比较相邻尺度层
若某点在 \((x, y, \sigma)\) 三维邻域内是局部极值,则视为关键点,同时得到它的 “特征尺度”(例如在 \(\sigma=3.2\) 时响应最强)。
5 SIFT:尺度不变特征变换¶
SIFT(Scale-Invariant Feature Transform)由 David Lowe 1999 年提出、2004 年完善。它在深度学习普及前是特征匹配与识别的工业标准之一。
5.1 四个不变性¶
- 尺度不变性
- 旋转不变性
- 光照不变性
- 视角不变性(一定范围内)
5.2 四个步骤¶
5.2.1 尺度空间极值检测(候选点)¶
- 构建高斯金字塔(平滑 + 降采样)
- 计算 DoG(相邻高斯层做差)
- 对每个像素,与 **26 个邻居**比较(本层 8 个 + 上层 9 个 + 下层 9 个),找局部极值点
5.2.2 关键点精确定位(剔除坏点)¶
- 子像素补偿:用泰勒展开把坐标从整数像素精确到亚像素
- 剔除低对比度点:响应太小的点多半来自噪声
- 剔除边缘响应点:利用 Hessian 主曲率,去掉不稳定边缘点
5.2.3 方向分配(实现旋转不变性)¶
- 计算梯度幅值与方向
- 统计 36-bin 方向直方图(覆盖 360 度,每 10 度一柱)
- 取主峰为主方向;若次峰达到主峰 80%,可额外生成一个方向关键点
5.2.4 生成描述子(128 维向量)¶
- 对齐到主方向
- 取 \(16\times 16\) 窗口,划分为 \(4\times 4\) 个小块
- 每个小块统计 8 个方向的梯度直方图:\(4\times 4\times 8=128\)
- 对 128 维向量归一化,提高光照鲁棒性
5.3 匹配策略与优缺点¶
匹配通常用欧氏距离,再用 Lowe’s Ratio Test 过滤不可靠匹配:对图 A 的一个点,在图 B 找最近两点距离 \(d_1, d_2\),若 \(d_1/d_2<0.8\) 则保留。
优点:
- 稳定:在噪声、遮挡、仿射变化下仍较鲁棒
- 区分度高:128 维描述子信息丰富
缺点:
- 速度慢:金字塔 + 描述子计算耗时
- 专利曾限制使用(2020 年后专利到期)
6 从 BoW 到空间信息:PMK 与 SPM¶
传统 BoW(词袋模型)丢弃空间结构,只保留“有什么”,不保留“在哪里”。PMK 与 SPM 是把多尺度思想引入匹配与分类的重要桥梁。
6.1 PMK(Pyramid Match Kernel)¶
PMK 解决 “不等长特征集如何比较” 的问题:在特征空间中建立金字塔,并用直方图交集统计重合程度,越细层级的重合权重越高。
6.2 SPM(Spatial Pyramid Matching)¶
SPM 把 PMK 的思想搬到图像空间:把图像递归划分为 \(1\times 1\)、\(2\times 2\)、\(4\times 4\) 等网格,在每个网格统计特征直方图,再按层级加权拼接为长向量用于分类(例如 SVM)。
6.3 对比:PMK vs SPM¶
| 特性 | PMK(Pyramid Match Kernel) | SPM(Spatial Pyramid Matching) |
|---|---|---|
| 划分对象 | 特征空间(Feature Space) | 图像空间(Spatial / Image Space) |
| 主要目的 | 快速比较不等长特征集 | 在分类中引入空间结构 |
| 层级意义 | 相似程度的粗细刻画 | 空间位置精确度(局部 vs 整体) |
6.4 为什么后来不那么常提¶
随着 CNN 的普及:
- 网络的层级结构天然形成多尺度特征
- FPN 等结构可以视为 SPM 思想的现代版本
- “手工特征 + 码本” 被“端到端学习特征”替代
7 总结¶
- 卷积核离散化的关键是 “采样 + 截断 + 归一化”,不同任务对应不同约束
- DoG 是 LoG 的高效近似,是多尺度特征检测的经典组件
- 图像金字塔解决分辨率尺度,尺度空间解决模糊尺度,两者结合支撑了 SIFT 等传统方法
- PMK / SPM 把多尺度思想引入匹配与分类,是从 BoW 走向结构感知的关键一步