全景拼接原理

#全景拼接原理

参考博客:https://www.cnblogs.com/shakin/p/5570865.html
https://blog.youkuaiyun.com/pi9nc/article/details/9251387

基础流程
##① 针对某个场景拍摄多张/序列图像
##② 计算第二张图像与第一张图像之间的变换关

1.读入两张图片并分别提取SIFT特征生成描述子
2.接下来利用RANSAC算法筛选匹配点并计算变换矩阵,目标就是找到所有匹配(也就是重叠)的图片部分,接连所有图片之后就可以形成一个基本的全景图了。因为每张图片有可能和其他每张图片有重叠部分,所 以匹配全部图片需要差不多匹配图片个数的平方次。不过实际上每两张图片之间只需要那么几个相对精准匹配的点就可以估算出这两张图像里的几何关系。

【RANSAC】
[理论部分]
RANSAC是一种迭代算法(Iteration Method),用来从观测数据中估算出数学模型的参数,此基础上便可以分离内群(Inliers)与离群(Outliers)数据。简单来说就是一般来 讲观测的数据里经常会出现很多噪音,比如说像SIFT匹配有时就会因为不同地方有类似的图案导致匹配错误。而RANSAC就是通过反复取样,也就是从整个 观测数据中随机抽一些数据估算模型参数之后看和所有数据误差有多大,然后取误差最小视为最好以及分离内群与离群数据。
RANSAC算法的输入为:

  1. 观测数据 (包括内群与外群的数据)
  2. 符合部分观测数据的模型 (与内群相符的模型)
  3. 最少符合模型的内群数量
  4. 判断数据是否符合模型的阈值 (数据与模型之间的误差容忍度)
  5. 迭代运算次数 (抽取多少次随机内群)

输出为:

  1. 最符合数据的模型参数 (如果内群数量小于输入第三条则判断为数据不存在此模型)
  2. 内群集 (符合模型的数据)

优点:能在包含大量外群的数据中准确地找到模型参数,并且参数不受到外群影响。
缺 点:计算参数时没有一个最大运算时间的顶限,也就是说在迭代次数被限制的情况下,得出来的参数结果有可能并不是最优的,甚至可能不符合真实内群。所以设定 RANSAC参数的时候要根据应用考虑“准确度与效率”哪一个更重要,以此决定做多少次迭代运算。设定与模型的最大误差阈值也是要自己调,因应用而异。还 有一点就是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检测子的实验结果。图像拼接的效果对实验数据中的几个场景效果不同,请分析原因。 已经实现这些功能,并且编译运行均不报错!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值