Как я могу проецировать произвольный самолет, идентифицированный на 4 балла на 2D-самолете?
-
26-09-2019 - |
Вопрос
Проблема, которую мы пытаемся решить проблему нахождения точки в двух разных представлениях самолета. Первый самолет, который у нас есть, вращается для создания перспективы; Второе - это 2D вид той же самолета. У нас есть 4 балла на каждом из планов, которые мы знаем, чтобы быть эквивалентными. Вопрос в том, если у нас есть произвольная точка в плоскости 1, как мы находим соответствующую точку в плоскости 2?
Лучше всего, вероятно, чтобы проиллюстрировать корпус использования, чтобы наилучшим образом уточнить вопрос. У нас есть изображение, показанное слева.
2D макета диаграмма пространства
Таким образом, Givens, которые у нас есть, - это красные квадраты с обеих картин. Обратите внимание, что, если возможно, я бы хотел, чтобы это было возможно, что 2D-пространство не обязательно квадрат. Они доступны нам заранее и известны. У меня также есть зеленые точки, выложенные на самолете в первом изображении. Я хотел бы иметь возможность провести проекцию точек в изображении 1 на пространство в изображении 2.
Примечание также для изображения 1 у меня нет определенного окна или положения глаз. Я просто знаю, что красная площадь из изображения 1 представляет собой преобразование изображения 2 красного квадрата 2 и что изображение 2 находится в 2D пространстве.
Решение
Это особый случай обнаружения сопоставлений между четырехугольниками, которые сохраняют прямые линии. Они обычно называют гомографическими преобразованиями. Здесь один из квадроциклов - это квадрат, поэтому это популярный особый случай. Вы можете погладить Google эти условия («Quad to Quad», и т. Д.) Чтобы найти объяснения и код, но вот некоторые для вас.
Перспективная оценка преобразования
Извлечение четырехстороннего изображения в прямоугольник
Проективный деформация и картирование
Проективации для ImageWarparning. Пол Хекберт.
Математика не особо приятна, но это тоже не так сложно. Вы также можете найти какой-код из одной из вышеуказанных ссылок.