计算机视觉之全景拼接

全景拼接,顾名思义就是将同一场景下几张图片拼接在一起,形成一张全貌图。现在的手机相机普遍有这一个功能,今天我们就来学习一下这一有趣的东西,世界如此之大,无奇不有。

一、图像拼接原理

1.提取图像的特征和匹配(SIFT算法)

2.将匹配转化成齐次坐标

3.估计单应性矩阵(RANSAC算法)

4.拼接图像

二、全景拼接实现

1.程序代码

2.homography.make_homog()

3.homography.H_from_ransac()

4.warp.panorama()

三、结果分析

1.全景拼接

2.景深差小的情况

2.景深差大的情况

一、图像拼接原理

首先,我们先了解一下全景拼接的原理。

全景拼接的基础流程如下:

(1)针对同一场景拍摄系列图像

(2)提取图像的特征和匹配

(3)将匹配转化成齐次坐标点

(4)估计单应性矩阵

(5)拼接图像

接下来我们就这几部分分别讲解,当然,第一个步骤拍照,就不赘述了,地球人都会的

1.提取图像的特征和匹配(SIFT算法)

本文运用SIFT算法来提取图像的特征和匹配,是因为SIFT算法对于旋转和尺度均具有不变性,并且对于噪声、视角变化和光照变化具有良好的鲁棒性。关于SIFT算法,博主在之前的博客已经详细讲述了,这里就不重复了,详见下方链接:

https://blog.csdn.net/qq_40369926/article/details/88597406

2.将匹配转化成齐次坐标

将匹配转化成齐次坐标是为了矩阵乘法和点的操作更容易,因为后面计算的单应性矩阵是齐次的。

为什么要引入齐次坐标呢?这是因为齐次坐标可以将图像的各种变化统一成矩阵乘法,详见下方链接:

https://blog.csdn.net/saltriver/article/details/79680364
 

3.估计单应性矩阵(RANSAC算法)

单应性变换是将一个平面内的点映射到另一平面内的二维投影变换,而两张图像变换的对应关系就叫做单应性矩阵,值得注意的是单应性矩阵是齐次的,单应性变换用数学表示如:

其中,h_2_2为1。

因为h_2_2为1,所以单应性矩阵H有8个自由度,求解图像之间的单应性变换其实就是求解单应性矩阵H中的这8个自由度。单应性矩阵可以通过SIFT找到的特征对应点对计算出来。一个完全映射变换需要8个自由度。根据对应点越是,每个对应点可以写出两个方程,分别对应于xy坐标,因此,计算单应性矩阵H需要4个对应点对。

我们RANSAC(RANdom ASmple Consensus,随机一致性采样)来估计单应性矩阵。这其实是DLT(Direct Linear Transformation,直接线性变换)的优化。DLT算法是将给定的4个或更多个对应点方程的系数堆叠到一个矩阵中,使用SVD(奇异值分解)算法求得H的最小二乘解。但是,值得注意的是并非所有的对应点对都是正确的,如下图所示:

这样一口气把所有对应点堆叠在一起求H,很容易导致结果错误,也就是说DLT算法对噪声的鲁棒性并不强。而RANSAC算法经常用来在边矩阵的求解中剔除噪声。RANSAC的基本思想是,数据包含正确的点和噪声点,合理的模型应该能在描述正确数据点的同时摒弃噪声点。RANSAC的求解过程如下:

(1)随机选择4对匹配特征对应点对

(2)根据DLT计算单应性矩阵H(唯一解)

(3)对所有匹配点,计算映射误差(对每个对应点使用该单应性矩阵,然后返回平方距离之和)

(4)根据误差阈值,确定正常值inliers(小于阈值的点看做正确点,否则认为是错误的点)

重复步骤(1)-(4)

(5)针对最大inliers集合,重新计算单应性矩阵H

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值