Такс. По поводу SIFT`а. Сифт - это лишь алгоритм, который находит “особые” точки на изображении. Помимо него есть еще куча других алгоритмов. Мне больше всего понравился SURF - он во-первых более “свободный”, да еще и более быстрый. Только чтобы его с бандлером подружить, придется потрудиться…
Восстановление 3Д по точкам. Это возможно! Patch-based Multi-view Stereo Software. В пакете с бандлером идет программка Bundle2PMVS, которая умеет готовить файлики для этого PMVS. На сайте есть две версии - первая и вторая. Вторую я так и не осилил, а первая же, оказалась довольно послушной и даже выходило что-то, отдаленное напоминающее оригинальный предмет…
С нетерпением ждем вестей с полей
И скринов.
- Весьма пока далеки,
- РАВ как раз противопоказан, только jpg
- Снимать кадры надо не просто со смещением (и наложением краёв 50%) а с разных точек, это самое главное.
А то если снимать с одной точки, получится классическая “плоская” панорама – программа (как Бандлер, так и Фотосинт) найдут на “общей” картинке положения фоток, но объёмной картинки совершенно не получится. Это всё равно, что зафиксировать голову и смотреть одним глазом – стерео не будет, ни человек, ни программа объёма не увидят и никаких “форм” не получится. (человек “знает” объекты и одним глазом сможет прикинуть перспективу известных объектов и расстояние до них, но мы это сейчас в расчёт не берём, конечно же).
Технология пока зачаточна, в общем. Не вообще, а в этой теме, и в нашем применении.
ps. Пощупал АкМеРов pmvs… не осилил)) черепушка делается, на этом всё. Как калибровать камеру так и не понял. И вообще, какая программа за что отвечает. В общем, жду АкМеРа с подробнейшим howto)) Но продукция получается более многообещающая и более шустрая, судя по пощупу.
Переписаны скрипты на Питоне. Подробности на OSM-вики: http://wiki.openstreetmap.org/wiki/Photogrammetry
Большого прорыва пока нет.
Основные изменения:
- Используется по умолчанию реализация алгоритма SIFT с открытым кодом. Закрытая версия от David Lowe также может использоваться
- Нет больше проблем с пробелами в пути к фотографиям
- Копии фотографий автоматически приводятся к меньшему размеру, если исходный размер фотографии превышает некоторый порог (по умолчанию 1200 пикселей)
Напомню, вертикальное направление для восстановленной 3D-сцены не восстанавливается. Прошу высказать идеи, как можно восстановить вертикальное направление. 3D-сцена в нашем случае будет в большинстве ситуаций состоять из зданий.
Пощупал я bundler, но что-то вменяемых результатов не добился (наверное я не умею его готовить). Вообще, думаю, что применение если он и найдёт какое для картографирования, то оно будет весьма ограниченным. Главный недостаток данного метода тот же, что и достоинство - это его полный автоматизм. Похожие точки на снимках ищутся автоматическим алгоритмом (SIFT там, SURF, неважно), который в реальности работает не очень хорошо, и главное - совершенно не делает различия между точками на интересующем нас объекте и всякими ненужными (кусты, облака в небе и т.д.) У нас же большинство зданий так или иначе стоит за деревьями - в итоге, получается, с разных ракурсов одна и та же часть здания становится по-разному закрыта ветками и общих точек алгоритм там не найдёт (в лучшем случае найдёт общие точки на загораживающем дереве).
Вот если б можно было вручную отметить точки, рёбра и т.д. на разных фото, а затем уже дать программе всё рассчитать - думаю результат был бы более вменяем. Увы, как я понимаю, подобных программ сейчас нет. (на Canoma я поглядел, но это не совсем то - там предлагается крутить и приляпывать друг к дружке вручную 3D-примитивы, пока оно не станет похоже на исходные фото - т.е. по сути практически полностью ручная работа)
Есть такая прога ptGui - для склейки панорам - ищет точки автоматом потом дает их подправить (на самом деле это обертка вокруг нескольких программулин) потом клеит панораму. Дак вот есть подозрение что ищет она точки точно так же как и бундлер, можно попытаться использовать ее как редактор опорных точек.
P.S. Только я не проверял в каких форматах хранятся найденные для изображений общие точки в бандлере и птгуе так что с уверенность сказать что удастся из птГуи править точки бандлера не могу.
Еще есть Hugin, формат там тривиальный текстовый.
Поясню, какие этапы проходит Бундлер при обработке набора фотографий.
-
Нахождение точек. Сейчас это автоматический алгоритм SIFT (вероятно добавится также SURF). Точки можно задать и вручную.
-
Нахождение соответствий между точками и фотографиями, т.е. точка A на фотографии P1.jpg соответствует точке B на фотографии P2.jpg. Сейчас используется автоматический метод, созданный разработчиком Бундлера. Однако соответствие точек можно указать и вручную. Именно от этого этапа зависит, насколько в итоге качественно будет восстановлена 3D-сцена.
-
Вычисление положений точек и камер в пространстве по результатам этапа 2). Если на этот этап подать качественно сопоставленные точки, то получится хорошо восстановленная 3D сцена с правильно определенными положениями камер.
Итак, успех всей работы Бундлера кроется в этапе 2). Сейчас определяемся, в каком направлении двигаться дальше: или реализовать инструмент для ручного сопоставления набора точек (примерно так, как это делается в Hugin), или попытаться улучшить автоматическое сопоставление.
Вот я к тому, что если бандлер найденные на этапе 1 как то сохраняет (может во все тот же текстовый файлик) то можно прикрутить (Hugin или ptGui для ручного редактирования точек) я не пользовался бандлером, просто я такпонял что высказавшимся неудобно ставить соответсвие точек в бандлере вручную.
Да, используемые в Бундлере программы по нахождению точек на фотографии сохраняют результаты в текстовом файле с простым форматом. Реализация алгоритма SIFT с открытым кодом из библиотеки VLFeat дает 10-20 тысяч точек. Реализация алгоритма SIFT с закрытым кодом от David Lowe дает около 5 тысяч точек.
Если возможность загрузить в Hugin файл с точками для проставления ручного соответствия точек между фотографиями?
Да, есть, надо просто текстовый файл проекта создать там перечислены фоты, точки ну и всякая инфа про снимки, но она на проставление точек не влияет.
хм, интересно, а можно эту штуку как нибудь заточить под опознавание рельефа гор? можно ли будет ее отучить цепляться за изменяющийся в течении сезона снежный покров?
Если есть набор перекрывающихся фоток гор, должна сработать. Со снегом сложнее. В снегу ей будет не за что зацепиться. Должны быть одинаковые элементы на фотках
вот была книжка такая http://www.uic.unn.ru/~egyb/horn.html там немного похожие вопросы рассматривались.
Проверить можно так: запускаем ГугльЁрс, поднимаем местность в 3Д, облетаем несложный хребет как на вертолете, делаем фоток 20-30, не меньше. Заправляем их в бандлер, смотрим на результат. Ругаемся и понимаем, что реально снять много фот, в одно время, да что бы они подошли бандлеру почти не реально без вертолета.
А зачем опознавание рельефа гор, когда в открутом доступе есть данные по рельефу с весьма неплохой точностью с шагом в десятки метров?
У SRTM разрешение около 100м. Не всем может хватить… А на севере Уральских гор SRTM вообще нет и там у открытых источников разрешение ещё ниже…