目录
一、RANSAC算法
1.1 RANSAC算法简介
RANSAC (随机一致性采样)是一种迭代算法,该算法从一组包含“外点(outlier)”的观测数据中估计数学模型的参数。“外点”指观测数据中的无效数据,通常为噪声或错误数据,比如图像匹配中的误匹配点和曲线拟合中的离群点。与“外点”相对应的是“内点(inlier)”,即用来估计模型参数的有效数据。因此,RANSAC也是一种“外点”检测算法。此外,RANSAC算法是一种非确定算法,它只能在一定概率下产生可信的结果,当迭代次数增加时,准确的概率也会增加。RANSAC算法是用来找到正确模型来拟合带有噪声数据的迭代方法。
1.2 算法基本思想和流程
RANSAC是通过反复选择数据集去估计出模型,一直迭代到估计出认为比较好的模型。具体的实现步骤可以分为以下几步:
(1)随机采样K个点,K是求解模型参数的最少点个数(对于直线拟合来说就是两个点(两点确定一条直线),对于拟合圆就是3个点)
(2)使用采样出的k个点估计模型参数,得到数据模型;
(3)将所有数据带入这个模型,计算出“内点”的数目;(累加在一定误差范围内的适合当前迭代得出的模型的数据);
(4)比较当前模型和之前推出的最好的模型的“内点“的数量,记录最大“内点”数的模型参数和“内点”数;
(5)重复1-4步,直到迭代结束或者当前模型已经足够好了(“内点数目大于一定数量”)。
1.3 RANSAC求解单应性矩阵
单应性变换:是将一个平面内的点映射到另一个平面内的二维投影变换。
RANSAC 循环:
(1)随机选择四对匹配特征
(2)根据DLT计算单应矩阵 H (唯一解)
(3)对所有匹配点,计算映射误差ε= ||p i ’, H p i ||
(4)根据误差阈值,确定inliers(例如3-5像素)
(5)针对最大inliers集合,重新计算单应矩阵 H。
二、图像映射与全景拼接
2.1 简介
首先是在连续图像对间使用SIFT特征寻找匹配对应点对,SIFT是具有较强稳健性的描述子,能够比其他描述子产生更少的错误点,但是该方法仍不是很完美;使用RANSAC算法估计出图像间的单应性矩阵,判定哪些点对是正确的,哪些点对是错误的,即使用一个阈值来决定哪些单应性矩阵是合理的;然后将所有的图像扭曲到一个公共的图像平面上。
通常,这里的公共平面为中心图像平面。一种方法是创建一个很大的图像,比如将图像中全部填充0,使其和中心图像平行,然后将所有的图像扭曲到上面。由于我们所有的图像是由照相机水平旋转拍摄的,因此我们可以使用一个较简单的步骤:将中心图像左边或者右边的区域填充为0,以便为扭曲的图像腾出空间。
图像拼接的几何原理:全景融合的 3D 几何解释,图像被投影到共同的拼接平面上(同一坐标系), 在拼接平面上实现全景融合。在拼接的应用中,其实可以简化理解为 2D图像的变换,叠加过程。
基础流程:
① 针针对某个场景拍摄多张/序列图像;
② 计算第二张图像与第一张图像之间的变换关系;
③ 将第二张图像叠加到第一张图像的坐标系中;
④ 变换后的融合/合成;
⑤ 在多图场景中,重复上述过程;
2.2 计算第二张图像与第一张图像之间的变换关系
(1)变换类型选择
将两幅图像叠加在一起,选择需要采用模型,如位移、旋转、尺度大小、仿射和透视等。
(2)2D 图像变换原理:
图像滤波: 改变图像的像素点取值范围
图像变换: 改变图像的坐标取值范围
(3)2D 图像变换类型
(4)参