Есть ли алгоритм решения такой геометрической задачи реконструкции проекции?

У нас есть сетка с красными квадратами. Это означает, что у нас есть массив из 3 квадратов (с углами == 90 градусов), которые, как мы знаем, имеют одинаковый размер, лежат в одной плоскости и с одинаковым вращением относительно плоскости, на которой они лежат, и не расположены на одной линии на самолет.

У нас есть проекция пространства, содержащая плоскость с квадратами.

im 1

Мы хотим повернуть нашу плоскую проекцию квадратами так, чтобы мы видели ее так, как будто она обращена к нам, в общем, нам нужна формула для поворота каждой точки этой исходной плоской проекции, чтобы она была обращена к нам, как на изображении ниже.

По каким формулам можно решить такую ​​задачу, как ее решить, сталкивался ли кто-нибудь раньше с подобным?

im 2


person Rella    schedule 13.09.2010    source источник
comment
Вы хотите преобразование в пространстве экрана (пиксели, 2d) или в мировом темпе (3D)?   -  person Victor Liu    schedule 14.09.2010
comment
Какие структуры данных вы используете в качестве входных? Точки? Пиксели? Прямые линии?   -  person Dr. belisarius    schedule 14.09.2010
comment
Прямые линии и объекты (но я генерирую их из пикселей =))   -  person Rella    schedule 14.09.2010


Ответы (1)


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

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

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

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

Projective Warping & Mapping

ProjectiveMappings for ImageWarping, автор Пол Хекберт.

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

person brainjam    schedule 14.09.2010
comment
Хорошо, +1 за правду, но комментарий о том, что математика неприятен, очень мягкий. Это не сложно для каждого набора, но переход между аналитической стороной (чистой математикой), компьютерным дискретным представлением, а затем ужасно нерешенным представлением визуализированного изображения будет очень-очень-очень уродливым. Кроме того, математика становится чрезвычайно сложной, когда камера настроена «интересно», то есть рыбий глаз или экстремальный телефото - суть в том, что характеристики изображения должны быть очень тщательно ограничены, чтобы это работало. <вздох> - person Mark Mullin; 14.09.2010
comment
@Mark: согласен - OP до сих пор не очень четко объяснил ограничения и цели. И, возможно, проблема в том, что, учитывая перспективный вид 3 красных квадратов без сетки, можно преобразовать 3 красных квадрата в 2D-вид. Может быть, это не проблема обработки изображения, а проблема регистрации. Так что подождем, пока ОП прояснит. Между тем, это был мой лучший ответ. - person brainjam; 14.09.2010
comment
Формулы вычисления слишком интенсивны для преобразования ТОЧЕК в соответствии с запросом OP ... но в проблеме, заявленной OP, я думаю, что преобразование прямых линий - это путь. Я провел математические расчеты для проективного преобразования с двумя точками выхода (с использованием CAS), но это слишком долго и скучно, чтобы публиковать здесь ответ. - person Dr. belisarius; 14.09.2010
comment
@Kabumbus Вы приняли ответ. Почему вы все еще просите идеи для решения проблемы? - person Dr. belisarius; 14.09.2010
comment
Привет, я получил тот же ответ, теперь я не чувствую себя особенным :) stackoverflow.com/questions/4217370/ - person Scott; 28.01.2011