我从事计算机视觉任务,并具有以下等式:
R0*c + t0 = R1*c + t1 = Ri*c + ti = ... = Rn*c + tn
,
n 约为20(但如果需要可以更多)
其中每对 R , t (3D中的旋转矩阵和平移矢量)是 i 测量的结果,它们分别是我想知道的是矢量 c 。
我得到了ceres solver的结果。它可以处理异常值是件好事,但我认为这对于此任务来说是过大的了。
那我应该在两种情况下使用什么方法:
答案 0 :(得分:0)
要处理异常值,可以使用RANSAC:
* In each iteration randomly pick i,j (a "sample") and solve c:
Ri*c + ti = Rj*c + tj
- Set Y = Ri*c + ti
* Apply to a larger population:
- Select S={k} for which ||Rk*c + tk - Y||<e
e ~ 3*RMS of errors without outliers
- Find optimal c for all k equations (with least mean square)
- Give it a "grade": size of S
* After few iterations use optimal c found for Max "grade".
* Number of iterations: log(1-p)/log(1-w^2)
[https://en.wikipedia.org/wiki/Random_sample_consensus]
p = 0.001 (for example. It is the required certainty of the result)
w is an assumption of nonoutliers/n.