Автор: Илья Бакалец Редактура: Игорь Ильин, Александр Лекомцев
Одна из главных задач в области машинного зрения — задача определения ориентации и положения камеры в пространстве на основе изображения, полученного этой камерой. Ее результаты позволяют создать виртуальную сцену с плоским маркером-объектом и точно определить позицию самой камеры**.** Более того, такой подход помогает устранять искажения на всех изображениях камеры. Это особенно актуально в контексте задач виртуальной и дополненной реальности, где требуется точное наложение двумерного изображения на поверхность стены или размещение трехмерной модели на поверхности стола.
Рисунок 1. Фото до (слева) и после (справа) калибровки камеры (источник)
На рисунке выше показана фотография, снятая камерой с объективом fish-eye (”рыбий глаз”). Этот тип объектива имеет очень широкий угол обзора, что приводит к деформациям изображения — оно выглядит округлым и выпуклым и сильно искажает перспективу. Слева мы видим фото с такими искажениями, а справа — то же самое фото, но уже после процесса калибровки камеры. Калибровка позволяет уменьшить или устранить искажения, следовательно, вернуть объекту естественный вид.
Для калибровки камеры нужно собрать датасет из изображений, созданных по определенным параметрам. И тогда алгоритм даст хороший результат. Поэтому давайте познакомимся с требованиями к датасету и типами маркеров.
Маркер используется в процессе калибровки камеры для определения ее параметров и искажений, которые могут возникнуть при формировании изображения. Паттерн имеет определенную геометрическую структуру и регулярность. Это делает его удобным для анализа и коррекции искажений. Благодаря нему мы знаем известные точки в мировых координатах, например, в миллиметрах, и точки в пикселях.
Вообще, есть очень много маркеров. Мы рассмотрим основные из них:
В случае с шахматной доской нам важно попадание всей доски в кадр при сборе датасета. Если часть доски не попадет в кадр, алгоритм потеряет один или несколько углов. Тогда мы не сможем точно соотнести $3D$-точки с $2D$-точками. С другой стороны, плюс этого маркера в том, что углы шахматной доски (седловые точки) определяются с высокой точностью. Они не подвержены искажениям при перспективных преобразованиях или дисторсии объектива.
Для исключения инвариантности к вращению число строк должно быть четным, а число столбцов — нечетным (или наоборот). Иначе может возникнуть неоднозначность вращения.
Рисунок 2. Маркер шахматная доска
ChArUco — смесь двух маркеров, а именно шахматной доски и ArUco маркера, который полностью состоит из ArUco меток.
ArUco метки — уникальные коды, которые обеспечивают устойчивость к ориентации и могут быть более устойчивы к таким искажениям, как небольшие изменения углов или формы. При использовании ChArUco для отслеживания объектов ArUco маркеры обеспечивают точные точки определения положения и ориентации объектов. А еще благодаря этому паттерну не будет проблем при неполном попадании объектов в кадр.
Рисунок 3. Маркер ChArUco