强度一致性匹配方法
强度一致性方法不先产生离散关键点,而是在给定几何模型和初始值后,直接优化两幅图像有效重叠区域的像素、梯度或统计相关性。ECC 是这类方法的典型代表。
1. 输入、输出与基本链路
输入:两幅尺度与视场已经基本统一的图像,以及一个足够接近的初始变换。
输出:使重叠区域相似度最大的变换参数和 Warp 结果。
VIS + IR
→ 尺度统一、确定公共视场
→ 给定初始变换 p
→ 按 p 变换 IR
→ 计算变换后与 VIS 的相似度
→ 更新 p
→ 迭代至收敛
→ 输出最终变换
这里的“强度”不一定只指原始灰度,也可以指梯度、边缘或其他像素统计量。
2. 与特征匹配的区别
| 路线 | 中间表示 | 优化对象 |
|---|---|---|
| 特征匹配 | 关键点、描述子和离散点对 | 由点对估计几何矩阵 |
| 强度一致性(ECC) | 有效重叠区域的像素/梯度向量 | 直接优化变换参数 |
对应流程分别是:
特征法:图像 → 关键点/描述子 → 匹配点对 → RANSAC → 几何矩阵
强度法:图像 → 初始变换 → 计算整体相似度 → 迭代优化
强度法直接问:
当前变换下,两幅图的重叠区域在整体统计上有多一致?
3. ECC 的核心计算
把有效重叠区域像素拉成向量:
iV = VIS 有效区域的像素向量
iT(p) = 当前变换 p 后的 IR 像素向量
mean(iV) = VIS 区域平均灰度
mean(iT) = 变换后 IR 区域平均灰度
先去均值:
iV_center = iV − mean(iV)
iT_center = iT(p) − mean(iT(p))
再比较两个去均值向量的方向:
ECC(p) = dot(iV_center, iT_center)
÷ (norm(iV_center) × norm(iT_center))
优化目标是让 ECC(p) 尽可能大。
4. 为什么要去均值和归一化
如果直接比较像素值,整体亮度变化会严重影响结果。例如同一结构在 VIS 中较暗、在 IR 中较亮,像素差很大,但空间结构可能仍然对应。
去均值相当于:
每个像素 − 该区域平均亮度
这样算法对整体亮度偏移不那么敏感,更关注灰度变化结构。再除以向量长度后,比较的是方向而非绝对幅值。因此 ECC 可以直观理解为:
把两幅图看成两个高维向量,调整变换参数,使去均值后的两个向量夹角尽量小。
5. 适用条件与失败边界
适合
- 已经有较好的初始变换;
- 两幅图的重叠区域较大;
- 配准主要是平移、仿射或小范围变形;
- 灰度结构、边缘或梯度在两种模态之间仍有一定对应关系;
- 能够明确提供有效区域 Mask。
当前 VIS-IR 项目中,如果标定已经给出固定尺度和初始平移,ECC 或相关性优化可以作为在线平移微调器。
容易失败
- 初始变换离真实位置太远;
- 公共区域太小;
- VIS 与 IR 的亮度关系不是单调,或结构差异很大;
- 黑边、Warp 空洞或无效区域进入统计;
- 场景中有大量运动目标;
- 变换模型自由度过高,优化陷入错误局部极值。
因此不能把 ECC 当作无需初始化的万能配准器。它需要合理的尺度、旋转、平移和 Mask。
6. 当前项目中的推荐用法
固定 SENSOR_SCALE
→ 使用 BASE_DX、BASE_DY 作为初始值
→ 只在固定公共 ROI 内计算相关性
→ 排除 IR 无效区、黑边和 Warp 插值空洞
→ 在小窗口内优化 dx、dy
→ 检查相关性增益和残差
→ 输出融合图
如果任务只是平移微调,没必要每帧重新求完整 8 自由度单应性。可以把搜索范围限制在验证数据确定的小窗口,例如 ±5 或 ±10 像素;窗口大小应根据真实数据中的视差、安装变化和运动情况确定。
7. 与特征法的两阶段配合
两者不是互斥关系,可以采用:
特征匹配 / 人工标定
→ 得到粗略变换
→ ECC 或相关性优化
→ 得到局部精细变换
特征法擅长提供较大范围的初始对应,强度法擅长在初值附近做连续优化。反过来,如果强度法能稳定给出初始位置,也可以不使用特征点。
8. 实操检查清单
- 初始变换足够接近真实位置;
- 只在公共重叠区域内计算目标函数;
- 黑边和 Warp 空洞已从 Mask 中排除;
- 运动目标不会主导相关性;
- 变换模型自由度与实际安装误差匹配;
- 设置最大迭代次数和收敛阈值;
- 输出前确认相关性提高、残差下降;
- 用独立点或独立图像验证,而不是只看优化目标值。
结论
特征法是“先找对应点,再求矩阵”;强度法是“直接调矩阵,让重叠区域更像”。
ECC 比较的是去均值、归一化后的整体结构一致性,不是简单的逐像素相减;它最适合在可靠初值附近做精细校正。