Структура из движения (SfM): как перекрывающиеся снимки становятся 3D
Структура из движения (SfM, structure from motion) — первая половина фотограмметрии. По набору перекрывающихся снимков, сделанных из разных положений, без каких-либо записей о том, где стояла камера, она восстанавливает положение каждой камеры и разреженный набор 3D-точек сцены. Всё, что идёт дальше в картографической цепочке — плотное облако, поверхность, ортофотоплан, — строится на этом результате, поэтому качество шага SfM задаёт потолок для остального.
STREAM Capture находится в разработке и ещё не выпущен. После выхода он будет поставляться в одной загрузке с родственной программой STREAM Terrain; сейчас загрузка содержит STREAM Terrain.
Что означает структура из движения
Название говорит о том, что происходит. Структура — это 3D-форма сцены; движение — это перемещение камеры между снимками. Сдвиньте голову вбок: близкие предметы смещаются на фоне сильнее далёких; это смещение, называемое параллаксом, несёт глубину. SfM измеряет, как тысячи точек смещаются между снимками, и по ним обратным ходом находит 3D-положения, которые это объясняют.
Прежняя фотограмметрия требовала до начала работы камер с известной калибровкой и измеренных положений. SfM снимает это требование: положения камер, объектив и 3D-точки определяются вместе, только по снимкам. Поэтому она работает с обычной камерой дрона и с неупорядоченной папкой снимков, а необработанный результат имеет произвольные масштаб и ориентацию, пока положения камер или наземное обоснование не привяжут его к системе координат.
Шаги цепочки SfM
Программа находит характерные точки на каждом снимке, узнаёт те же точки на соседних снимках, отбрасывает соответствия, которые не могут принадлежать одной жёсткой сцене, а затем наращивает сеть камер от хорошо связанной начальной пары. Каждая точка, видимая на нескольких снимках, триангулируется, а заключительное уравнивание уточняет всё сразу.
| Этап | Что происходит | Что обычно идёт не так |
|---|---|---|
| Поиск признаков | На каждом снимке находятся характерные точки и описываются, чтобы их можно было узнать на других снимках | Слишком мало текстуры: спокойная вода, свежий снег, размытые снимки |
| Сопоставление | Описания сравниваются между перекрывающимися снимками, чтобы найти одну и ту же точку дважды | Повторяющаяся текстура, например черепица или ряды посевов, даёт ложные соответствия |
| Геометрическая проверка | Соответствия, не подходящие к одной жёсткой сцене, отбрасываются | Движущиеся объекты или сильный параллакс на крутом рельефе |
| Начальная реконструкция | Хорошо связанная пара снимков даёт первые камеры и точки; к ним добавляются остальные снимки | Слабая сеть снимков: группы снимков, которые так и не связываются с остальными |
| Триангуляция | Каждая точка, видимая на нескольких снимках, помещается в 3D там, где сходятся лучи визирования | Снимки, сделанные почти из одного места, дают неточную глубину |
| Уравнивание связок | Камеры, параметры объектива и точки подгоняются вместе, чтобы согласоваться с каждым измерением | Неподходящая модель объектива или неверное начальное фокусное расстояние |
Уравнивание связок: откуда берутся цифры
Уравнивание связок — последний и самый важный шаг. Оно двигает камеры, параметры объектива и 3D-точки вместе так, чтобы сумма квадратов ошибок перепроецирования была как можно меньше. Ошибка перепроецирования в пикселях, которую оно сообщает, измеряет, насколько снимки и найденная модель согласуются между собой; как её читать, объясняет наша статья об ошибке перепроецирования.
Поскольку уравнивание работает только с измерениями на изображениях, у результата SfM нет реального масштаба, положения и севера, пока их что-то не задаст: положения камер от дрона с RTK или PPK, опорные точки или то и другое. Насколько готовая карта садится на местность — отдельный вопрос, ответ на который дают независимые контрольные точки.
SfM, фотограмметрия и SLAM
SfM — один из этапов фотограмметрии, а не её синоним. Фотограмметрия продолжается от результата SfM плотной оценкой глубины, построением поверхностей, ортотрансформированием и проверкой точности по независимым точкам. Поэтому программа SfM — это часть выравнивания в программе фотограмметрии.
SfM — это и не SLAM. SLAM работает в реальном времени на упорядоченном потоке изображений или данных датчиков, обычно на движущемся роботе, и жертвует частью точности ради скорости. SfM работает офлайн на неупорядоченном наборе снимков и может оптимизировать всё глобально, что подходит для картографирования, где точность важнее скорости.
Что нужно SfM и где он даёт сбой
SfM нужны перекрытие, резкие снимки и видимая текстура: каждая точка местности должна быть видна на нескольких снимках из разных положений, а программа должна отличать одно место от другого. Для начала нужно хотя бы три перекрывающихся снимка, а для настоящего объекта — намного больше. Он плохо справляется со спокойной водой и свежим снегом, с повторяющейся текстурой, с тем, что движется между снимками, и с камерами со скользящим затвором, которые снимают сцену построчно, пока дрон движется.
В STREAM Capture это этап Выравнивание. Он извлекает и сопоставляет признаки SIFT на GPU, определяет камеры и объектив и записывает положения камер, разреженное облако и ошибку перепроецирования в полном разрешении. Положения, прочитанные из снимков, служат априори, слабая сеть снимков называется в отчёте, а не скрывается, а самокалибровка объектива сообщается с её неопределённостью.
Частые вопросы
Что такое структура из движения (SfM)?
Метод, который восстанавливает положение каждой камеры и разреженный набор 3D-точек только по перекрывающимся снимкам, используя то, как точки смещаются между снимками при движении камеры. Это этап выравнивания в фотограмметрии.
Как работает структура из движения?
Она находит характерные точки на каждом снимке, сопоставляет их между снимками, убирает ложные соответствия, строит сеть камер от хорошо связанной пары, триангулирует точки и уточняет камеры, объектив и точки вместе уравниванием связок.
Чем SfM отличается от фотограмметрии?
SfM — первый этап: он даёт положения камер и разреженный набор точек. Фотограмметрия охватывает всю цепочку и добавляет плотную глубину, поверхности, ортофотопланы и проверку точности по независимым точкам.
Чем SfM отличается от SLAM?
SLAM работает в реальном времени на упорядоченном потоке изображений или данных датчиков, обычно на движущемся роботе. SfM работает офлайн на неупорядоченном наборе снимков и оптимизирует всё глобально, что подходит для картографирования.
Нужны ли SfM опорные точки?
Для построения модели — нет: SfM работает только по снимкам, но масштаб и положение результата произвольны. Положения камер от дрона с RTK или PPK, опорные точки или то и другое привязывают его к местности, а независимые контрольные точки измеряют, насколько хорошо.
Почему моё выравнивание SfM даёт сбой или оставляет камеры вне модели?
Обычно из-за малого перекрытия, размытых снимков, повторяющихся или бесхарактерных поверхностей вроде спокойной воды либо из-за того, что что-то движется между снимками. После обработки посмотрите карту перекрытия и предупреждение о слабой сети и добавьте снимки там, где покрытие слабое.
Посмотрите результат этапа Выравнивание: положения камер, разреженное облако и ошибка перепроецирования
STREAM Capture находится в разработке и ещё не выпущен. После выхода он будет поставляться в одной загрузке с родственной программой STREAM Terrain; сейчас загрузка содержит STREAM Terrain.