理论沉淀:RANSAC算法
2015-11-26 01:04
211 查看
1.解决问题:
当一组样本数据中含有(较小波动的)正常数据(inliers)和(较大波动的)异常数据(outliers)且异常数据的量还不小于正常数据的量时,用最小二乘法将难以获得期望的直线(即能拟合正常数据的直线),随机抽样一致(RandomSAmple Consensus, RANSAC)算法就可以用来代替最小二乘法算出期望的直线参数。这里为便于讨论局限于直线模型,但RANSAC算法适用任何模型。
如下图所示,RANSAC算法的目的就是从数据集中剔除红色的点,得到一条能拟合蓝色点的直线。
2.算法描述:
S:样本点集
M:数学模型(y=ax+b)
N:计算模型M的参数所需的最少点数
K:算法迭代次数
T:判断一点是否适用于模型M的阀值误差
D:判定模型M是否适用于样本点集S的最少样本点数
(1)从样本点集S中随机抽取一个子样本P(P所含点数不小于N)来计算模型M的参数
(2)将余集S*=S-P中的每个点代入模型M,若所得误差小于设定阀值T则将此点加入P,否则抛弃
(3)若P中点的数量小于设定值D则抛弃模型M,否则用最小二乘法和点集P重新计算模型M的参数和点集P在新模型上的误差E
(4)将(1)~(3)迭代执行K次,每次产生的模型仅当P中点的数量大于D且误差比当前模型的误差小时才替代当前模型,否则抛弃
3.优化策略:
(1)若发现一种足够好的模型(正常点数量达到D且误差足够小)可跳出循环从而加速算法
(2)根据样本点集的特征有约束地随机选取子样本并规定正常点数量达到D且误差足够小就跳出循环从而加速算法
当一组样本数据中含有(较小波动的)正常数据(inliers)和(较大波动的)异常数据(outliers)且异常数据的量还不小于正常数据的量时,用最小二乘法将难以获得期望的直线(即能拟合正常数据的直线),随机抽样一致(RandomSAmple Consensus, RANSAC)算法就可以用来代替最小二乘法算出期望的直线参数。这里为便于讨论局限于直线模型,但RANSAC算法适用任何模型。
如下图所示,RANSAC算法的目的就是从数据集中剔除红色的点,得到一条能拟合蓝色点的直线。
2.算法描述:
S:样本点集
M:数学模型(y=ax+b)
N:计算模型M的参数所需的最少点数
K:算法迭代次数
T:判断一点是否适用于模型M的阀值误差
D:判定模型M是否适用于样本点集S的最少样本点数
(1)从样本点集S中随机抽取一个子样本P(P所含点数不小于N)来计算模型M的参数
(2)将余集S*=S-P中的每个点代入模型M,若所得误差小于设定阀值T则将此点加入P,否则抛弃
(3)若P中点的数量小于设定值D则抛弃模型M,否则用最小二乘法和点集P重新计算模型M的参数和点集P在新模型上的误差E
(4)将(1)~(3)迭代执行K次,每次产生的模型仅当P中点的数量大于D且误差比当前模型的误差小时才替代当前模型,否则抛弃
3.优化策略:
(1)若发现一种足够好的模型(正常点数量达到D且误差足够小)可跳出循环从而加速算法
(2)根据样本点集的特征有约束地随机选取子样本并规定正常点数量达到D且误差足够小就跳出循环从而加速算法
相关文章推荐
- 第二讲:Windows应用程序框架
- 递归实现一个数的N次方
- Arduino蓝牙控制三色灯
- 网上书城项目总结(servlet_jsp+javaBean)
- Physics.Raycast重载方法的参数隐式转换引发的血案
- 反转字符,递归
- 【C#】Event事件的应用之观察者模式
- uva10859 树形dp
- 【TLS】SSL/TLS协议安全之不安全的重协商
- uGet Aria2下载百度云的大容量文件
- Ardunio_Case_3_Homework_traffic_light
- 可变参数列表
- Linux服务器时间同步
- 利用两个队列实现一个栈(C++版)
- LA 2678 Subsequence(尺取法)
- 【IT企业创业管理】:企业创业管理
- 【Arduino】开发入门【七】7段LED显示器
- flex&bison编写语法分析器
- 解决使用Maven,代码正确却发生大量类文件cannot be resolved to a type的情况
- 不用第三方变量交换两个int类型的值 php