Как сделать соответствие 2D-3D очков

Я работаю с OpenCv API над проектом дополненной реальности, используя одну камеру. У меня есть:

  • 3D-точка моего 3D-объекта (я получаю 4 очка от MeshLab)
  • 2D-точки, которым я хочу следовать (у меня есть 4 точки): эти точки не являются проекцией 3D-точек.
  • Внутренние параметры камеры.

Используя эти параметры, у меня есть внешние параметры (вращение и перемещение с использованием функции cvFindExtrinsicParam), которые я использовал для визуализации моей модели и установки матрицы modelView. Моя проблема в том, что 3D-модель не показана в определенном положении: она была показана в другом месте на моем изображении. Как я могу исправить местоположение модели, а затем матрицу modelView? На других форумах мне говорили, что я должен сделать соответствующее 2D-3D, чтобы получить внешние параметры, но я не знаю, как соотнести мои 2D точки с 3D точками?

1 ответ

Как правило, вы проектируете точки, которые вы хотите отслеживать, таким образом, чтобы 2d-3d соответствие сразу было ясно. Самый простой способ сделать это - иметь очки разных цветов. Вы также можете использовать шаблон (карты дополненной реальности Google), который затем нужно будет проанализировать, чтобы узнать, как он вращается на изображении. Шаблон, конечно, не может быть симметричным вращением.

Если вы не можете этого сделать, вы можете попробовать все различные комбинации точек, подключить их к OpenCV, чтобы получить матрицу, затем спроецировать ваши 3D точки на 2D точки с этими матрицами, а затем посмотреть, какая из них подходит лучше всего.

Другие вопросы по тегам