0

У меня есть 3D-точки моей модели. И у меня есть 2D-точки - проекция этих трехмерных точек моей модели на плоскость. Я хочу найти 3d-аффинное преобразование (перевод, поворот и масштаб) 3D-модели, так что проекция этой 3D-модели даст мне 2D-точки на плоскости так же, как и у меня.Как я могу найти 3d-аффинное преобразование моей 3D-модели, если у меня есть 2D-точки его проекции?

Как найти 3d-аффинное преобразование моей 3D-модели, если у меня есть 2D-точки его проекции?

ответ

1

Просто найдите нулевое пространство для матрицы проекции, например. в matlab вы можете использовать u = null (P) (или Python (NumPy, SciPy), finding the null space of a matrix в numpy). Это будет один вектор, так как P проецирует один размер вниз из трехмерного пространства.

Аффинное преобразование, удовлетворяющее условию P * A = P (где P - проекция, а A - аффинное преобразование), будет A = ([uu ... u] + I), где вы формируете матрицу из нулевого пространства вектор u соответствует размеру A (вероятно, 4x4 включает перевод).