Как решить уравнение с матрицами вращения и перемещения? - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над заданием по компьютерному зрению и получаю следующее уравнение:

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 голосов
/ 13 декабря 2018

Для обработки выбросов вы можете использовать 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.
...