Приветствую, Хабр. Это моя первая попытка перевода статьи. Надеюсь, она будет полезна не только жителям хабра, но и археологам, на которых ориентирован оригинал статьи.
Когда я объясняю людям, что фотограмметрия аналогична процессу 3D-сканирования с фотографиями, мне всегда не доверяют, так как это кажется слишком фантастическим, чтобы быть правдой. Только представьте себе, сделать несколько снимков объекта, отправить их в алгоритм и получить текстурированную 3D модель. Вау!
После представления модели, второй вопрос, который задают – вопрос точности. Какова точность 3D-сканирования по фото? Ответ: субмиллиметровый диапазон. И снова я удивлен выражением недоверия. К счастью, наша команда написала научную статью об эксперименте, который показал среднее отклонение 0,78 мм, то есть меньше одного миллиметра по сравнению со сканированной 3D моделью, сделанной с помощью лазерного сканера.
Так же, как на рынке лазерных сканеров, в фотограмметрии есть много различных опций ПО для проверки. Они варьируются от собственных и закрытых решений, до открытых и бесплатных. И точно, среди такого рода программ и решений, приходит третий вопрос, до сих пор остающийся без ответа, по крайней мере официально: какое программное обеспечение фотограмметрии является лучшим?
На этот вопрос сложно ответить, потому что ответ во многом зависит от ситуации. Но думая об этом, среди многих подходов, которые я взял в течение долгого времени, я решил ответить так, чтобы дать простой и объёмный ответ.
Череп лорда Сипана
В июле 2016 года я поехал в Ламбаек, Перу, где я встретился лицом к лицу с черепом лорда Сипана. Анализируя его, я понял, что можно было бы восстановить его лицо с помощью судебно-медицинской техники реконструкции лица. Череп, однако, был сломан и искажен годами давления, которое он перенес в своей могиле, найденной полной в 1987, одной из больших археологических экспедиций во главе с доктором Вальтером Альва.
Чтобы восстановить череп, я сделал 120 фотографий на смартфон ASUS Zenphone 2 и с этими фотографиями, я возобновил работы по реконструкции. Параллельно этому процессу, профессиональный фотограф Raul Martin из отдела маркетинга Inca University Garcilaso de la Vega (спонсор моей поездки) сделал 96 фотографий на камеру Canon EOS 60D. Из них я выбрал 46 изображений, чтобы продолжить эксперимент.
Специалист Министерства культуры Перу, начинает процесс оцифровки черепа (в центре)
Спустя день после фотографического обследование, перуанское Министерство культуры послало специалистов в области лазерного сканирования, для сканирования черепа лорда Сипана, с помощью оборудования Leica ScanStation C10. Окончательное облако точек было отправлено через 15 дней, то есть тогда, когда я получил данные от лазерного сканера, все модели, полученные с помощью фотограмметрии были готовы.
Нам пришлось ждать всё это время, так как модель, полученная с помощью оборудования является золотым стандартом, то есть, все сетки, полученные с помощью фотограмметрии будут сопоставляться, одна за другой, с ней.
Полное облако точек, импортированное в MeshLab после преобразования сделаного в CloudCompare
Облако точек в результате сканирования было в .LAS и .E57 файлах… и я никогда не слышал о них. Я должен был сделать много исследований, чтобы выяснить, как открыть их на Linux с помощью бесплатного программного обеспечения. Решено было сделать это в CloudCompare, который предлагает возможность импорта файлов .E57. Затем я экспортировал модель как .ply, чтобы иметь возможность открыть в MeshLah и реконструировать 3D-сетку с помощью алгоритма Пуассона (Poisson algorithm).
3D-сетка реконструированы из облака точек. Цвет вершины (выше) и поверхность только с одним цветом (ниже).
Как было отмечено выше, челюсть и поверхность стола, где были размещены части были также отсканированы. Часть, связанная с черепом, была изолирована и убрала для эксперимента, который будет выполнен. Я не буду иметь дело с этими деталями здесь, так как объем отличается. Я уже писал другие материалы, объясняющие, как удалить несущественные части облака точек / сетки.
Для сканирования с помощью фотограмметрии, были выбраны системы:
1) OpenMVG (Open Multiple View Geometry library) + OpenMVS (Open Multi-View Stereo reconstruction library): Разряженное облако точек рассчитывается в OpenMVG и плотное облако точек в OpenMVS.
2) OpenMVG + PMVS (Patch-based Multi-view Stereo Software): Разряженное облако точек рассчитывается в OpenMVG, а затем, плотное облако точек с помощью PMVS.
3) MVE (Multi-View Environment): Полная система фотограмметрии.
4) Agisoft Photoscan: Полная и закрытая система фотограмметрии.
5) Autodesk Recap 360: Полная система онлайн фотограмметрии.
6) Autodesk 123D Catch: Полная система онлайн фотограмметрии.
7) РРТ-GUI (Python Photogrammetry Toolbox с графическим интерфейсом пользователя): Разряженное облако точек генерируется Bundler, а позже PMVS создает плотное облако.
Выше у нас есть таблица, содержащая важные аспекты каждой из систем. В целом по крайней мере по-видимому, нет ни одной системы, которая выделяется намного больше, чем другие.
Генерация разряженного облака + генерация плотного облака + 3D сетка + текстуры, немного времени, чтобы загрузить фотографии и 3D сетки (в случаях с Recap 360 и 123D Catch).
Выравнивание на основе общих точек
Выровненные черепа
Все сетки были импортированы в Blender и совмещены с лазерным сканированием.
Выше мы видим, что все сетки рядом. Мы можем видеть, что некоторые поверхности настолько плотны, что мы замечаем только края, как и в случае с 3D-сканированием и OpenMVG + PMVS. Изначально очень важная информация… текстура в сканированных сетках, как правило, обманывает нас по отношению к качеству сканирования, так что, в этом эксперименте я решил игнорировать результаты текстурирования и сосредоточиться на 3D-поверхности. Поэтому, я экспортировал все оригинальные модели в формат .stl, который, как известно, не имеет никакой информации о текстуре.
Присмотревшись, мы увидим, что результат согласуется с менее плотным результатом подразделений в сетке. Конечная цель сканирования, по крайней мере, в моей работе – получить сетку, которая согласуется с исходным объектом. Если эта сетка упрощается, так как она находится в гармонии с реальным объемным аспектом, это даже лучше, потому что, когда 3D-сетка имеет меньше граней, то она быстрее будет обработана при выпуске.
Если мы посмотрим на размеры файлов (.stl экспортированный без текстуры), что является хорошим показателем сравнения, мы увидим, что чистая сетка созданная в OpenMVG + OpenMVS, имеет размер 38.4 MB и Recap 360 всего 5,1 Мб!
После нескольких лет работы с фотограмметрией, я понял, что лучше всего делать, когда мы сталкиваемся с очень плотной сеткой, это упростить сетку, так что мы можем обрабатывать её в режиме реального времени. Трудно сказать, действительно это так или нет, поскольку это запатентованное и закрытое решение, но я полагаю, что Recap 360 и 123D Catch генерируют сложные сетки, но в конце процесса они значительно её упрощают, так что они работают на любом оборудовании (ПК и смартфоны), желательно с поддержкой WebGL (интерактивное 3D в интернет-браузере).
Вскоре мы вернемся к обсуждению этой ситуации, связанной с упрощением сеток, а теперь давайте сравним их.
Как работает сравнение 3D сеток
После того, как все черепа были очищены и приведены в соответствие с золотым стандартом (лазерного сканирования) пришло время сравнить сетки в CloudCompare. Но как работает технология сравнения 3D сеток?
Для иллюстрации я создал некоторые дидактические элементы. Давайте вернемся к ним.
Этот дидактические элемент имеет дело с двумя плоскостями с поверхностями нулевой толщины (это возможно в 3D моделировании), образуя X.
Тогда мы имеем объект А и объект B. В окончательной части обеих сторон концы плоскостей отстоят на миллиметры. Там, где существует пересечение, расстояние, конечно, 0 мм.
При сравнении двух сеток в CloudCompare они получаются пигментированными с цветовым спектром, который идет от синего до красного. На рисунке выше показаны два уже пигментированных плана, но мы должны помнить, что они представляют собой два различных элемента и сравнение производится в двух моментах, один по отношению к другому.
Теперь у нас есть четкое представление о том, как это работает. В основном то, что происходит, заключается в следующем: мы устанавливаем предел расстояния, в данном случае 5 мм. Сетка «из» старается быть пигментирована красным, а та, что «в» имеет тенденцию быть окрашенной синим и то, что находится на пересечении, то есть на той же линии, как правило, пигментировано в зеленый цвет.
Сейчас я объясню подход, примененный в данном эксперименте. Смотрите выше, у нас есть элемент с центральной областью, которая стремится к нулю, а концы установлены на +1 мм и -1 мм. В изображении это не появляется, но элемент, который мы используем для сравнения, это простая плоскость, расположенная в центре сцены, прямо в районе основания 3D колокола, или те, которые «направлены вверх», когда те, которые «смотря вниз».
Как я уже говорил ранее, мы установили предел сравнения. Первоначально он был установлен на уровне +2мм и -2мм. Что делать, если мы изменим этот предел до +1мм и -1мм? Смотрите, что это получилось на рисунке выше, и та часть, которая выходит за пределы границ.
Мы можем удалить части, выходящие за пределы визуализации, чтобы они не мешали нам.
Таким образом, в результате, в сетке имеется только процентная часть структуры
Для тех, кто понимает немного больше 3D моделировании, ясно, что сравнение производится по вершинам, а не граням. Из-за этого, у нас есть зазубренный край.
Сравнение черепов
Было сделано сравнение фотограмметрии с лазерным сканером в пределах +1 мм и -1 мм. Все, что за пределами спектра была стерто.
OpenMVG+OpenMVS
OpenMVG+PMVS
Photoscan
MVE
Recap 360
123D Catch
PPT-GUI
Поставив в сравнении всё рядлм, мы видим, что существует сильная тенденция сведения ошибки к нулю. Все семь систем фотограмметрии эффективно совместились с лазерным сканированием!
Обратимся теперь к вопросу о размере файлов. Одна вещь, которая всегда беспокоила меня в сравнении с участием результатов фотограмметрии был учет полигонов, генерируемых алгоритмом реконструкции сетки. Как я уже говорил выше, это не имеет особого смысла, так как в случае черепа мы можем упростить поверхность и тем не менее она сохраняет информацию, необходимую для работы при проведении антропологического обследования и судебно-медицинской реконструкции лица.
В свете этого, я решил выровнять все файлы, оставляя их совместимы по размеру и полигонами. Чтобы сделать это, я взял за основу меньший размер файла, который генерирует 123D Catch и использовал фильтр MeshLab Quadratic Edge Collapse Detection до 25000. Это сделало 7 STL файлов размером 1,3 МБ каждый.
С помощью этого выравнивания мы имеем справедливое сравнение между системами фотограмметрии.
Выше мы можем визуализировать этапы работы. В Original положены черепа, выровненные изначально. Тогда в Compared мы наблюдаем черепа только областях, представляющих интерес и, наконец, в Decimated мы имеем черепа, выровненные по размеру. Для ничего не подозревающего читателя это, кажется, одно изображение, помещенное рядом.
Когда мы представляем себе сравнение в «твердой» модели, мы понимаем, как все они совместимы. Теперь давайте перейдем к выводам.
Выводы
Наиболее очевидный вывод заключается в том, что все программы, за исключением MVE, показали меньшие определения в сетке, и все системы фотограмметрии имели очень схожие визуальные результаты.
Означает ли это, что MVE уступает другим?
Нет, совсем наоборот. MVE является очень надежной и практичной системой. В другом варианте я представлю его использование в случае изготовления протеза с миллиметровым качеством. В дополнение к этому случаю он был также использован в других проектах, делающих протезирование, а это область, которая требует большой точности, и она была успешной. Кейс был даже опубликован на официальном сайте Darmstadt University, института, который разрабатывает его.
Какая система фотограмметрии является лучшей?
Очень трудно ответить на этот вопрос, потому что многое зависит от пользовательского стиля.
Какая система является лучшей для начинающих?
Несомненно, это Autodesk Recap 360. Это онлайн-платформа, которая может быть доступна из любой операционной системы, которая имеет интернет-браузер с поддержкой WebGL. Я уже опробовал непосредственно на смартфоне, и она работала. На курсах, которые я проводил о фотограмметрии, я использовал это решение все больше и больше, потому что студенты, как правило, понимают процесс гораздо быстрее, чем другие варианты.
Какая система является лучшей для моделирования и анимации для профессионалов?
Я хотел бы указать на Agisoft PhotoScan. Он имеет графический интерфейс, который позволяет, помимо прочего создавать маски в интересующей области для фотограмметрии, а также позволяет ограничить область расчета, что резко сокращает время обработки на машине. Кроме того, она экспортирует в самых разнообразных форматах, предлагая возможность показать, где были камеры во время фотографирования сцены.
Какая система Вам нравится больше всего?
Ну, лично я ценю все в определенных ситуациях. Моя любимая на сегодня смесь это OpenMVG + OpenMVS. Оба являются открытыми и могут быть доступны с помощью командной строки, что позволяет мне контролировать ряд свойств, регулируя процесс сканирования при необходимости, будь то реконструкция лица, черепа или любого другого куска. Хотя мне очень нравится это решение, у него есть некоторые проблемы, такие как не совмещение камер по отношению к моделям, когда редкие облака сцены импортируется в Blender. Чтобы решить эту проблему я использую РРТ-GUI, который генерирует разреженное облако из Bundler и соответствия, то есть выравнивает камеры по отношению к облаку более точно. Еще одной проблемой, связанной с OpenMVG + OpenMVS является то, что он в конечном итоге не создает полное плотное облако, даже если разреженные данные показывают, что все камеры выровнены. Чтобы решить эту проблему я использую PMVS, который, хотя и генерирует менее плотные сетки, чем OpenMVS, он очень надежен и работает практически во всех случаях. Еще одна проблема с вариантами на открытом исходном коде – необходимость компиляции программ. Все работает очень хорошо на моих компьютерах, но, когда я должен передать решения студентам или заинтересованным, это становится большой головной болью. Для конечного пользователя важно иметь программное обеспечение, в котором на одной стороне загружаются изображения, а с другой получается 3D модель и это предлагают запатентованные решения. Кроме того, лицензии полученных моделей понятнее в этих приложениях, и я чувствую себя безопаснее в области профессионального моделирования, чем, например, при использовании шаблонов, генерируемых в PhotoScan. Технически, вы платите за лицензию и можете генерировать шаблоны по своему желанию, используя их в своих работах. Так, что это решение подобно решениям от Autodesk.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Поделиться с друзьями