Это третья статья из серии о Visual SLAM. Первая здесь, вторая здесь.

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

Как формируется изображение

Для начала нам нужно разобраться как формируется изображение и какую роль в этом процессе играет камера.

Камера-обскура и математическая модель камеры

Большинство современных камер работают по принципу так называемой модели "камеры-обскуры" или просто модели камеры. Свое название модель получила от устройства, которое использовалось в древности художниками для рисования пейзажей. Камера-обскура представляла собой очень темную комнату с крохотным отверстием в одной из стен. На противоположной стене располагался холст. Через крохотное отверстие в стене проходил свет и формировал на стене перевёрнутое изображение мира.

Камера обскура
Камера обскура

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

В камерах используется математическая модель камеры при которой плоскость изображения находится между фокусной точкой и объектом. Таким образом изображение, которое формируется в камере, не будет перевернутым.

Важно отметить что модель камеры-обскуры это только грубое приближение принципа работы современной камеры. Современные камеры используют линзы. Почему линзы важны в камере?

Использование линз в камере

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

Пример как формируется изображение в фокусе
Пример как формируется изображение в фокусе

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

Фокусное расстояние это расстояние от оптического центра объектива до светочувствительной матрицы камеры, измеряемое в миллиметрах. Оно определяет угол обзора (насколько широко "видит" камера) и степень приближения объектов. Чем меньше фокусное расстояние, тем шире угол обзора, но ниже приближение, а чем больше фокусное расстояние, тем уже угол обзора и сильнее приближение.

Зависимость фокусного расстояния и угла обзора
Зависимость фокусного расстояния и угла обзора

Математическая модель включает в себя внутренние параметры (матрица проекции объектива и параметры модели дисторсии (искажений) объектива), и внешние параметры (матрица позиции и ориентации камеры в пространстве). Внутренние параметры каждой камеры вычисляются (или говор��т “калибруются”) один раз. Для этого нам нужно одной и той же камерой несколько раз сфотографировать объект с заранее известной геометрией. Например, для этих целей часто используют шахматную доску. Подробнее о калибровке камеры можно прочитать в этой статье.

Модель перспективной проекции

Для моделирования современных камер чаще всего используется модель перспективной проекции, в которой свет фокусируется в единственной точке центра камеры (точка Camera Center на изображении ниже).

На схеме представлено как 3D точка x_c проецируется в координаты пикселей x_s на плоскости изображения. Для простоты здесь только оси x и z (для оси y выводы будут полностью аналогичными).

Плоскость изображения не совпадает с центром камеры (имеет смещение равное фокусному расстоянию) и все лучи отраженные от точки x_c проходят через точку x_s (точка фокуса) и точку центра камеры. Мы знаем координаты точки в системе координат камеры (x_c, z_c), координату x точки на плоскости изображения и фокусное расстояние. Таким образом мы можем используя отношение подобных треугольников вывести следующее отношение:

\frac{x_{s}}{f} = \frac{x_{c}}{z_{c}}

Данное отношение называют формулой проекции пинхол камеры.

Обычно на практике используют больше одной линзы т.е. систему линз. С помощью системы линз исправляют большую часть оптических искажений. Тем не менее сохраняется искажение дисторсии.

Искажение дисторсии создает проблемы с моделью перспективной проекции которую мы ввели выше. Дисторсия — один из видов искажений в оптических системах, часто встречающийся в современных камерах. В результате линии, которые в реальности прямые, на изображении выглядят изогнутыми. В большинстве современных камер дисторсия небольшая. О дисторсии можно подробнее посмотреть лекцию на английском (там много математики).

Пример дисторсии
Пример дисторсии

Шаг Bundle Adjustment в визуцальном SLAM решает проблему дисторсии в камере.

Оптика в камерах

В камерах могут использоваться различные линзы. Линзы отличаются по типу фокусного расстояния (с фиксированным фокусным расстоянием и с переменным), углу обзора и другим параметрам.

По углу обзора линзы бывают стандартные (используются в телефонах и веб камерах), сверхширокоугольные, широкоугольные (н-р, fish eye камеры) и телеобъективы (длиннофокусные) . Fish eye линзы имеют очень большой угол обзора (130 градусов и более). Существуют камеры с углом обзора 360 градусов.

На изображениях с широкоугольных камер прямые линии выглядят искаженными (округленными).

Различные типы линз для камер
Различные типы линз для камер

Существуют алгоритмы Visual SLAM которые используют преимущества панорамных (т.е. сверхширокоугольных) камер. Например, вот такой алгоритм.

Кроме линз в оптике камеры важную роль играют апертура и затвор.

Апертура камеры

Апертура камеры, или диафрагма, — это переменное отверстие в объективе, которое регулирует количество света, попадающего на матрицу, а также влияет на глубину резкости изображения. Она обозначается в виде f-числа (например, f/1.8), где меньшее число соответствует более широкому отверстию и большему количеству света, а также меньшему диапазону резкости (размытый фон). Более высокие значения (например, f/8) означают меньшее отверстие, меньшее количество света и большую глубину резкости (резкость всего кадра).

Аппертура (Appertura) уменьшает ошибку линзы.

Апертуры и соответствующие им f-числа
Апертуры и соответствующие им f-числа

[ Если закрывать не всю линзу, а часть, то мы получим что-то посередине. Мы убираем часть лучей с края линзы и получаем меньше света, но при этом увеличивается глубина резкости (уменьшается пятно размытия). Фотографы пользуются диафрагмой, чтобы закрывать часть линзы и контролировать глубину резкости, количество света на сенсоре и некоторые другие параметры. ]

Затвор камеры

Затвор камеры — это механич��ское или электронное устройство, которое контролирует время (выдержку), в течение которого свет попадает на матрицу (или пленку) фотоаппарата, чтобы сформировать изображение. Он работает как «занавес», открываясь на доли секунды, чтобы пропустить свет, и закрываясь, полностью блокируя его, что и позволяет регулировать экспозицию кадра.

Затвор бывает глобальный и скользящий (rolling). Глобальный затвор позволяет получить изображение мгновенно. Скользящий получается пиксели изображения последовательно строка за строкой. Если снимать быстро движущийся объект (например, автомобиль) со скользящим затвором то иногда изображение объекта получается смазанным.

Скользящий затвор это более дешёвая технология. Глобальный затвор это более сложная и дорогая технология.

Глобальный затвор лучше подходит для визуального SLAM.

Есть статья о влиянии затвора на результаты работы визуального SLAM.

На этом все. До новых встреч!