Assignment 03 for Computer Vision in ZJU 2017 Fall
采用 Python 2.7 + OpenCV 2.4 + NumPy 。
输入: n 个有序图像,图像编号从 1 开始,到 n 结束
- 取中间的参考图像为参考图像 ref ,该图像不做变形。该图像在 1~n 的编号中为 (n/2)+1 。
- 以 ref 为分界线,在两侧,分别以两张相邻图片为一组,使离 ref 较远的图片变形去符合离 ref 较近的图片,计算 Homography 矩阵。记
$H_{(A, B)}$ 为图片 A 为了符合图片 B 进行变形的 Homography 矩阵。则共得到 n-1 个 Homography 矩阵:
a) 记离 ref 较远的图片为 imgA ,离 ref 较近的图片为 imgB , imgA 为了符合 imgB 变形。
b) 分别计算两图像的 SIFT 特征,得到关键点集和特征集。
c) 使用 kNN 算法在两个特征向量集间进行匹配,为了去除 false-positive 的匹配,可引入 Lowe's ratio ,最后在匹配点集中使用 RANSAC 算法计算 Homography 矩阵。
- 对第 2 步得到的矩阵进行处理。因为
所以对第 2 步中的矩阵进行连乘。得到使图片变换到 ref 的坐标系的 n-1 个 Homography 矩阵:
- 将每幅图像 i 都乘以它对应的 Homography 矩阵
$H_{(i, ref)}$ 并且将这些图片拼接起来,就得到了最终的拼接图像。
输出:拼接图像