(七) RANSAC

随机抽样一致算法,采用迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数。RANSAC算法假设数据中包含正确数据和异常。正确数据记为内点,异常数据记为外点。存在很多离散的点,而我们认为这些点构成一条直线,人眼能够清晰地拟合出这条直线,找到外点。

1、RANSAC原理

OpenCV中滤除误匹配对采用RANSAC算法寻找一个最佳单应性矩阵H,矩阵大小为3*3.RANSAC目的是找到最优的参数矩阵使得满足该矩阵的数据点个数最多,通常令h33=1来归一化矩阵。由于单应性矩阵有8个未知参数,至少需要8个线性方程求解,对应到点位置信息上,一组点对可以列出两个方程,则至少包含4组匹配点对。

(七) RANSAC

其中(x,y)表示目标图像角点位置,(x’,y’)为场景图像角点位置,s为尺度参数

RANSAC算法从匹配数据集中随机抽出4个样本并保证这4个样本之间不共线,计算出单应性矩阵,然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数),若此模型为最优模型,则对应的代价函数最小。

(七) RANSAC

 2、RANSAC算法步骤

(1) 从数据集中随机抽出4个样本数据(此4个样本之间不能共线),计算出变换矩阵H,记为模型M

(2) 计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集I

(3) 如果当前内点集I元素个数大于最优内点集I_best,则更新I_best=I,同时更新迭代次数K

(4) 如果迭代次数大于K,则退出,否则迭代次数加1,并重复上述步骤

注:迭代次数K在不大于最大迭代次数的情况下,是在不断更新而不是固定的

(七) RANSAC

 其中,p为置信度,一般取0.995;w为内点的比例;m为计算模型所需要的最少样本数=4

上一篇:cf 1142 C


下一篇:matlab RANSAC拟合直线