Итак, проблема в том, что у меня есть 3D-проекция прямоугольника, которую я хочу превратить в 2D. То есть у меня есть фотография листа бумаги, лежащего на столе, который я хочу преобразовать в 2D-вид этого листа. Итак, что мне нужно, так это получить неискаженное 2D-изображение, вернув все преобразования 3D/проекции и получив простой вид листа сверху. Мне удалось найти несколько указаний по этому вопросу, но они не предлагают немедленной инструкции о том, как этого можно достичь. Было бы очень полезно получить пошаговую инструкцию того, что нужно сделать. Или, как вариант, ссылка на ресурс, который разбивает его на мелкие детали.
проективная геометрия: как превратить проекцию прямоугольника в 3D в 2D-вид
Ответы (3)
Для этого вам нужно больше информации. Например, размер листа бумаги. Допустим, он у вас есть.
То, о чем вам нужно узнать, называется «омография». Это в основном следующая ситуация:
У вас есть одна и та же плоская поверхность (ваш лист бумаги), и вы фотографируете ее с двух разных камер (скажем, одна — это фактическое изображение, которое у вас есть, а другая — та, которую вы хотите получить — та, что с камерой). точно над листом бумаги).
Существует преобразование из 2D-пространства одного изображения в 2D-пространство другого изображения (гомография), и ваша цель — найти его. Как только вы найдете его, вы просто примените его к своему изображению, чтобы получить вид сверху.
Для того, чтобы найти матрицу гомографии, вам нужно (как минимум) 4 точки, координаты которых вы знаете на ОБОИХ изображениях.
Очевидным выбором для этих точек, конечно же, являются вершины листа бумаги. На изображении, которое у вас есть, вы можете найти их вручную. В целевом изображении вы можете выбрать такие, чтобы лист был центрирован (0,0), зная его размеры.
Информации о матрице гомографии из 4 точек в сети предостаточно. Это только одно из первых, с которыми я столкнулся, так что должны быть лучшие источники там :)
Обратите внимание, что чаще всего эти вычисления выполняются в двумерном проективном пространстве, поскольку это проективное преобразование.
Ответ Петара был бы правильным, если бы вы ничего не знали о форме бумаги — если бы бумага могла быть любым произвольным четырехугольником. Но поскольку бумага представляет собой прямоугольник, это достаточно ограничивает задачу, чтобы определить гомографию без необходимости знать соотношение сторон прямоугольника.
См. раздел 4 от Microsoft Research "Whiteboard It!" paper, чтобы узнать, как это сделать.
Если вы сделаете правильное 3D -> 2D преобразование вершин, все должно работать нормально. Отправной точкой является исследование модели Да Винчи для трехмерной точечной --> двумерной точечной проективной геометрии.