Рассматривает ли ARKit 2.0 искажение объектива в iPhone и iPad? - PullRequest
0 голосов
/ 26 августа 2018

ARKit 2.0 обновляет многие внутренние (и внешние) параметры ARCamera от кадра к кадру.Я хотел бы знать, учитывает ли он также Radial Lens Distortion (как в AVCameraCalibrationData классе, который не использует ARKit), и соответствующим образом исправить искажение видеокадров (операции distort / undistort) для возвратаiPhone и iPad камеры?

var intrinsics: simd_float3x3 { get }

enter image description here Как мы все знаем, Radial Lens Distortion сильно влияет на точность оценки позы в 6 степеней свободы, когда мы помещаем неискаженные трехмерные объекты в искаженную объективом сцену реального мира.

enter image description here

var lensDistortionLookupTable: Data? { get } 

/* A map of floating-point values describing radial */
/* lens distortions in AVCameraCalibrationData class */

Если через API доступно Lens Distortion's math в ARKit 2.0, где я могу его найти?

1 Ответ

0 голосов
/ 11 сентября 2018

Хотя это прямо не указано, я уверен, что ARKit исправляет нелинейные искажения линзы.Справочные таблицы искажения объектива (и обратного искажения) существуют в iOS11 и доступны через AVCameraCalibrationData, но ARKit не предоставляет их, предположительно потому, что в них нет необходимости, поскольку вы уже работаете с исправленными координатами.

Являются ли параметры модели искажения одинаковыми для каждой модели устройства (т. Е. Точно одинаковые значения для каждого iPhone 7), это интересный вопрос.У меня нет доступа к нескольким телефонам одной и той же модели, но это не должно быть трудно выяснить для кого-то, кто делает.

источник

КакНапример: https://github.com/eugenebokhan/ARKit-Multiplayer Обнаружение QR-маркера image

С помощью Apple Vision теперь можно распознать QR-маркер в видеоподаче камеры и отслеживать его, пока он находится вполе зрения.Каркас предоставляет нам координаты квадратных углов QR-маркера в системе координат экрана.

Оценка положения QR-маркера

Следующее, что вы, вероятно, захотите сделать после обнаруженияQR-маркеры предназначены для получения позы камеры от них.

Чтобы выполнить оценку позы QR-маркера, вам необходимо знать параметры калибровки вашей камеры.Это матрица камеры и коэффициенты искажения.Каждый объектив камеры имеет уникальные параметры, такие как фокусное расстояние, главная точка и модель искажения объектива.Процесс нахождения внутренних параметров камеры называется калибровкой камеры.Процесс калибровки камеры важен для приложений дополненной реальности, потому что он описывает преобразование перспективы и искажение объектива на выходном изображении.Для достижения наилучшего пользовательского опыта с дополненной реальностью визуализация дополненного объекта должна выполняться с использованием той же перспективной проекции.

В конце, после калибровки вы получаете матрицу камеры: матрицу из 3х3 элементов.с фокусными расстояниями и координатами центра камеры (или внутренними параметрами) и коэффициентами искажения: вектор из 5 или более элементов, который моделирует искажение, создаваемое вашей камерой.Параметры калибровки практически одинаковы для большинства устройств iDevices.

С точным расположением углов маркера мы можем оценить трансформацию между нашей камерой и маркером в трехмерном пространстве.Эта операция известна как оценка позы из 2D-3D соответствий.Процесс оценки позы находит евклидово преобразование (которое состоит только из компонентов вращения и перемещения) между камерой и объектом.

Vector

Используется Cобозначить центр камеры.Точки P1-P4 - это трехмерные точки в мировой системе координат, а точки p1-p4 - их проекции на плоскость изображения камеры.Наша цель - найти относительное преобразование между известным положением маркера в трехмерном мире (p1-p4) и камерой C, используя встроенную матрицу и известные точечные проекции на плоскость изображения (P1-P4).

Функции OpenCVиспользуются для расчета преобразования QR-маркера таким образом, чтобы он сводил к минимуму ошибку перепроецирования, то есть сумму квадратов расстояний между наблюдаемыми точками изображения проекции и проецируемыми точками объекта.Предполагаемое преобразование определяется вращением (rvec) и компонентами перевода (tvec).Это также известно как евклидово преобразование или жесткое преобразование.В конце мы получаем кватернион вращения и матрицу перевода QR-маркера.

Интеграция в ARKit от Apple

Последняя часть - это интеграция всей информации о позе QR-маркера в 3D-сцену, созданную ARKit.ARKit использует визуальную инерционную одометрию (VIO) для точного отслеживания окружающего мира.VIO объединяет данные датчика камеры с данными CoreMotion.Эти два входа позволяют устройству определять, как оно движется в помещении с высокой степенью точности и без какой-либо дополнительной калибровки.Все средства рендеринга основаны на Apple Metal и Apple SceneKit над ним.

Чтобы правильно отобразить узел SceneKit на нашем QR-маркере, нам нужно создать матрицу модели нашего QR-маркера из кватерниона иМатрицу перевода мы получили от OpenCV.Следующим шагом является умножение матрицы модели QR-маркера на матрицу преобразования виртуальной камеры сцены SceneKit.В результате мы можем увидеть пользовательский узел (узел Axes в нашем проекте), который повторяет все движения QR-маркера в реальном мире, находясь в поле зрения камеры iPhone, и если это не так, он остается на последнем обновленномположение, чтобы мы могли осмотреть его вокруг.

Move

...