Автор: Илья Бакалец Редактура: Игорь Ильин, Александр Лекомцев

Введение

Одна из главных задач в области машинного зрения — задача определения ориентации и положения камеры в пространстве на основе изображения, полученного этой камерой. Ее результаты позволяют создать виртуальную сцену с плоским маркером-объектом и точно определить позицию самой камеры**.** Более того, такой подход помогает устранять искажения на всех изображениях камеры. Это особенно актуально в контексте задач виртуальной и дополненной реальности, где требуется точное наложение двумерного изображения на поверхность стены или размещение трехмерной модели на поверхности стола.

Рисунок 1. Фото до (слева) и после (справа) калибровки камеры (источник)

Рисунок 1. Фото до (слева) и после (справа) калибровки камеры (источник)

На рисунке выше показана фотография, снятая камерой с объективом fish-eye (”рыбий глаз”). Этот тип объектива имеет очень широкий угол обзора, что приводит к деформациям изображения — оно выглядит округлым и выпуклым и сильно искажает перспективу. Слева мы видим фото с такими искажениями, а справа — то же самое фото, но уже после процесса калибровки камеры. Калибровка позволяет уменьшить или устранить искажения, следовательно, вернуть объекту естественный вид.

Маркеры и датасет

Для калибровки камеры нужно собрать датасет из изображений, созданных по определенным параметрам. И тогда алгоритм даст хороший результат. Поэтому давайте познакомимся с требованиями к датасету и типами маркеров.

Маркеры

Маркер используется в процессе калибровки камеры для определения ее параметров и искажений, которые могут возникнуть при формировании изображения. Паттерн имеет определенную геометрическую структуру и регулярность. Это делает его удобным для анализа и коррекции искажений. Благодаря нему мы знаем известные точки в мировых координатах, например, в миллиметрах, и точки в пикселях.

Вообще, есть очень много маркеров. Мы рассмотрим основные из них:

  1. Шахматная доска (chessboard) и ChArUco маркеры

В случае с шахматной доской нам важно попадание всей доски в кадр при сборе датасета. Если часть доски не попадет в кадр, алгоритм потеряет один или несколько углов. Тогда мы не сможем точно соотнести $3D$-точки с $2D$-точками. С другой стороны, плюс этого маркера в том, что углы шахматной доски (седловые точки) определяются с высокой точностью. Они не подвержены искажениям при перспективных преобразованиях или дисторсии объектива.

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

Рисунок 2. Маркер шахматная доска

Рисунок 2. Маркер шахматная доска

ChArUco — смесь двух маркеров, а именно шахматной доски и ArUco маркера, который полностью состоит из ArUco меток.

ArUco метки — уникальные коды, которые обеспечивают устойчивость к ориентации и могут быть более устойчивы к таким искажениям, как небольшие изменения углов или формы. При использовании ChArUco для отслеживания объектов ArUco маркеры обеспечивают точные точки определения положения и ориентации объектов. А еще благодаря этому паттерну не будет проблем при неполном попадании объектов в кадр.

Рисунок 3. Маркер ChArUco

Рисунок 3. Маркер ChArUco

  1. Асимметричный и симметричный паттерны из кружков