Как может проективная матрица быть вектором с длиной 8? - PullRequest
2 голосов
/ 29 января 2020

Обычная проекционная матрица имеет размер 3 * 3 и 9 значений. Но для преобразования тензорного потока нужен вектор с измерением 8. Поэтому я не знаю, как преобразовать мою матрицу в этот вектор.

Пример - у меня есть матрица, которая выполняет вращение и перевод:

    top_row = [np.cos(rot_value), - np.sin(rot_value), trans_x]
    middle_row = [np.sin(rot_value), np.cos(rot_value), trans_y]
    last_row = [0, 0, 1]
    trans_matrix = np.stack((top_row, middle_row, last_row))

Как преобразовать эту матрицу в этот вектор с 8 измерениями, чтобы я мог использовать преобразование тензорного потока?

1 Ответ

1 голос
/ 29 января 2020

Поскольку матрица проекций имеет неоднозначность в глобальном масштабе, ее можно умножить на постоянный коэффициент. Проективное преобразование имеет восемь степеней свободы, а не девять, и обычным условием для удаления этой избыточности является использование нижнего правого угла равным 1.

. В вашем случае вы должны иметь возможность использовать top_row + middle_row + [0, 0]* 1004. *

В более общем смысле:

(trans_matrix/trans_matrix[2,2]).flat[:8]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...