第 8 章 图像对齐与拼接 (Image Alignment and Stitching)

      +

      核心结论

      • 两两对齐(§8.1):单应 / 仿射 / 刚性变换估计;最小二乘 + RANSAC;图像配准。

      • 图像拼接(§8.2):全景图 = 特征匹配 + 单应估计 + 图像变形 + 融合(blending);OpenCV Stitcher 一键完成。

      • 全局对齐(§8.3):多图像同时对齐;bundle adjustment;最小化重投影误差。

      • 合成(§8.4):拉普拉斯金字塔 blend(避免接缝);多频段融合。

      • 应用:全景图 / 图像拼接 / 视频拼接 / 文档扫描。

      本章主旨

      本章是"图像拼接章"——把多张重叠图像合成一张大图。全景图 / 街景 / 文档扫描都依赖此技术。理解单应估计 + bundle adjustment 才能构建高质量拼接。

      一、核心概念

      本章围绕 4 个核心概念展开:两两对齐 → 图像拼接 → 全局对齐 → 合成。

      概念 定义 + 重要性 实现提示

      两两对齐

      两图之间的几何变换估计;单应 / 仿射 / 刚性。

      §8.1;图像配准的基础。

      图像拼接

      多图合成全景图;特征匹配 + 单应 + 变形 + 融合。

      §8.2;全景图 / 街景的核心。

      全局对齐

      多图像同时对齐;bundle adjustment;最小化重投影误差。

      §8.3;多图拼接的精度优化。

      合成 (compositing)

      多频段融合(拉普拉斯金字塔 blend);消除接缝。

      §8.4;高质量拼接的关键。

      二、详细笔记

      2.1 两两对齐 (Pairwise Alignment)

      What:估计两图之间的几何变换(平移 / 旋转 / 仿射 / 单应)。

      Why:图像拼接 / 配准 / 跟踪的基础。

      How

      变换类型(§8.1):

      • 平移[1 0 tx; 0 1 ty](2 自由度)。

      • 刚性(旋转 + 平移):3 自由度。

      • 缩放:2 自由度。

      • 仿射:旋转 + 缩放 + 剪切 + 平移(6 自由度)。

      • 单应(透视):3×3(8 自由度)。

      参数估计(§8.1.2):

      • 最小二乘:所有匹配点都参与;对外点敏感。

      • RANSAC(§4.4):鲁棒估计;处理外点。

      • DLT(直接线性变换):单应估计的闭式解。

      单应的几何意义
      • 单应矩阵 H(3×3)描述两平面之间的投影变换。

      • 当场景是平面(墙 / 桌面)或相机纯旋转时,单应可描述两图关系。

      • 8 个自由度(3×3 减去 1 个尺度)。

      When:图像拼接 / 配准;AR;文档扫描。

      Examplecv2.findHomography(src_pts, dst_pts, cv2.RANSAC)cv2.warpPerspective

      2.2 图像拼接 (Image Stitching)

      What:把多张重叠图像合成一张全景图。

      Why:全景图 / 街景 / 监控大场景的标准方法。

      How

      拼接流程(§8.2):

      1. 特征检测 + 匹配(§7):SIFT / ORB + RANSAC。

      2. 单应估计:把每对相邻图像映射到同一坐标系。

      3. 图像变形warpPerspective 把每张图投影到全景平面。

      4. 融合(blending):拉普拉斯金字塔融合消除接缝。

      5. 曝光补偿:直方图匹配消除色差。

      拼接的常见问题
      • 鬼影(ghosting):移动物体;需多带 blending / 中值滤波。

      • 接缝(seam):曝光差异 / 视差;用 graph cut 找最优接缝。

      • 视差:非平面场景无法用单应;需考虑 depth。

      When:全景图;街景;视频拼接;监控大场景。

      Examplecv2.Stitcher_create().stitch([img1, img2, img3]);手机全景拍摄。

      2.3 全局对齐 (Global Alignment)

      What:多张图像同时对齐——最小化所有图像的总重投影误差。

      Why:两两对齐有累积误差;全局对齐避免 drift。

      How

      Bundle Adjustment(§8.3):

      • 最小化所有特征点的重投影误差:

      \min_{R_i, t_i, X_j} \sum_{i,j} \| \pi(R_i X_j + t_i) - x_{ij} \|^2 \end{bmatrix>
      • R_i, t_i:相机 i 的姿态。

      • X_j:3D 点 j 的世界坐标。

      • x_{ij}:相机 i 中点 j 的观测像素。

      • π:相机投影函数。

      求解:Levenberg-Marquardt(§4.2)。

      Bundle Adjustment 的工程经验
      • 优化变量多(相机参数 + 3D 点);稀疏结构 → 高效求解。

      • g2o / Ceres / GTSAM 是常用 BA 库。

      • SLAM 后端常用 BA 优化相机轨迹 + 地图。

      When:多图拼接;SfM / SLAM 后端;3D 重建。

      Exampleg2o / Ceres / GTSAM 库;OpenCV cv2.solvePnPRansac + BA。

      2.4 合成 (Compositing)

      What:把多图融合到一张图——消除接缝、避免鬼影。

      Why:直接 alpha blending 在曝光 / 视差下出现明显接缝;需要多频段融合。

      How

      合成方法(§8.4):

      • Alpha blendingout = α · img1 + (1-α) · img2,简单但有接缝。

      • 拉普拉斯金字塔 blend:多频段融合——低频用大尺度平均,高频保留细节。

      • Multi-band blending:拉普拉斯金字塔的扩展。

      • Graph cut blending:找最优接缝线 + 沿线 blend。

      拉普拉斯金字塔 blend 的原理
      • 每层 = 高斯金字塔当前层 - 上采样高一层。

      • 每层单独 alpha blending → 不同频段独立融合。

      • 低频(大尺度)平滑过渡;高频(小尺度)保留细节。

      • 效果:无缝 + 细节保留(alpha blending 做不到)。

      When:高质量全景图;HDR;图像合成;曝光融合。

      Examplecv2.detail.Blender_create(cv2.detail.Blender_MULTI_BAND);OpenCV Stitcher 自动使用。

      三、关键图表

      视觉图表

      图 8-1
      Figure 1. 图 8-1:单应估计流程
      图 8-2
      Figure 2. 图 8-2:全景图拼接
      图 8-3
      Figure 3. 图 8-3:拉普拉斯金字塔 blend

      非可视化条目

      非可视化条目(表 / 算法)
      编号 内容摘要

      式 8-1 至 8-15

      单应 / DLT / BA 公式。

      表 8.1

      拼接算法对比(alpha blend / 多频段 / graph cut)。

      列表 8.1-8.x

      OpenCV Stitcher / bundle adjustment 示例。

      核心公式对照表

      核心公式对照表
      概念 公式

      单应

      \(\lambda \mathbf{p}_2 = H \mathbf{p}_1, \quad H \in \mathbb{R}^{3 \times 3}\)

      DLT 单应估计

      \(\min_H \sum_i | H \mathbf{p}_{1,i} - \mathbf{p}_{2,i} |^2\)

      BA 优化

      \(\min_{R_i, t_i, X_j} \sum_{i,j} | \pi(R_i X_j + t_i) - x_{ij} |^2\)

      四、思维导图

      mindmap
        root((第 8 章 图像对齐与拼接))
          两两对齐
            单应估计
            DLT
            RANSAC
          图像拼接
            特征匹配
            warpPerspective
            blending
          全局对齐
            bundle adjustment
            g2o
            Ceres
          合成
            alpha混合
            拉普拉斯金字塔
            graphcut

      五、重点与易错点

      • 单应适合平面 / 纯旋转:非平面场景需考虑 depth(视差)。

      • RANSAC 是单应估计的标配:直接 DLT 对外点敏感。

      • 拉普拉斯金字塔 blend 消除接缝:直接 alpha blend 在曝光差异下失败。

      • BA 是 SfM / SLAM 后端核心:稀疏 BA 可高效求解上千相机 + 百万点。

      • graph cut blend 找最优接缝:避免移动物体(人 / 车)的鬼影。

      • 全景图受限于场景结构:室内视差大、室外接近平面效果更好。

      • 跨章衔接:第 7 章特征是拼接的基础;第 11 章 SLAM 用 BA 做后端优化;第 9 章运动估计也用单应。