RANSAC算法中迭代次数的计算

  已知一组数据点中既包含内点又包含外点,其中内点占的比例为 p p p,且计算模型参数至少需要 k k k个数据点,要求经过RANSAC算法之后有概率 q q q的把握以上排除所有外点,那么迭代次数 n n n至少应该设定为多少?

解答:
随机选取 k k k个点,这 k k k个点都为内点的概率为 p k p^k pk,那么这 k k k个点中至少有一个为外点的概率为 1 − p k 1-p^k 1pk
n n n次迭代,每次选择到的数据点都存在外点的概率为 ( 1 − p k ) n (1-p^k)^n (1pk)n,则至少有一次选择到的都是内点的概率为 1 − ( 1 − p k ) n 1-(1-p^k)^n 1(1pk)n,依据题意,此概率要大于等于 q q q,有,
1 − ( 1 − p k ) n ≥ q 1-(1-p^k)^n \geq q 1(1pk)nq
1 − q ≥ ( 1 − p k ) n 1-q \geq (1-p^k)^n 1q(1pk)n
两边取对数有,
l n ( 1 − q ) ≥ n ⋅ l n ( 1 − p k ) ln(1-q) \geq n\cdot ln(1-p^k) ln(1q)nln(1pk)
两边同时除以 l n ( 1 − p k ) ln(1-p^k) ln(1pk)可得(注意两边除以一个负数,不等式要变号),
l n ( 1 − q ) l n ( 1 − p k ) ≤ n \frac{ln(1-q)}{ln(1-p^k)} \leq n ln(1pk)ln(1q)n
故迭代次数的最小值为 ⌈ l n ( 1 − q ) l n ( 1 − p k ) ⌉ \lceil \frac{ln(1-q)}{ln(1-p^k)} \rceil ln(1pk)ln(1q),其中 ⌈ ⌉ \lceil \rceil 表示向上取整符号!

你可能感兴趣的:(SLAM杂项,个人笔记)