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

