Как стать автором
Обновить

Комментарии 17

Если снимать не с набора изображений, а с видео, то можно похожие точки можно искать в небольших окрестностях на следующем кадре.
Мозг так и делает. Например плоское изображение вращающегося предмета кажется объемным.
клево, где конечный результат из примера то? Я думал сейчас нам покажут как они из первой гифки мега структуру вытянули.
Гифка — это как раз и есть результат. Вернее его демонстрация — сам результат сохраняется в формате 3ds. Исходные данные — это последовательность обычных кадров (один из них приведён в конце).
спасибо за пост. стоило упомянуть, что подобное аналитическое решение (Tomasi-Kanade factorization) только возможно если предполагать модель с ортографической проекцией, что _далеко не всегда_ верно. именно поэтому и существует bundle adjustment алгоритмы, которые как правило не решают системы уравнений «в лоб», а по возможности используют их разреженную структуру.
Вы дали неправильное определение Structure from motion. Как следует из названия, это создание 3D модели не просто по набору изображений, а по набору изображений, полученных в результате передвижения наблюдателя. Это частный случай более общей задачи Трёхмерной реконструкции (англ. 3D reconstruction). Разница в том, что в частном cлучае можно из входных данных извлечь вектор движения и тем самым улучшить резутьтат итоговой модели. В статье я не нашёл использования этого преимущества.
Правильно — алгоритм основан на оценке движения (только не вектора, а матрицы поворота и вектора). Факт движения важен уже при использовании эпиполярной геометрии (иначе задача вырождается). А дальше параметры движения (положение камер в пространстве) явным образом вычисляется. Так что это «преимущество» использовано на 100%.
Только я бы не стал называть это преимуществом. Это, пожалуй, самый сложный случай трёхмерной реконструкции. Остальные работающие алгоритмы основаны на более сложном оборудовании — используется либо специальное освещение, либо несколько камер, а то и вовсе лазерный сканер.
Факт движения важен уже при использовании эпиполярной геометрии (иначе задача вырождается).

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

Статья в целом написана в стиле «кто знает — тому не интересно, кто не знает — всё равно не поймёт». Да и ценность её непонятна. Нет ни кода, ни результатов (кроме непонятной картинки). Таких статей по запросу «3D reconstruction» найдутся десятки.
Вас смущает отсутствие непрерывного движения камеры или что? Ну назовите разницу между позами камер для пары снимков сцены перемещением, если это так режет вам глаза. А вообще довольно часто Structure from Motion и 3D reconstruction используют как синонимы, это можно считать устоявшимся слэнгом.
Мне кажется вы забыли фактически самый важный этап при 3D реконструкци, а именно Bundle Adjustment, без него облако точек будет довольно шумным. Собственно все крутые методы SfM типа VSFM всю магию творят именно на этапе групповой корректировки, когда из грязного облака точек получается впоне приличная sparse модель искомого объекта.
А по поводу фильтрации соответствий: в прошлом году мы публиковали статью на эту тему, можно найти тут aistconf.org/stuff/aist2013/submissions/aist2013_submission_27.pdf (вероятно в некотором будущем про это будет написано на хабре), результаты получились вполне неплохие, фэйлы происходят только уж при очень больших шумах. За счет описанных там методов можно немного уменьшить число итераций для RANSAC.
Да — по сути это тоже самое. Просто заход с другой стороны. В задаче SfM обычно более интересна трёхмерная структура, а SLAM пришёл из робототехники и там больший упор делается на трекинге камеры. Но, поскольку эти задачи неразделимы, то приходится решать и то, и другое. Главное отличие по сути — SLAM — это алгоритмы реального времени, у меня же время намного хуже реального.
Это с какойт стати они не разделимы? Visual SLAM можно реализовать и без использования SfM.
Можно ли? Я не знаю методов. Собственно само название SLAM предполагает, что эти задачи неразделимы.

Но если вы знаете такие методы — поделитель пожалуйста. Очень было бы инетресно на них посмотреть.
Название ничего не предполагает. SLAM можно даже без камер реализовать, используя одометрию, например, полученную с энкодеров колес и гироскопов/акселерометров.
Что касается Visual SLAM, то смотрите в сторону Байесовского подхода к решению задачи SLAM. Конкретно методы осонованные на Расширенном Фильтре Калмана (тотже EKF-SLAM).
Обычно принято считать, что SLAM не использующий SfM имеет смысл использовать там, где нужна только навигация ивысокая производительность.
Про фильтрацию выше уже написали, добавлю от себя, что самое интересное начинается когда в сцене появляются полупрозрачные объекты и объекты вне зоны резкости объектива, пестрые текстуры, зависимость освещенности от угла разглядывания (отражения в предельном случае), множества мелких объектов типа крон деревьев

Вот там все очень интересно уже, но, правда, 3D уже практически не вытаскивается :). А на простых модельках, да с большим числом кадров, да если не требуется очень высокого качества все достаточно банально.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.