среда, 30 апреля 2014 г.

Python Photogrammetry Toolbox: начало...

Пойду от простого к сложному, по этому начну с PPT.
Скачать его (помимо других вкусняшек) можно с сайта итальянских археолого-маньяков.

Там же выложены инструкции по тому, как установить пакет на разные платформы.. У меня Windows 7  по этому буду вести рассказ пока что в этом контексте..


  • Скачиваем и устанавливаем Python 2.6 (всё по умолчанию)
  • Скачиваем и устанавливаем PIL 1.1.7  (всё по умолчанию)
  • Скачиваем и устанавливаем PyQt-Py2.6-x86-gpl-xxx  (всё по умолчанию)
  • Скачиваем Python Photogrammetry Toolbox и разархивируем (у меня это будет папка: d:\Research\Photogrammetry\PPT\)
  • Скачиваем  Python Photogrammetry Toolbox GUI, копируем содержимое в папку : ../osm-bundler/osm-bundlerWin32/  .  Должно вылезти окно с предложением перезаписать файлы - соглашаемся. Если окно не вылезло - значит что то не так делаете.
  • Запускаем файл: osm-bundler/osm-bundlerWin32/ppt_gui_start.bat
Должно появиться два окна,  одно - консоль, второе - собственно интерфейс программы. :

Затем скачиваем вот этот архив с фотографиями и смотрим видео скринкаст демонстрирующий последовательность дальнейших действий..
Там титры на английском..  Я тут напишу по русски эти шаги:

1) В интерфейсе программы нажимаем кнопку "Select photos path" и указываем путь к папке с фотографиями объекта геометрию которого планируем воссоздать в 3D..  В моем случае это папка : d:\Research\Photogrammetry\PPT\ExamplesPhoto\topoi_loewen\


2) В поле "Select feature extractor" выбираем алгоритм автоматического поиска общих точек на фотографиях.. Можно выбрать между "siftlowe" и "siftvlfeat" . Первый - это алгоритм, выложенный только для частных исследовательских целей университетом University of British Columbia, что бы его использовать в коммерческих целях, необходимо обратиться в университет за лицензией. Второй вариант -  "siftvlfeat", распространяется по GPL лицензии и его можно использовать как душе угодно без выпрашивания всяких лицензий.    По умолчанию стоит "siftvlfeat" - его и оставляем.

ПС: к стати, если интересно что такое SIFT, то милости просим: SIFT

3) (это опциональный шаг) Выбираем предварительный скейл-фактор фотографий. Чем меньше разрешение исходных фото - тем быстрее будут происходить вычисления.. но в тоже время - будет хуже качество. 1 - это 100% размер исходой фотографии, 0.5 - это 50%, 0.25 - это 25%.  Я выбираю 0.5


4) Жмем кнопку "Run" что бы начать процесс обработки. За процессом можно наблюдать в окне консоли.

... процесс начался.. :
Первое на что обращаю внимание - программа говорит что не может найти информации о фокальном расстоянии объектива, на который были сняты данные фотографии.. А так же говорит что не может найти в своей базе данных информацию о фотоаппарате. И тут же пишет название фотоаппарата : Nikon D70.  (от куда программа это узнала? - из EXIF метаданных, которые имеются во всех JPG файлах и по умолчанию туда записывается много всего интересного... но это отдельная история)
Тем не менее программа пытается делать свое дело.. Однако я обязательно сделаю ещё дин проход, после того, как найду в интернете данные об этом фотоаппарате и добавлю их в базу данных PPT..
Спустя минут 10 на моем ноутбуке процесс успешно завершился и открылась папочка с кучей файлов внутри.. :
И, как сказано на видео, шаги из которого я повторяю - в папке "bundle" находится результат работы программы..  вот так выглядит моя папка бандл :
Так, первый промежуточный этап завершен.. смотрим видео и переходим на второй этап..
Предварительно нужно запомнить путь к созданной программой папке , в моем случае он такой: 
C:\Users\Notebukkoro\AppData\Local\Temp\osm-bundler-qatioi\

5) В окне программы переходим во вкладку "2. Run CMVS/PMVS" И там нажимаем кнопку "Select Bundler Output Path" и указываем на папку , созданную на прошлом этапе.

6) В поле "Number of photos in each cluster" указываем сколько фотографий будет использовать алгоритм для создания облака точек в пространстве. Так, в случае если всего фотографий было 28, и в этом поле поставить число 10, то в результате будет создано 3 файла с облаком точек (PLY-файлы). Чем больше число, тем мощнее требуется процессор для вычислений.. По этому если процесс занимает подозрительно долгое время - можно его прервать и начать второй этап заного, но указав в этом поле число поменьше.  Минус большого количества PLY файлов на выходе в том, что их придется потом все равно объединять в один общий файл облака точек. Я оставлю как и в видео - 20.  

7) Нажимаем кнопку "Run"..

У меня выскочила ошибка, ругающаяся на RadialUndistort :
Попробую перезагрузить компьютер.. есть подозрения кое какие..
И так! к счастью после перезагрузке компа все заработало! и процесс пошел! Процессор загружен на 100% :
Процесс занял 4 минуты примерно.. Как и показано в видео, в указанной нами папке создалась новая папка "pmvs".. вот :
В этой папке есть вложенная папка "models" а в ней уже лежит наш долгожданный файлик с облаком точек, которые удалось извлечь из исходных фотографий..
У меня получился вот такой результат :
Что бы увидеть визуализацию этих точек (PLY формат) - можно воспользоваться например программой MeshLab   Но я еще позже поподробнее остановлюсь на этом процессе.
Что же касаемо результата - то я мягко говоря не доволен им :)   Передо мной стоит задача научиться получать копию объекта с точностью, которая мне потребуется.. в плоть до микрон.. если надо..  Здесь же я пока не вижу этого потенциала :)  Так как опций для настроек параметров особо нету.. (минус простых, полностью автоматических процессов)   Единственное на что могу надеятся это - 1) программа не обнаружила записей о фотокамере в своей базе данных.. и 2) я поставил половинное разрешение для обработки ..
И так, в следующем посте я попробую повторить процедуру , при 100% разрешении и с наличием информации о камере. (заодно расскажу как ее добавлять)

Комментариев нет:

Отправить комментарий