Проективная геометрия: как превратить проекцию прямоугольника в 3D в 2D вид

Так что проблема в том, что у меня есть 3D-проекция прямоугольника, который я хочу превратить в 2D. То есть у меня есть фотография листа бумаги, лежащего на столе, который я хочу преобразовать в двухмерный вид этого листа. Поэтому мне нужно получить неискаженное двухмерное изображение, вернув все преобразования 3D/ проекции и получив вид сверху листа сверху. Я случайно нашел несколько указаний по этому вопросу, но они не предлагают немедленных инструкций о том, как этого можно достичь. Было бы очень полезно получить пошаговую инструкцию о том, что нужно сделать. Или, в качестве альтернативы, ссылка на ресурс, который разбивает его на мелкие детали.

3 ответа

Решение

Вам нужно больше информации, чтобы сделать это. Например размер листа бумаги. Допустим, у вас есть это.

То, что вам нужно узнать, называется "гомография". Это в основном следующая ситуация:

У вас есть та же самая плоская поверхность (ваш лист бумаги), и вы делаете снимок с двух разных камер (скажем, одна - это фактическое изображение, которое у вас есть, а другая - та, которую вы хотите получить - та, что с камерой). точно над листом бумаги).

Существует преобразование из двухмерного пространства одного изображения в двухмерное пространство другого изображения (гомография), и ваша цель - найти его. Как только вы найдете его, просто примените его к изображению, чтобы получить вид сверху.

Чтобы найти матрицу гомографии, вам нужно (как минимум) 4 точки, координаты которых вы знаете на ОБА изображениях.

Очевидным выбором для этих точек являются вершины листа бумаги, конечно. На изображении, которое у вас есть, вы можете найти их вручную. На целевом изображении вы можете выбрать такие, чтобы лист центрировал его (0,0), зная его размеры.

Есть много информации о матрице гомографии из 4 пунктов онлайн. Это только один из первых, на которые я натолкнулся, поэтому там должны быть лучшие источники:)

Обратите внимание, что чаще всего эти вычисления выполняются в 2D проективном пространстве, поскольку это проективное преобразование.

Если вы делаете правильное 3D -> 2D преобразование вершин, оно должно работать нормально. Отправной точкой является исследование модели DaVinci для трехмерной точки -> 2D точечной проективной геометрии.

Ответ Петара был бы верным, если бы вы ничего не знали о форме бумаги - если бы бумага могла быть произвольной четырехугольной. Но поскольку бумага представляет собой прямоугольник, это достаточно ограничивает проблему, чтобы определить гомографию без необходимости знать соотношение сторон прямоугольника.

См. Раздел 4 исследования Microsoft "Whiteboard It!" бумага для деталей о том, как это сделать.

Другие вопросы по тегам