Алгоритм проецирования 2D / 3D объектов на плоскость (Дополненная реальность)? - PullRequest
6 голосов
/ 01 апреля 2011

Я работаю над проектом об дополненной реальности с использованием маркера (шахматной доски), который берет изображения с веб-камеры и вставляет 2D / 3D-объект в плоскость шахматной доски (в реальном времени).

С помощью openCV я смог обнаружить углы шахматной доски и нарисовать ее.

Я использовал Direct3D для рендеринга кадра (с помощью ортогональной проекции), чтобы позже я мог использовать его для проецирования 2d / 3d-объектов.

Теперь я застрял на этом этапе. Я знаю, что есть библиотеки, такие как ARToolkit и т. Д., Но я хочу понять технику и алгоритм, лежащий в основе этого. Как найти матрицу преобразования, которая может отобразить трехмерный объект на плоскость шахматной доски?

1 Ответ

2 голосов
/ 01 апреля 2011

Эта статья хорошо объясняет:

H. Като и М. Биллингхерст. Отслеживание маркера и калибровка hmd для видео на основе система конференц-связи дополненной реальности. Дополненная реальность, 1999 г. (IWAR ’99) Труды. 2-й Международный семинар IEEE и ACM, стр. 85–94, 1999. 1, 2, 7, 9

Быстрое объяснение:

  1. Найти углы маркера и создать из него 2d ребра

  2. создать базовые векторы маркера u1, u2, используя плоскости, заданные ребрами (http://twitpic.com/4fmbsu)

  3. используйте перекрестное произведение на два базовых вектора u1, u2 для получения третьего вектора u3

  4. используйте их для построения вашей матрицы

...