путаница в усредняющих матрицах вращения, как описано - PullRequest
0 голосов
/ 24 ноября 2018

Я сейчас читаю статью об автоматической калибровке камер слежения за дорожным движением (https://www.microsoft.com/en-us/research/wp-content/uploads/2017/09/AutoCalib.pdf).). В какой-то момент авторы вычисляют несколько калибровок и вычисляют среднее значение вращательной части этих матриц.

Итактекст описывает процесс следующим образом:

Наконец, мы вычисляем «среднее» из оставшихся калибровок.Мы усредняем единичный вектор оси Z по всем отфильтрованным калибровкам и вычисляем два взаимно ортогональных X и Y.векторы осевых единиц.

Итак, давайте предположим, что у меня есть две матрицы вращения, которые я хочу усреднить. Что-то вроде:

r1 = [[-0.64375223,  0.63471324,  0.42746014],
        [-0.52107859, -0.77267423,  0.3625626 ],
        [ 0.56041072,  0.01066016,  0.82814624]]

r2 = [[-0.31267459, -0.0464914 ,  0.94872185],
        [-0.88839581, -0.33914166, -0.30941205],
        [ 0.3361361 , -0.93958581,  0.06473821]]

Итак, сначала я вычисляю z-среднее значение вектора осей как:

import numpy as np

c = [r1, r2]
z_avg = np.mean(c, axis=0)[:, 2]

Это создает средние оси z как:

array([0.688091  , 0.02657528, 0.44644223])

Затем я написал функцию для вычисления базисных векторов как:

def basis(v):
    v = v / np.linalg.norm(v)
   if v[0] > 0.9:
       b1 = np.asarray([0.0, 1.0, 0.0])
   else:
       b1 = np.asarray([1.0, 0.0, 0.0])

    b1 -= v * np.dot(b1, v)
    b1 /= np.linalg.norm(b1)
    b2 = np.cross(v, b1)
    return b1, b2, v

Я могу вычислить ортогональные базисные векторы как:

x, y, z = basis(z_avg)

Теперь следующие шаги меня смущают. Текст продолжает:

Мы тогдавычислитьМатрица вращения для этих трех единичных векторов, которая формирует нашу (усредненную) окончательную Матрицу вращения для оценки калибровки

Я действительно не уверен, что подразумевается под "вычислением матрицы вращения для этих трех единичных векторов",Я также не вижу, как этот процесс каким-то образом «усредняет» эти матрицы вращения.Любое понимание, которое вы можете мне дать, будет очень признательным!

...