第 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(直接线性变换):单应估计的闭式解。
|
单应的几何意义
|
When:图像拼接 / 配准;AR;文档扫描。
Example:cv2.findHomography(src_pts, dst_pts, cv2.RANSAC);cv2.warpPerspective。
2.2 图像拼接 (Image Stitching)
What:把多张重叠图像合成一张全景图。
Why:全景图 / 街景 / 监控大场景的标准方法。
How:
拼接流程(§8.2):
-
特征检测 + 匹配(§7):SIFT / ORB + RANSAC。
-
单应估计:把每对相邻图像映射到同一坐标系。
-
图像变形:
warpPerspective把每张图投影到全景平面。 -
融合(blending):拉普拉斯金字塔融合消除接缝。
-
曝光补偿:直方图匹配消除色差。
|
拼接的常见问题
|
When:全景图;街景;视频拼接;监控大场景。
Example:cv2.Stitcher_create().stitch([img1, img2, img3]);手机全景拍摄。
2.3 全局对齐 (Global Alignment)
What:多张图像同时对齐——最小化所有图像的总重投影误差。
Why:两两对齐有累积误差;全局对齐避免 drift。
How:
Bundle Adjustment(§8.3):
-
最小化所有特征点的重投影误差:
-
R_i, t_i:相机 i 的姿态。 -
X_j:3D 点 j 的世界坐标。 -
x_{ij}:相机 i 中点 j 的观测像素。 -
π:相机投影函数。
求解:Levenberg-Marquardt(§4.2)。
|
Bundle Adjustment 的工程经验
|
When:多图拼接;SfM / SLAM 后端;3D 重建。
Example:g2o / Ceres / GTSAM 库;OpenCV cv2.solvePnPRansac + BA。
2.4 合成 (Compositing)
What:把多图融合到一张图——消除接缝、避免鬼影。
Why:直接 alpha blending 在曝光 / 视差下出现明显接缝;需要多频段融合。
How:
合成方法(§8.4):
-
Alpha blending:
out = α · img1 + (1-α) · img2,简单但有接缝。 -
拉普拉斯金字塔 blend:多频段融合——低频用大尺度平均,高频保留细节。
-
Multi-band blending:拉普拉斯金字塔的扩展。
-
Graph cut blending:找最优接缝线 + 沿线 blend。
|
拉普拉斯金字塔 blend 的原理
|
When:高质量全景图;HDR;图像合成;曝光融合。
Example:cv2.detail.Blender_create(cv2.detail.Blender_MULTI_BAND);OpenCV Stitcher 自动使用。