RANSAC - 随机采样一致性算法

RANSAC范例的正式描述如下:

首先,要给定:

1一个模型,该模型需要最少n个数据点去实例化它的*参数;

2一组数据点P,P中包含数据点的数量#(P)大于n。

然后

从P中随机地选择n个点(组成P的一个子集S1)并实例化这个模型(构造成M1)。

接下来

利用实例化的模型M1去测定P中点的某个子集S1*,这些点相对于M1的错误被限制在一个给定的阈值下,其中S1*被称作S1的一致性集合。

或者:

利用实例化的模型M1去逐个测定P中的其它点,舍掉那些偏离M1较大的点,保留那些偏离M1较小的点并组成一个集合S1*,该集合被称作S1的一致性集合。

接下来的步骤要对S1*中点的数量#(S1*)进行条件判定:

if( #(S1*) >= t )         // t是一个阈值,是P中离群点(相对于M1)数量的估计函数

{

利用S1*(+S1)去计算一个新的模型M1*;// 例如用最小二乘法

}

if( #(S1*) < t )

{

随机地选择一个新的子集S2,并重复以上过程;

如果

在几次预定义的实验次数之后,找到的一致性集合含有点的数量总是小于t;

那么

要么使用已经找到的最大的一致性集合去解决这个模型;

要么以失败来终结掉这个算法。

}

上一篇:对话框Dialog


下一篇:解决php与IIs的冲突