Контекст: я работаю над уравнениями проекции .
У меня есть N матрицы проекций (для каждой 2D-точки), форма (3, 4)
.
Например, скажем P = [p_i] for 1 <= i <= n
.
import numpy as np
# p_i were initialised with dummy values
p1 = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], dtype=float)
...
pn = np.array([[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]], dtype=float)
И тогда у меня есть N 2D точечные координаты (форма (3, 1)
) в кадре камеры:
# coords_i were initialised with dummy values for x, y and (z was set to 1 by design) as well
coords_1 = np.array([10, 20, 1], dtype=float)
...
coords_n = np.array([30, 40, 1], dtype=float)
Например, скажем C = [coords_i] for 1 <= i <= n
.
Задача состоит в том, чтобы найти такой X
, который представляет собой один (4, 1)
вектор, такой, что если вы умножите p_i * X = coords_i
.
Как я могу передать эту систему в Linalg Solver ?
P * X = C
итоговые формы P.shape = (3 * N, 4), X.shape = (4, 1), C.shape = (3 * N, 1)