Доступная фотограмметрияИсторияИстория фотограмметрии насчитывает то ли 150 то ли 250 лет в
зависимости от того с какого момента начинается отсчет. В
Википедии точка отсчета зависит от языка. Самая длинная история в
испанском варианте, однако некоторые важные, на мой взгляд моменты
в ней отсутствуют. Поэтому я выбрал реперные точки из всех
доступных источников. Итак, в 1767 году Мориц
Антон Каппллер ( Moritz Anton Cappeller) по двум рисункам
горы Пилатус восстановил ее форму с очень высокой точностью.
Следующей реперной точкой отмечу 1849 год, когда уже появилась
фотография и французский офицер Эме Лосседа (Aimé
Laussedat ) по снимкам фасада Дома инвалидов восстановил его
форму и опубликовал своей работе Метрофотография в 1851 году.
Немецкий архитектор Альбрехт Мейденбауэр (Albrecht
Meydenbauer) опубликовал свой фотограмметрический
метод измерения зданий в 1858 году, он же и дал название
фотограмметрия в статье 1867 года. Следующий ключевой фигурой является Феликс Турнашон (Félix Tournachon),
более известный как Надар,
который в восьмидесятых годах XIX века поднялся на воздушном шаре,
чтобы сфотографировать Париж и многие другие города. Он же
делал снимки со всех сторон от объекта, что позволяет
сегодня получить вполне современную круговую
анимацию. Следующей точкой, которую следует отметить,
является 1896 год, когда Эдуард Гастон Даниель Девиль (Édouard-Gaston
Daniel Deville) изобрел стереопланиграф.
Оптико-механические приборы определяют развитие фотограмметрии
фактически в течение всего XX века. Сначала это так называемая
аналоговая фотограмметрия, потом, когда к оптико-механическим
прибором добавили вычислительные машины, стали называть
аналитической фотограмметрией. На рубеже XXI века появляется
цифровая фотография и, соответственно, цифровая фотограмметрия. Фотограмметрия XIX века сегодня доступна всем,
другой вопрос, что мало кому хватит терпение довести работу до
конечного результата. Фотограмметрия XX века требует наличия
оптико-механических приборов, которые придется искать сегодня уже
в музеях, поэтому о доступности сегодня стоит говорить только для
цифровой фотограмметрии. Цифровая фотограмметрия
|
i5 11400 |
i5 2450m |
Вершины |
|
Meshroom (Default) |
26 с |
19714 |
|
Meshroom (Meshing angleFactor=0, simFactor=0) |
56 с |
65104 |
|
COLMAP+OpenMVS CUDA ON (Automatic reconstruction Medium) |
16 с |
88818 |
|
COLMAP+OpenMVS CUDA ON (Automatic reconstruction High) |
38 с |
156983 |
|
COLMAP+OpenMVS CUDA ON (Automatic reconstruction Extreme) |
50 с |
160160 |
|
COLMAP+OpenMVS CUDA ON |
35 c |
155150 |
|
COLMAP+OpenMVS CUDA OFF |
37 c |
110 c |
155150 |
MicMac C3DC |
12 c |
38 c |
2423 |
MicMac MALT |
50 c |
127 c |
210617 |
Для четырех снимков двенадцать потоков вычисления достаточно,
чтобы использование CUDA не дало существенного выигрыша. При
увеличении числа снимков это становится заметно, как за счет
недостатка параллельных потоков вычисления , так и из за падения
частоты, вызванного перегревом. Длительная 100% загрузка
всех 12 потоков приводит к падению частоты с 4200 МГц до 4000
МГц на i5 11400F при температуре 95 градусов. Медный
радиатор и 2 вентилятора моей системы охлаждения отводят примерно
120 Вт. Со штатным охлаждением на 65 Вт ситуация была бы
существенно хуже. С ноутбуком ожидаемый проигрыш в 4 раза, однако
при малом количестве снимков он чуть меньше, а при большом больше.
В том числе и за счет расхода оперативной памяти, для увеличения
которой приходится подключать файл подкачки, что существенно
замедляет процесс.
При построении моделей бюстов великих ученых с аллеи МГУ Meshroom
и COLMAP+OpenMVS при счете на i5 11400F и GPU NVIDIA
GeForce GTX 1650 дали за разумное время модели, которые после
минимальной ретуши в Blender удалось качественно представить в
интернете и отпечатать на 3D принтере. Обработка программами
COLMAP+OpenMVS CUDA-ON 54 снимков заняла 41 минуту, из
которых 31 минута это счет OpenMVS. Несмотря на то что программа
скомпилирована с (CUDA_ENABLED "Whether to enable CUDA, if
available" OFF ), она использует GPU, и если в
Processing/Feature extraction и Processing/Feature matching/ снять
галочку в use_gpu, то время обработки увеличится с 10 до 16 минут.
OpenMVS без CUDA увеличил время счета с 31 минуты до 53. Размер
файла превышает гигабайт и необходима оптимизация, например, с
помощью программы MeshLab и ретушь в Blender. С Meshroom на эту
задачу потребовалось 49 минут при внешне с практически идентичным
качеством. При этом сетка была значительно лучше отфильтрована и
файл был 160 МБ, а вот файлы с текстурами были в два раза
больше. Т.е. количество вершин отнюдь не пропорционально
качеству модели. Здесь отмечу, что я специально не включил в свой
скрипт команду OpenMVS /RefineMesh --resolution-level 1, которая,
на мой взгляд, уменьшая размер файла, сильно портит внешний вид.
Вероятно, можно подобрать более удачное значение параметра, но мне
удобнее делать это в MeshLab, визуально контролируя степень сжатия
и удаление лишних деталей. Таким образом, если бы я включил
RefineMesh, то время и размер файлов у COLMAP+OpenMVS CUDA ON и
Meshroom было бы практически одинаковым. А применительно к этому
бюсту я не могу сказать, результат работы какой программы
мне понравился больше. С MicMac терпение у меня лопнуло
после нескольких многочасовых попыток получить модель именно
бюста, а не всех окружающих зданий. Хотя судя по получившимся
удачно фрагментам, добиться результата можно. Считать модели
бюстов на i5 2450m я не пытался, хотя, вероятно, COLMAP+OpenMVS
позволит несмотря на перегрев и падение частоты процессора
получить в течение жизни результат. Расчетное время для 54
снимков 70*4=4часа 40 минут. Если из-за перегрева частота
упадет до минимума, то более 7 часов. MicMac поднимает
температуру еще быстрее, поэтому ноутбук может и не дожить до
результата.
В ХХ веке фотограмметрия в основном решала задачи
картографирования рельефа. Четыре фотографии макета вулкана, на
которых тестировалась скорость программ, представляют собой вполне
реальную задачу, сопоставимую с анализом аэрофотоснимков этого
вулкана, сделанных с квадракоптера. Однако, сегодня фотограмметрия
может справиться и с детальной реконструкцией, например,
скульптур. Чтобы показать достаточность этих программ для решения
задач сканирования объектов, были сфотографированы камерой Sony
NEX-5 бюсты ученых на аллее перед главным зданием МГУ. Для съемки
с верхней точки использовалась штанга длиной 1,8 м и пульт
дистанционного управления. Результат был сильно упрощен для
уменьшения размера файла до 5 МБ. Детально рассмотреть бюст
Лобачевского со всех сторон можно, щелкнув по картинке
ниже с помощью программы model-viewer.
О представлении моделей в интернете я писал в статье Отложенный выбор ракурса съемки. Упрощение сетки проводилось в программе Blender.
Импортируем файл.obj с моделью в Blender. Переходим в Edit Mode, открываем закладку 3D-Print запускаем Check All. Нажимаем Make Manfold и повторяем проверки, нажав снова кнопку Check All. Нажав на Zero Faces, выделяем мелкие грани (нулевыми здесь считаются грани меньшие некого размера). Выбираем в меню Mesh/Clean Up/Decimate Geometry. В появившемся меню настроек выбираем Ratio меньшее единицы. В результате мелкие грани становятся визуально различимыми. Однако у нас изначально есть места с огромными гранями, которые мы собираемся ретушировать. Их надо выделить и командой Subdivide, доступной из меню, открываемого правой кнопкой мыши. Делим, пока размер граней не станет сравним с окружающими. После этого переходим в режим Sculpting и правим дефекты. Следующая ретушь касается текстур. Поэтому переходим в режим UV Editing, выделяем большую грань, которая образовалась при выполнении команды Make Manfold, правой кнопкой мыши открываем меню UV Unwrap Faces/Unwrap. В левом окне получаем прекцию на плоскость картинки. Выделяем ее, уменьшаем и смещаем на свободное место. После этого переходим в режим Texture Paint. Красим или клонируем проблемные места на текстуре. Сохраняем картинку с обновленной текстурой. В завершение нам надо экспортировать модель формате glTF Binary (.glb) для представления в интернете и в формате STL для последующего резания на слои и печати.
Для оценки качества моделей они были отпечатаны на 3D принтере.
Для многих реальных прикладных задач типа определения объема кучи с песком или канавы достаточно и ноутбука, для задач сканирования и получения 3D модели пригодной для печати или качественного просмотра на компьютере нужны большие вычислительные мощности. Это может быть многоядерный и многопроцессорный компьютер или компьютер с графическим процессором от NVIDIA ( если у вас графический процессор от AMD, то придется покупать программы сопоставимые по стоимости с графическим процессором). Минимальным для относительно комфортной работы компьютером, вероятно, является мой i5 11400 16ГБ памяти и GPU NVIDIA GeForce GTX 1650, что с учетом бесплатной ОС и программ Meshroom и/или COLMAP+OpenMVS дает нам пороговую стоимость системного блока без монитора в 1000$. При наличии графической карты можно обойтись и более простым процессором, но это слабая экономия, а процессор, который скомпенсирует вам отсутствие графической карты, сделает систему еще более дорогой. И еще одно важное, на мой взгляд, замечание. Время создания сканирующих систем, призванных обеспечить сканирование за счет оптических систем подсветки и механических систем перемещения ради использования слабого по нынешним временам компьютера, прошло. Использование описанных мною ранее сканеров более не целесообразно. Можно разбирать на запчасти или отправлять в музей. Имеющееся программное обеспечение с открытым исходным кодом обеспечивает результат с произвольной цифровой камерой. Создание специализированных аппаратных комплексов для сканирования имеет смысл для повышения скорости и качества, а не ради облегчения нагрузки на компьютер. Метки и проекция сетки останутся актуальными для сканирования объектов с идеально гладкой поверхностью, на которой невозможно найти контрольные точки. Многокамерные системы актуальны при необходимости сканировать движущиеся объекты.