如何使用旋转和平移矩阵求解方程?

时间:2018-12-10 22:45:11

标签: math matrix computer-vision linear-algebra equation-solving

我从事计算机视觉任务,并具有以下等式:

R0*c + t0 = R1*c + t1 = Ri*c + ti = ... = Rn*c + tn
n 约为20(但如果需要可以更多)

其中每对 R t (3D中的旋转矩阵和平移矢量)是 i 测量的结果,它们分别是我想知道的是矢量 c

我得到了ceres solver的结果。它可以处理异常值是件好事,但我认为这对于此任务来说是过大的了。

那我应该在两种情况下使用什么方法:

  1. 离群值
  2. 没有异常值

1 个答案:

答案 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.