全景图像拼接的原理

全景图像拼接顾名思义就是将多张存在重叠部分的图像拼成一幅全景图像。换一种理解方式(个人理解):两幅图像之间可以通过特征匹配得到对应点,将这些对应点坐标重合而保留两张图像其他的部分,就可以得到两幅图像的拼接结果,当然前提是这两张图像有匹配的点。以这种方式循环,通过两两拼接的方式最终拼接成一幅全景图。内容主要参考教材以及 https://www.cnblogs.com/shakin/p/5570865.html 此链接下的原理介绍。

看了许多资料,除了一些拼接后的优化和修补,全景图像拼接最重要的两个步骤就是:

  1. 特征点匹配
  2. 图片匹配

一、特征点匹配

这部分主要采用SIFT算法实现,之前的博客有介绍就不再详细介绍了,主要是为了找到两幅图像相同的特征点并将其进行匹配。

二、图片匹配

图片匹配就是找到图像之间所有重叠的部分,将其拼接后就能得到一幅全景图。

1、RANSAC(随机一致性采样)

主要用到的一种方法是RANSAC,书上是这么说的:用来找到正确模型来拟合带有噪声数据的迭代方法,好像看上去不太好理解,其实很简单,我们在进行SIFT特征匹配时肯定会出现一些匹配错误的情况,而RANSAC这个算法是随机采用部分特征匹配坐标计算得到一个透视矩阵,用这个透视矩阵把所有的匹配点都测试一遍,若匹配则得到该透视矩阵,否则再采用其他特征匹配坐标。所以该方法的作用就是可以把不正确的特征匹配结果剔除,获得正确的透视矩阵。同时也有一个比较明显的缺点:当匹配点的数量太多时,运行速度会很慢。

2、Homography(透视变换)

透视变换就是将图像投影到一个新的视平面。上面提到了一个叫做透视矩阵的东西,其实就是单应性矩阵,用来表示两幅图的对应点的变换关系。在全景图拼接时,很多图像会由于拍摄角度等问题出现一些方向上的不同步。比如这样:
在这里插入图片描述
如果只将图中的(x1,y1)和(x2,y2)按照图片的水平方向重叠起来的话显然角度不对,需要将左图进行旋转,变成这样:
在这里插入图片描述
而控制这个变换的方式就是通过透视矩阵(单应性矩阵)与原图像的矩阵形式进行相乘得到新的图像矩阵,公式为:
在这里插入图片描述
利用上述RANSAC方法所得到的透视矩阵可以完成透视变化,从而将两张图进行拼接。

总结

全景图像拼接通过SIFT得到特征匹配,通过RANSAC筛选正确的特征匹配得到透视矩阵,利用透视变换完成两幅图像的拼接,循环这个流程迭代所有图像就可以完成多张图像的全景图拼接。其中有一些我自己的理解不知道正确与否,因为代码还没有调试成功所以可以用来介绍原理的图也比较少,都是字面上的东西,如果仍有不理解的地方建议多参考其他资料。

压缩包中包含的具体内容: 对给定数据中的6个不同场景图像,进行全景图拼接操作,具体要求如下: (1) 寻找关键点,获取关键点的位置和尺度信息(DoG检测子已由KeypointDetect文件夹中的detect_features_DoG.m文件实现;请参照该算子,自行编写程序实现Harris-Laplacian检测子)。 (2) 在每一幅图像中,对每个关键点提取待拼接图像的SIFT描述子(编辑SIFTDescriptor.m文件实现该操作,运行EvaluateSIFTDescriptor.m文件检查实现结果)。 (3) 比较来自两幅不同图像的SIFT描述子,寻找匹配关键点(编辑SIFTSimpleMatcher.m文件计算两幅图像SIFT描述子间的Euclidean距离,实现该操作,运行EvaluateSIFTMatcher.m文件检查实现结果)。 (4) 基于图像中的匹配关键点,对两幅图像进行配准。请分别采用最小二乘方法(编辑ComputeAffineMatrix.m文件实现该操作,运行EvaluateAffineMatrix.m文件检查实现结果)和RANSAC方法估计两幅图像间的变换矩阵(编辑RANSACFit.m 文件中的ComputeError()函数实现该操作,运行TransformationTester.m文件检查实现结果)。 (5) 基于变换矩阵,对其中一幅图像进行变换处理,将其与另一幅图像进行拼接。 (6) 对同一场景的多幅图像进行上述操作,实现场景的全景图拼接(编辑MultipleStitch.m文件中的makeTransformToReferenceFrame函数实现该操作)。可以运行StitchTester.m查看拼接结果。 (7) 请比较DoG检测子和Harris-Laplacian检测子的实验结果。图像拼接的效果对实验数据中的几个场景效果不同,请分析原因。 已经实现这些功能,并且编译运行均不报错!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值