0

I working on computer vision task and have this equation:

R0*c + t0 = R1*c + t1 = Ri*c + ti = ... = Rn*c + tn ,
n is about 20 (but can be more if needs)

where each pair of R,t (rotation matrix and translation vector in 3D) is a result of i-measurement and they are known, and vector c is what I whant to know.

I've got result with ceres solver. It's good that it can handle outliers but I think it's overkill for this task.

So what methods I should use for two situations:

  1. With outliers
  2. Without outliers
victor1234
  • 871
  • 3
  • 12
  • 28

1 Answers1

0

To handle outliers you can use 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.