#全景拼接原理


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

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

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

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

输出为:

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

优点:能在包含大量外群的数据中准确地找到模型参数,并且参数不受到外群影响。
缺 点:计算参数时没有一个最大运算时间的顶限,也就是说在迭代次数被限制的情况下,得出来的参数结果有可能并不是最优的,甚至可能不符合真实内群。所以设定 RANSAC参数的时候要根据应用考虑“准确度与效率”哪一个更重要,以此决定做多少次迭代运算。设定与模型的最大误差阈值也是要自己调,因应用而异。还 有一点就是RANSAC只能估算一个模型。

##③ 将第二张图像叠加到第一张图像的坐标系中
##④ 变换后的融合/合成
##⑤ 在多图场景中,重复上述过程