Алгоритм проецирования 2D / 3D объектов на плоскость (дополненная реальность)?

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

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

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

теперь я застрял на этой стадии. Я знаю, что есть библиотеки например, ARToolkit и т. д., Однако я хочу понять технику и алгоритм за ней. Как найти матрицу преобразования, которая может отображать 3D-объект на плоскость шахматной доски ?

1 ответов


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

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

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

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

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

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

  4. используйте их, чтобы построить вашу матрицу