Алгоритм проецирования 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
быстрое объяснение:
найдите кордеры маркера и создайте из него 2d ребра
создать базовые векторы u1, u2 маркер c использованием плоскостей, определенных ребрами (http://twitpic.com/4fmbsu)
используйте перекрестное произведение на двух базовых векторах u1, u2 для получения третьего вектора u3
используйте их, чтобы построить вашу матрицу