Трёхмерное зрение

Structure from Motion

Восстановление структуры по движению

актуальноТекущий рабочий стандарт

Направления: Прикладные направления · Трёхмерное зрение

По набору неупорядоченных снимков одновременно находим положения камер и трёхмерные точки сцены. Классическая основа и вход почти любого 3D-пайплайна.

Ключевые тезисы

  • Инкрементальный наращивает реконструкцию по кадру, глобальный решает всё сразу и быстрее, но хрупче.
  • : → соответствия → относительные позы → → уточнение.
  • — стандартная реализация; её выход становится входом для и .

Какую задачу решает

На входе — набор фотографий, снятых кем угодно и в каком угодно порядке. Неизвестно ни где стояла камера, ни какая она. На выходе нужны обе вещи сразу: положения всех камер и трёхмерные координаты точек сцены. Задача выглядит замкнутой на себя, и это правда: зная камеры, легко найти точки, зная точки — легко найти камеры.

Разрывают круг постепенным наращиванием. Берут пару снимков с надёжными соответствиями, восстанавливают их относительное положение из , триангулируют первые точки. Дальше добавляют по кадру: новая камера находится по уже известным точкам, её новые наблюдения дают новые точки, и всё вместе периодически уточняется.

Результат определён с точностью до масштаба: снимок игрушечного домика и настоящего дома неразличимы. Масштаб приходит извне — от известного размера предмета в кадре, от GPS или от второй камеры с известной базой.

Почему съёмка по кругу лучше съёмки веером

Чтобы снять предмет на стол, естественно встать в одну точку и поводить камерой из стороны в сторону. Для это худший вариант: база между кадрами почти нулевая, лучи от соседних камер идут почти параллельно, и вырождается — глубина определяется с огромной погрешностью. Обойдите предмет по кругу, снимая через каждые пятнадцать-двадцать градусов, и та же сцена восстановится уверенно: лучи пересекаются под большими углами, а каждая точка видна с многих сторон. Правило простое — двигаться должна камера, а не только её направление.

Подробный разбор

5 подтем — объяснения, формулы, примеры и интерактивные графики.

  1. Признаки: на каждом снимке находятся точки интереса и считаются .
  2. Сопоставление: пары снимков сравниваются, находятся кандидаты в соответствия.
  3. Геометрическая проверка: RANSAC с фундаментальной выбрасывает ложные пары.
  4. Инициализация: выбирается пара с хорошей базой, из неё восстанавливается первая пара камер и первые точки.
  5. Наращивание: новая камера находится по видимым известным точкам, её наблюдения дают новые точки.
  6. Уточнение: периодически пересчитывает всё вместе.
На практике

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

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

  • Плюс: устойчивость к выбросам и понятная диагностика — видно, на каком кадре всё пошло не так.
  • Минус: сложность растёт быстрее линейной, тысяча снимков считается часами.
  • Минус: дрейф — маленькие ошибки накапливаются, и длинный проход по коридору «уползает» в сторону.

лечится замыканием цикла: если система узнаёт место, где уже была, добавляется связь между далёкими по времени кадрами, и глобальное уточнение распределяет накопленную ошибку.

Вместо наращивания строится : вершины — камеры, рёбра — относительные повороты и направления сдвига из попарной геометрии. Сначала решается задача усреднения поворотов, потом — задача восстановления положений, и лишь затем триангулируются точки.

ИнкрементальныйГлобальный
скоростьмедленнобыстро
устойчивость к выбросамвысокаянизкая
накапливаетсянет по построению
типичное применениепроизвольные наборы фотоупорядоченные съёмки, дроны
На практике

На практике встречается и гибрид: глобальная инициализация поворотов, затем инкрементальное добавление и общее уточнение. по умолчанию работает инкрементально — именно из-за устойчивости.

Увеличьте всю сцену вдвое и вдвое отодвиньте камеры — все снимки останутся идентичными. Значит, по одним изображениям масштаб не определим в принципе: реконструкция верна с точностью до положительного множителя.

  • Положить в кадр линейку или предмет известного размера.
  • Взять 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/
Минимальный прогон COLMAP
На практике

Если снимков больше пары сотен, 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%

Диффузия · Генеративный ИИ

Итеративное расшумление — текущий стандарт генерации изображений, видео и аудио.

Следующий шагДальше по связи: Local Features and MatchingЧтобы связать два снимка, нужно найти на них одни и те же точки. Детектор находит выделяющиеся места, дескриптор описывает окрестность так, чтобы описание пережило поворот и смену масштаба.Перейти →

Глава «Трёхмерное зрение» последний раз правилась . Нашли ошибку — напишите.