前言
在学习计算机视觉的课程当中,我们会接触到有关于全景图的知识。
在生活当中,我们使用手机摄像功能时会时常使用到全景摄像。然而我们会经常遇到全景图拍摄失败。例如我们拍摄一个场景的时候,人会被拉扯成两个人的宽度,或是被压缩成一条线的宽度,或是建筑物被扭曲等等诡异画面。这是由于全景拼接算法不完善或是有问题的表现。例如:
全景图拼接算法现在仍是一个世人需要解决和完善的难题。
全景拼接原理
本次学习研究的全景拼接算法是RANSAC(随机一致性),该算法的基本思想是,数据中包含正确的点和噪声点,合理的模型应该能够在描述正确数据点的同时摒弃噪声点。
全景照片的拼接的简述步骤:
1、特征点匹配:找到图片之间的共有部分。
2、图片匹配:将匹配的特征点连接起来。
特征点匹配
在合成全景图时,我们特征点匹配选取的方法是SIFT方法。
SIFT是具有很强稳健性的描述子,能够比其它描述子例如Harris角点,产生更少的错误匹配。然而SIFT方法仍然远非完美。
提取SIFT特征有两方面:侦测、描述。
SIFT算法的原理在我的前几篇博客中有介绍
SIFT兴趣点管理: https://blog.csdn.net/weixin_44037639/article/details/88626168
这里我们利用教材中的图片来做原理描述:
图片匹配
在特征点全部匹配之后,剩下的就是将图片全部连接到一起来组成一张全景图了。因为几乎每张图片与其他几张之间都可能有重叠部分,所以需要得到这些图片之间图像特征点精准匹配形成的几何关系。而利用RANSAC,排除掉不符合大部分特征点几何关系的匹配。利用这些匹配点的几何关系来进行稳健的单应性矩阵估计。
RANSAC是一种迭代算法(Iteration Method),用来从观测数据中估算出数学模型的参数,此基础上便可以分离内群(Inliers)与离群(Outliers)数据。简单来说就是一般来 讲观测的数据里经常会出现很多噪音,比如说像SIFT匹配有时就会因为不同地方有类似的图案导致匹配错误。而RANSAC就是通过反复取样,也就是从整个 观测数据中随机抽一些数据估算模型参数之后看和所有数据误差有多大,然后取误差最小视为最好以及分离内群与离群数据。
合成全景图中计算机视觉技术的知识和原理: https://www.cnblogs.com/shakin/p/5570865.html
之所以RANSAC能在有大量噪音情况仍然准确,主要原因是随机取样时只取一部分可以避免估算结果被离群数据影响。
在这里展示RANSAC效果:右边有一块是黑色的,是因为在定义图片大小的时候,定义了全景图的大小,但是拼接后没有这么大,所以有一块是黑色的。