Фотограмметрия: трехмерная реконструкция
Фотограмметрия позволяет по большому числу (от тысяч до сотен тысяч и больше) фотографий одной и той же неподвижной сцены/объекта получить трехмерную модель.
Примеры применения: сшивка спутниковых снимков, построение карт и ортофотопланов, создание трехмерных моделей городов, сканирование замков/статуй/предметов искусства для сохранения культурного наследия, построение цифровых моделей людей/объектов для игровой/кино-индустрии, различная аналитика (здоровье растительности в сельском хозястве, мониторинг ЛЭП, поиск трещин в мостах/огромных трубах ядерных реакторов).
В рамках курса не будет машинного обучения.
В рамках курса рассказываются и в формате домашних заданий предлагаются для реализации ключевые этапы фотограмметрической обработки: от поиска и сопоставления ключевых точек на фотографиях и определения взаимного расположения этих фотографий (Multiple View Geometry) до построения попиксельных карт глубины фотографий и реконструкции цветной высокодетальной полигональной модели поверхности (Multi-View Stereo).
Пререквизиты:
- умение писать простой C++-код на уровне работы с арифметикой указателей
- понимание асимптотического анализа, базовых алгоритмов, структур данных, что такое производная, операции над векторами и матрицами
- базовые знания многопоточности
- для выполнения заданий рекомендуется Ubuntu или Windows, на MacOS потребуются дополнительные усилия
Содержание:
- Сопоставление ключевых точек фотографий (SIFT, RANSAC).
- Определение калибровочных параметров фотографий (например фокусного расстояния и параметров искажений объектива) и их взаимного расположения (Bundle Adjustment).
- Построение карт глубины для набора фотографий с уже определенным точным положением в пространстве - в каждом пикселе в дополнению к цвету алгоритм определит расстояние до поверхности.
- Построение трехмерной поверхности (состоящей из множества треугольников) по картам глубины.
- Построение цветной спутниковой карты подобной maps.yandex.ru - но при этом чтобы не было видно фасадов стен и не было заметно швов и перепадов яркости в переходах между фотографиями.
- Построение цветной текстуры для трехмерной поверхности (без швов и перепадов яркости).
Вы научитесь
- работать с трехмерным пространством;
- использовать библиотеку ceres-solver для нелинейной оптимизации и автоматического дифференцирования;
- адаптировать алгоритмы на многоядерные процессоры (OpenMP) и видеокарты;
- адаптировать алгоритмы на неограниченно большие датасеты (out-of-core - т.е. ограничить константой используемый объем RAM).
Занятия
25 лекцийЛекция 1
Введение

Введение
Введение
- Что такое фотограмметрия
- Основные шаги пайплайна
- Применения фотограмметрии в индустрии, сохранении культурного наследия
- Обзор курса
Лекция 2
Детектор SIFT

Детектор SIFT
Детектор SIFT
- Локальные ключевые точки и дескрипторы
- Требования к инвариантности ключевых точек и дескрипторов к преобразованиям изображений
- Разбор деталей реализации алгоритма SIFT
Лекция 3
Сопоставление ключевых точек, оптимизации по скорости

Сопоставление ключевых точек, оптимизации по скорости
Сопоставление ключевых точек, оптимизации по скорости
- Оптимизации скорости подсчета расстояния между парой дескрипторов
- SIFT: Сокращение размерности, бинаризация
- Бинарные дескрипторы
- Оптимизации поиска ближайших соседей между парой кадров
- Hardware оптимизации на GPU
- Approximate Nearest Neighbors, Flann, проклятие размерности
- Оптимизации количества пар сопоставляемых кадров
- Преселекции по порядку кадров, по GPS привязке, по грубым матчам
Лекция 4
Сопоставление ключевых точек, оптимизации по качеству

Сопоставление ключевых точек, оптимизации по качеству
Сопоставление ключевых точек, оптимизации по качеству
- Виды ошибочных сопоставлений, шумы и честные false positives
- Ratio test: фильтрация false positives
- Left-right check, cluster filtering
- Фильтрация очень шумных матчей с помощью GMS matcher
Лекция 5
Learned дескрипторы и матчеры

Learned дескрипторы и матчеры
Learned дескрипторы и матчеры
- Сложные примеры матчинга
- История learned дескрипторов, LIFT, HyNet, Superpoint, ALIKED
- Learned матчеры, SuperGlue, LightGlue
- Learned sfm: Mast3r, DepthAnything3
Лекция 6
Однородные координаты, гомография, панорама

Однородные координаты, гомография, панорама
Однородные координаты, гомография, панорама
- Однородные координаты
- Поиск гомографии по матчам
- Склейка фотографий в панораму по гомографии
Лекция 7
Модели камеры

Модели камеры
Модели камеры
- Pinhole camera, Brown distortion model
- Fisheye & spherical cameras
- Rolling shutter
Лекция 8
Structure from Motion

Structure from Motion
Structure from Motion
- Эпиполярная геометрия
- Фундаментальная матрица
- Триангуляция, резекция
Лекция 9

Лекция 10

Лекция 11

Лекция 12

Лекция 13

Лекция 14

Лекция 15

Лекция 16

Лекция 17

Лекция 18

Лекция 19

Лекция 20

Лекция 21

Лекция 22

Лекция 23

Лекция 24

Лекция 25
