我知道 Prosac 算法是 Ransac 算法的修改版本,它根据数据点的质量进行采样。但是,我无法理解算法实现的细节。具体来说,我无法理解第 1 步和第 2 步中的两个“如果”。为什么它们在算法中意味着什么,它们的重要性是什么?
参考:
与 PROSAC 匹配——渐进式样本共识http://cmp.felk.cvut.cz/~matas/papers/chum-prosac-cvpr05.pdf
我知道 Prosac 算法是 Ransac 算法的修改版本,它根据数据点的质量进行采样。但是,我无法理解算法实现的细节。具体来说,我无法理解第 1 步和第 2 步中的两个“如果”。为什么它们在算法中意味着什么,它们的重要性是什么?
参考:
与 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 < n* ,您可以增加数字,这意味着您不能考虑超过n*点,即您的停止标准。
对于第二个 if,我们必须查看Tn'相对于t的行为。我们知道,当t = Tn'时,我们在考虑的点集中添加一个点。因此,Tn'将始终大于t,除非我们无法采样更多点,也就是当n = n*(第一个 if)时。
当我们考虑n*排名靠前的点时,Tn'将停止增长,并且t最终将变得更大或等于Tn'。
因此,只要t不超过Tn',我们就会对 PROSAC 方式进行采样(点n和m-1点从顶部n-1开始。
当我们至少采样了Tn'次时,我们就像 RANSAC 一样,从n*个排名靠前的点的所有点中采样m个点。