Какой алгоритм используется ARKit или ARCore для обнаружения плоских поверхностей? - PullRequest
1 голос
/ 06 марта 2020

Я работаю над созданием простых AR-приложений и немного поиграл с ARCore и ARKit. На меня произвела впечатление точность позиционирования виртуальных объектов в реальном мире, поскольку у телефонов, с которыми я играл, нет ни датчика глубины, ни нескольких камер, поэтому мне было интересно: какой алгоритм эти SDK реализуют для обнаружения плоскостей?

1 Ответ

1 голос
/ 07 марта 2020

По сути, ARCore использует метод под названием Параллельная одометрия и картирование ( COM ), а ARKit использует метод под названием Визуально-инерционная одометрия ( VIO ), чтобы понять, где смартфон находится относительно реальной среды вокруг него.

На первом этапе - Отслеживание движения - каждый смартфон объединяет визуальные данные, поступающие с RGB camera sensor (при 60 кадрах в секунду), и данные движения, поступающие с accelerometer and gyroscope sensors (при 1000 кадр / с) для вычисления положения высококонтрастного feature points с использованием формулы параллакса . Эта информация позволяет ARCore и ARKit получить положение и ориентацию виртуальной камеры с шестью степенями свободы (6 степеней свободы).

Следующий этап - Понимание сцены - помогает ARCore и ARKit понять, где несколько характерных точек (или редкое облако точек) копланарны - таким образом, позволяя смартфону узнать, где будет обнаружена плоскость ,

Последняя ступень ARCore - Оценка света , а последняя ступень ARKit - Рендеринг (you don't even need to import SceneKit, поскольку ARKit содержит все необходимые классы SceneKit. - проверьте это).

Как видите, изготовителю не нужно поставлять смартфон с несколькими RGB cameras или Depth rear camera, потому что только один датчик RGB с датчиком IMU можно сделать работу .

...