По набору неупорядоченных снимков одновременно находим положения камер и трёхмерные точки сцены. Классическая основа и вход почти любого 3D-пайплайна.
Ключевые тезисы
- Инкрементальный наращивает реконструкцию по кадру, глобальный решает всё сразу и быстрее, но хрупче.
- : → соответствия → относительные позы → → уточнение.
- — стандартная реализация; её выход становится входом для и .
Какую задачу решает
На входе — набор фотографий, снятых кем угодно и в каком угодно порядке. Неизвестно ни где стояла камера, ни какая она. На выходе нужны обе вещи сразу: положения всех камер и трёхмерные координаты точек сцены. Задача выглядит замкнутой на себя, и это правда: зная камеры, легко найти точки, зная точки — легко найти камеры.
Разрывают круг постепенным наращиванием. Берут пару снимков с надёжными соответствиями, восстанавливают их относительное положение из , триангулируют первые точки. Дальше добавляют по кадру: новая камера находится по уже известным точкам, её новые наблюдения дают новые точки, и всё вместе периодически уточняется.
Результат определён с точностью до масштаба: снимок игрушечного домика и настоящего дома неразличимы. Масштаб приходит извне — от известного размера предмета в кадре, от GPS или от второй камеры с известной базой.
Чтобы снять предмет на стол, естественно встать в одну точку и поводить камерой из стороны в сторону. Для это худший вариант: база между кадрами почти нулевая, лучи от соседних камер идут почти параллельно, и вырождается — глубина определяется с огромной погрешностью. Обойдите предмет по кругу, снимая через каждые пятнадцать-двадцать градусов, и та же сцена восстановится уверенно: лучи пересекаются под большими углами, а каждая точка видна с многих сторон. Правило простое — двигаться должна камера, а не только её направление.
Подробный разбор
- Признаки: на каждом снимке находятся точки интереса и считаются .
- Сопоставление: пары снимков сравниваются, находятся кандидаты в соответствия.
- Геометрическая проверка: RANSAC с фундаментальной выбрасывает ложные пары.
- Инициализация: выбирается пара с хорошей базой, из неё восстанавливается первая пара камер и первые точки.
- Наращивание: новая камера находится по видимым известным точкам, её наблюдения дают новые точки.
- Уточнение: периодически пересчитывает всё вместе.
Самый дорогой шаг — сопоставление: пар снимков квадратично много. Для больших наборов сначала строят словарь визуальных слов и сравнивают только похожие кадры.
Кадры добавляются по одному, и после каждого (или каждых нескольких) запускается уточнение. отсеиваются на каждом шаге, поэтому метод устойчив: одна плохая пара снимков не рушит всю реконструкцию.
- Плюс: устойчивость к выбросам и понятная диагностика — видно, на каком кадре всё пошло не так.
- Минус: сложность растёт быстрее линейной, тысяча снимков считается часами.
- Минус: дрейф — маленькие ошибки накапливаются, и длинный проход по коридору «уползает» в сторону.
лечится замыканием цикла: если система узнаёт место, где уже была, добавляется связь между далёкими по времени кадрами, и глобальное уточнение распределяет накопленную ошибку.
Вместо наращивания строится : вершины — камеры, рёбра — относительные повороты и направления сдвига из попарной геометрии. Сначала решается задача усреднения поворотов, потом — задача восстановления положений, и лишь затем триангулируются точки.
| Инкрементальный | Глобальный | |
|---|---|---|
| скорость | медленно | быстро |
| устойчивость к выбросам | высокая | низкая |
| накапливается | нет по построению | |
| типичное применение | произвольные наборы фото | упорядоченные съёмки, дроны |
На практике встречается и гибрид: глобальная инициализация поворотов, затем инкрементальное добавление и общее уточнение. по умолчанию работает инкрементально — именно из-за устойчивости.
Увеличьте всю сцену вдвое и вдвое отодвиньте камеры — все снимки останутся идентичными. Значит, по одним изображениям масштаб не определим в принципе: реконструкция верна с точностью до положительного множителя.
- Положить в кадр линейку или предмет известного размера.
- Взять GPS-метки снимков (для съёмки с дрона — стандартная практика).
- Снимать откалиброванной стереопарой: там база известна в метрах.
- Использовать известную высоту камеры над плоскостью пола.
Для монокулярного SLAM это та же проблема, только острее: масштаб не только неизвестен, но и дрейфует по ходу движения. Поэтому в робототехнике камеру почти всегда дополняют инерциальным датчиком.
— открытая реализация, ставшая де-факто стандартом: она делает и сопоставление, и инкрементальный SfM, и плотную реконструкцию. Её выход — позы камер и разреженное облако — принимают почти все методы нейронного .
colmap feature_extractor \
--database_path db.db --image_path images/
colmap exhaustive_matcher --database_path db.db
colmap mapper \
--database_path db.db --image_path images/ --output_path sparse/Если снимков больше пары сотен, exhaustive_matcher заменяют на vocab_tree_matcher: полный перебор пар квадратичен и быстро становится главным потребителем времени.
Где применяется
- Трёхмерная модель здания или детали по обычным фотографиям.
- Подготовка данных для Позы камер, без которых не обучить.
- Картография с дронаОблёт объекта превращается в модель местности.
- Культурное наследиеОцифровка памятников по архивным и туристическим снимкам.
Плюсы, минусы и альтернативы
Плюсы
- Работает с обычными снимками без специального оборудования.
- Не требует знать камеру заранее: параметры оцениваются попутно.
- Даёт и геометрию сцены, и положения камер одним проходом.
Минусы
- Ломается на однородных поверхностях и повторяющихся узорах — соответствий нет или они ложные.
- Инкрементальный вариант накапливает на длинных последовательностях.
- Вычислительно дорог: сотни снимков считаются часами.
- Масштаб восстановить нельзя без внешней информации.
Брать, если
- Есть набор перекрывающихся снимков и нужна геометрия сцены.
- Как первый шаг перед нейронным .
Не брать, если
- Сцена движется или меняется между кадрами — предположение о жёсткости нарушено.
- Есть лидар или RGB-D: прямое измерение проще и точнее.
Чем заменяют
Видеолекции
Записи университетских курсов, где эта тема звучит. Ссылка открывает запись с той секунды, где о ней говорят, — искать по трёхчасовой лекции не нужно.
Связанные темы
Многовидовая реконструкция · Нейронный рендеринг
Local Features and Matching90%
Локальные признаки и соответствия · Трёхмерное зрениеЧтобы связать два снимка, нужно найти на них одни и те же точки. Детектор находит выделяющиеся места, дескриптор описывает окрестность так, чтобы описание пережило поворот и смену масштаба.
Epipolar Geometry90%
Эпиполярная геометрия · Трёхмерное зрениеТочка на одном снимке задаёт на другом не точку, а прямую. Это сужает поиск соответствий с плоскости до линии и позволяет отбраковать ложные пары.
Fundamental and Essential Matrix90%
Фундаментальная и существенная матрицы · Трёхмерное зрениеФундаментальная матрица кодирует эпиполярную геометрию в пикселях, существенная — в калиброванных лучах. Из второй извлекается взаимное положение камер.
Triangulation90%
Триангуляция · Трёхмерное зрениеЗная положение двух камер и пару соответствующих пикселей, восстанавливаем точку сцены: два луча в пространстве должны пересечься.
Bundle Adjustment90%
Уточнение связки · Трёхмерное зрениеСовместная нелинейная оптимизация всех камер и всех точек по одному критерию — суммарной ошибке репроекции. Шаг, который превращает грубую реконструкцию в точную.
Pose and Keypoints90%
Ключевые точки и поза · Компьютерное зрениеОпределение положения суставов человека или характерных точек объекта — база для спортивной аналитики, эргономики и контроля процессов.
Neural Radiance Fields85%
Нейронные поля яркости · Трёхмерное зрениеСцена задаётся не сеткой и не точками, а нейросетью: по координате и направлению взгляда она возвращает цвет и плотность. Картинка получается объёмным рендерингом вдоль луча.
3D Gaussian Splatting85%
Гауссовы сплаты · Трёхмерное зрениеСцена — это миллионы трёхмерных гауссиан с цветом и прозрачностью. Их проекция на экран считается напрямую, поэтому рендеринг идёт в реальном времени.
Rendering85%
Рендеринг · Трёхмерное зрениеОбратная зрению задача: по описанию сцены получить изображение. Понимание рендеринга нужно, чтобы обучать модели через сравнение отрисованного с настоящим.
Parametric Body Models85%
Параметрические модели тела · Трёхмерное зрениеТело человека описывается десятком чисел формы и позой суставов. Модель превращает их в трёхмерную сетку — это резко сужает пространство поиска при восстановлении по фото.
Diffusion85%
Диффузия · Генеративный ИИИтеративное расшумление — текущий стандарт генерации изображений, видео и аудио.
Всё, что названо в описании, разобрано здесь же или в соседней теме — переходы под каждым определением.
Соответствия
Пары точек на разных снимках, отвечающие одному месту сцены. Вход всего .
Разбор ниже: Пайплайн целикомИнкрементальный SfM
Кадры добавляются по одному, реконструкция растёт. Надёжно, но медленно.
Разбор ниже: Инкрементальный подходГлобальный SfM
Все позы находятся сразу из относительных поворотов. Быстро, но хрупко к выбросам.
Разбор ниже: Глобальный подходНеопределённость масштаба
Реконструкция верна с точностью до множителя: размер сцены из снимков не следует.
Разбор ниже: Неопределённость масштабаГлава «Трёхмерное зрение» последний раз правилась . Нашли ошибку — напишите.