Камеры и расширение ввода
В этой статье представлены модели камер, параметры и другие особенности использования физических камер, а также способы расширения ввода с помощью пользовательских камер.

Входной кадр
Входной кадр (Input Frame) — это базовая единица данных в AR, представляющая всю релевантную информацию, захваченную из камеры или другого источника данных за один раз. Обычно входной кадр включает:
- Исходные данные изображения (camera image)
- Параметры камеры (например, внутренние параметры)
- Метку времени
- Матрицу преобразования камеры в мировых координатах
- Состояние отслеживания (tracking status)
Эта информация предоставляет пространственно-временный контекст, необходимый алгоритмам AR для позиционирования, отслеживания, рендеринга и других задач.
Физическая камера
Современные камеры на электронных устройствах обычно состоят из нескольких линз и зеркал. Однако для построения модели камеры обычно используются упрощенные модели, а не реальная оптическая структура.
Модель камеры-обскуры

Это самая простая модель, где свет проходит через малое отверстие, формируя перевернутое на 180 градусов изображение. Однако выходные данные камеры обычно корректируются для отображения изображения в правильной ориентации. Модель описывается шестью параметрами: ширина и высота в пикселях \(w, h\), фокусное расстояние в пикселях \(f_x, f_y\), позиция главной точки в пикселях \(c_x, c_y\). Заметим, что при масштабировании ширины и высоты в пикселях соответствующие изменения фокусного расстояния и позиции главной точки сохранят положение изображения неизменным.
Модель камеры OpenCV
Некоторые камеры имеют значительные радиальные и тангенциальные искажения. Модель камеры OpenCV расширяет модель камеры-обскуры, добавляя параметры высшего порядка для описания радиальных и тангенциальных искажений. Радиальные искажения описываются параметрами \(k_1, k_2, k_3, \cdots\). Тангенциальные искажения описываются параметрами \(p_1, p_2\).
Примечание
Некоторые трекеры не поддерживают модель камеры OpenCV.
Модель камеры "рыбий глаз" OpenCV
Камеры "рыбий глаз" используют проекцию перспективы для сжатия широкоугольного изображения на меньшую площадь сенсора. Модель камеры "рыбий глаз" OpenCV не включает коррекцию искажений и описывается на основе 6 параметров модели камеры-обскуры с добавлением параметров \(k_1, k_2, k_3, k_4, \cdots\).
Примечание
Некоторые трекеры не поддерживают модель камеры "рыбий глаз" OpenCV.

Ориентация камеры и изображения
На смартфонах, когда устройство держат горизонтально (поворот на 90 градусов против часовой стрелки от вертикального положения) и ориентация экрана также горизонтальна, изображение с задней камеры отображается на экране в соответствии с реальной сценой. Изменение ориентации отображения экрана без изменения физической ориентации устройства не меняет ориентацию изображения, выводимого физической камерой. При вертикальном удержании устройства и вертикальной ориентации экрана изображение с задней камеры требует поворота на 90 градусов по часовой стрелке перед отображением для соответствия реальной сцене. При изменении ориентации отображения экрана, изображение камеры требует компенсационного поворота в обратном направлении для соответствия реальной сцене.
Ориентация камеры и изображения обычно определяется относительно естественной ориентации устройства:
Смартфоны
Android
Android определяет естественную ориентацию как вертикальное положение устройства. Датчики IMU также используют это направление как базовое. Относительный угол поворота изображения камеры относительно этого направления доступен как параметр камеры.
iOS
На iOS, хотя естественная ориентация явно не определена, датчики IMU используют тот же базис, что и на Android.
Планшеты
Естественная ориентация планшетов может быть как горизонтальной, так и вертикальной (как у смартфонов).
Очки
Естественная ориентация очков обычно горизонтальна.
При рендеринге изображения камеры учитываются как ориентация камеры, так и ориентация экрана.
Типы камер и зеркальное отображение
Смартфоны обычно имеют заднюю и фронтальную камеры. Изображение с фронтальной камеры требует зеркального отражения по горизонтали перед отображением на экране для имитации зеркала. Без отражения изображение выглядит непривычно.
Расширение ввода
EasyAR поддерживает расширение ввода через пользовательские камеры. Пользовательская камера позволяет получать входные кадры из внешних источников и передавать их в систему AR для использования трекерами. Вы можете самостоятельно реализовать получение данных изображения для пользовательской камеры.
Платформенно-ориентированные руководства
Использование камер и расширения ввода тесно связано с платформой. Для разработки обратитесь к следующим руководствам в соответствии с целевой платформой: