RANSAC算法理解

简介: RANSAC算法理解

RANSAC(RAndom SAmple Consensus,随机采样一致)算法在很多方面如图像匹配、曲线/平面拟合取得了良好的应用。这里以笔记的形式对其进行一个简要的介绍总结。


RANSAC算法的一个基本的假设是:一组数据由“内点”(inliers)和“外点”(outliers)组成,其中“内点”就是组成模型参数的数据,而“外点”就是不适合模型的数据。


RANSAC算法的目标就是在一组含有少量“内点”,大量“外点”的数据中,估计出一个符合“内点”数据的模型。

RANSAC算法基本思想

假设存在一个样本集 P ,考虑一个能够估计出模型 M所需的大小为 n最小抽样子集 S(比如说直线拟合,则抽样子集大小 n = 2,平面拟合,则抽样子集大小 n = 3);


使用这个抽样选取的子集进行计算初始化数据模型;


针对余集 S C = P − S,代入步骤2中所估计出的模型,若其误差小于设置的阈值 t 则认为其是内点,所有的内点组成内点集 S ∗

(也成为子集 S的一致集)统计个数。


比较此次迭代和之前迭代中内点集中内点个数的大小,记录较大“内点”数的模型参数和“内点”数。


重复上述步骤1-4的过程,直到当前迭代已经足够好了,即内点集 S ∗ 的大小 N大于一定的阈值 N t 则认为此数据模型符合要求。并利用 S ∗ 中的内点采用最小二乘等方法进行重新计算数据模型 M ∗。

讨论

由上述过程中,我们可以了解到在RANSAC算法需要设置以下四个参数:


抽样子集大小 n


用于决定数据是否适应于模型的误差阀值 t


判断内点集 S ∗的大小是否适用于数据集的阈值 N t


迭代次数 K

分别对其进行讨论:

抽样子集大小 n

其中抽样子集的大小 n可以通过模型的类型进行判断,如直线拟合选取2个点,平面选取3个点。


误差阀值 t

可以根据适用模型需要自主设置。比如说曲线拟合的偏差、图像匹配中的错误匹配点对等等。


判断内点集 S ∗的大小是否适用于数据集的阈值 N t

由于RANSAC算法是基于数据驱动的模型估计方法,所以在处理粗差小于50%的情况时,其效果比较可靠。因此,内点集 S ∗  大小的阈值 N t可以设置为数据集总体大小的一半。


迭代次数 K

假设在数据中,“内点”个数的占比为 W

                   image.png


实际实验过程中,我们并不会知道 W W W的值,但是可以给出一个鲁棒的经验值。

对于每一次迭代过程中选取 n个点作为子集 S,则子集 S中至少存在一个点不为“内点”的概率为:

                                      image.png

那么 K次迭代中,每次都至少有一个“外点”的情况所发生的概率为:

                                       image.png


即,能够在 K 次迭代中正确选取 n个点,且都为“内点”的概率为:

                                       image.png

这个 P P P值就代表了我们所期待RANSAC算法能够正确计算出数据模型的概率,可以根据自己的需求进行设置。

变换上式:

                           image.png

上式中 W W W可以根据经验值进行设置, P是我们所期待的正确计算数据模型的概率,可以自主设置,这样就得到了迭代次数。

当然,如果我们事先实在不知道 W的值,可以使用自适应迭代次数的方法。即开始时设定一个较大的迭代次数,然后每次更新模型参数估计的时候,用当前的“内点”比值代入公式中的 W来估算出迭代次数。

目录
相关文章
|
7月前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
算法 C++ 芯片
RANSAC算法拟合平面实现(附代码c++)
RANSAC算法拟合平面实现(附代码c++)
495 0
|
算法 计算机视觉
基于SURF+Affine+Ransac+ICP算法的三维点云室内场景重建matlab仿真
基于SURF+Affine+Ransac+ICP算法的三维点云室内场景重建matlab仿真
504 0
|
算法 计算机视觉
RANSAC算法在图像拼接上的应用的实现
关于算法原理请参考《基于SURF特征的图像与视频拼接技术的研究》。一、问题提出         RANSAC的算法原理并不复杂,比较复杂的地方在于“建立模型”和“评价模型”。我们经常看到的是采用“直线”或者“圆”作为基本模型进行“建立”,而采用所有点到该“直线”或“圆”的欧拉距离作为标准来“评价”(当然是越小越好)。
2641 0
|
机器学习/深度学习 资源调度 算法
【图像隐藏】基于小波变换+SURF、RANSAC、LT码、CRC码多种算法实现图像隐藏(抗多种攻击)matlab源码
【图像隐藏】基于小波变换+SURF、RANSAC、LT码、CRC码多种算法实现图像隐藏(抗多种攻击)matlab源码
|
3天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
110 80
|
21小时前
|
机器学习/深度学习 算法 索引
单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
本项目使用FW烟花优化算法求解单目标问题,并在MATLAB2022A中实现仿真,对比PSO和GA的性能。核心代码展示了适应度计算、火花生成及位置约束等关键步骤。最终通过收敛曲线对比三种算法的优化效果。烟花优化算法模拟烟花爆炸过程,探索搜索空间,寻找全局最优解,适用于复杂非线性问题。PSO和GA则分别适合快速收敛和大解空间的问题。参数调整和算法特性分析显示了各自的优势与局限。
|
22天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
8天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
16天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。

热门文章

最新文章