Как я могу проецировать произвольную плоскость, обозначенную 4 точками, на 2d плоскость? - PullRequest
5 голосов
/ 18 ноября 2010

Проблема, которую мы пытаемся решить, - найти точку в двух разных представлениях плоскости.Первая плоскость, которую мы имеем, вращается, чтобы создать перспективу;второй - это двухмерный вид той же плоскости.У нас есть 4 балла по каждому из планов, которые, как мы знаем, эквивалентны.Вопрос в том, есть ли у нас произвольная точка на плоскости 1, как найти соответствующую точку на плоскости 2?

Лучше всего проиллюстрировать вариант использования, чтобы лучше прояснить вопрос.У нас есть изображение, показанное слева.

Проекционная плоскость

alt text

2D схема расположения пространства

alt text

Итак, данные, которые у нас есть, - это красные квадраты на обеих картинках.Обратите внимание: если возможно, я бы хотел, чтобы 2D-пространство не обязательно было квадратом.Они доступны нам заранее и известны.У меня также есть зеленые точки, выложенные на плоскости на первом изображении.Я хотел бы иметь возможность проецировать точку на изображении 1 на пространство на изображении 2.

Обратите внимание также на изображение 1 У меня нет определенного окна или положения глаза.Я просто знаю, что красный квадрат из изображения 1 является преобразованием формы 2 из красного квадрата и что изображение 2 находится в 2D-пространстве.

1 Ответ

6 голосов
/ 18 ноября 2010

Это особый случай поиска отображений между четырехугольниками, которые сохраняют прямые линии.Они обычно называются гомографическими преобразованиями.Здесь один из четырехугольников является квадратом, так что это популярный особый случай.Вы можете погуглить эти термины («quad to quad» и т. Д.), Чтобы найти объяснения и код, но вот некоторые для вас.

Оценка преобразования перспективы

обсуждение игрового форума

извлечение четырехугольного изображения в прямоугольник

Проективная деформация и отображение

Пол Хекберт * ProjectiveMappings для ImageWarping .

Математика не особенно приятна, но и не так сложна.Вы также можете найти код по одной из приведенных выше ссылок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...