Быстрый алгоритм вращения плоскости?


4

Я работаю над приложением, которое обнаруживает самый видный прямоугольник в изображении, а затем пытается повернуть его так, чтобы нижняя левая часть прямоугольника располагалась в начале координат, подобно тому, как работает система IQPR OSCAR. Однако, как только обнаружен самый видный прямоугольник, я не уверен, как учесть компонент глубины или ось z, поскольку прямоугольник не всегда будет «лобовым». Любые примеры для моего понимания были бы весьма полезными. Ниже приведен пример из системы OSCAR IUPR.

alt text http://quito.informatik.uni-kl.de/oscar/oscar.php?serverimage=img_0324.jpg&montage=use

3

, Вам не нужно иметь дело с 3D информации в данном случае, это просто функция mappping, от одного набора координат к другой.

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

Почти забыт - если «быстрый» действительно важен, вы можете упростить систему, чтобы использовать только простые сдвиговые преобразования в комбинации, хотя это будет плохо влиять на качество изображения для сильно наклонных предметов.


2

На самом деле, я думаю, вы можете уйти с чем-то гораздо более простым, чем Mark's approach.

  1. Как только у вас есть 2D-координаты на перекошенном изображении, повторно назначьте эти координаты как координаты текстуры.

  2. В рендерере нарисуйте простой прямоугольник, где вершины каждого угла являются текстурами, сопоставленными вершинам, найденным на перекошенном 2D-изображении (нормализованном и преобразованном в координатную плоскость текстуры рендеринга).

Теперь вы можете полагаться на аппаратные средства (с использованием OpenGL или аналогичный), чтобы сделать поправку на вас, или вы можете написать свой собственный текстурный картографа:

Соотношение сторон необходимо будет догадывался, так как мы удаляют фактическую информацию о 3D. Тем не менее, вы можете уйти, просто принимая максимальную ширину и максимальную высоту вашего перекошенного прямоугольника.

Perspective Texture Mapping by Chris Hecker