我了解Prosac算法是Ransac算法的修改版本,它根据数据点的质量进行采样。但是,我无法理解算法实现的细节。具体来说,我无法理解步骤1和步骤2中的两个“ if”。为什么它们在算法中意味着什么,它们的重要性是什么?

machine-learning - prosac算法的实现细节,意义和重要性-LMLPHP

参考:

与PROSAC匹配-渐进式样本共识http://cmp.felk.cvut.cz/~matas/papers/chum-prosac-cvpr05.pdf

最佳答案

让我们从定义正在运行的变量开始。

变数

N:样本总数。

m:几何模型的复杂度。

t:循环的迭代次数。

n *:终止长度(停止前要考虑的样本数)。

TN:该参数定义了多少采样后PROSAC等效于RANSAC。

Tn:来自n个排名最高的点的平均样本数。

Tn':Tn的最高值

第一部分

第一个if检查是否用尽了所有可能的样本(意味着您已经对Tn'个样本进行了采样)。因此,为避免再次采样已采样的样本,请增加考虑的点数。如果n
第二部分

对于第二个if,我们必须查看Tn'相对于t的行为。我们知道,当t = Tn'时,我们在考虑的点集中添加一个点。因此,Tn'将始终大于t,除非当我们无法采样更多点时,也就是n = n *(第一个if)。

当我们考虑n *个排名最高的点时,Tn'将停止增长,t最终将变得更大或等于Tn'。

因此,只要t不超过Tn',我们将对PROSAC方式进行采样(从顶部n-1开始的点n和m-1点)。

当我们至少采样了Tn'次后,我们就像RANSAC一样,从排名最高的n *个点中采样m个点。

关于machine-learning - prosac算法的实现细节,意义和重要性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46824405/

10-12 20:01