В этом выпуске базовой серии по фотограмметрии с поворотным столом мы рассмотрим основные особенности проекта Meshroom для реконструкции геометрии по фотографиям.
Текстовая расшифровка видео
Всем привет! В этом выпуске базовой серии по фотограмметрии с поворотным столом мы рассмотрим основные особенности проекта Meshroom для реконструкции геометрии по фотографиям.
Сначала я дам общий обзор интерфейса и рабочего процесса Meshroom, а затем перейду к практическим шагам по загрузке изображений.
После загрузки и установки Meshroom давайте запустим программу. Откроются два окна. Окно консоли отображает данные и информацию о выполнении программы, а главное окно предназначено для работы над проектами. Если закрыть любое из этих окон, программа завершит работу, поэтому оба окна должны оставаться открытыми.

На самом деле Meshroom позволяет создавать различные типы проектов, как можно увидеть, нажав New Pipeline в меню File. Разумеется, нас интересует проект Photogrammetry.
Первое, что нужно сделать, это сохранить проект. Рекомендую создать отдельную папку, в которой будет храниться файл проекта, поскольку при выполнении процесса фотограмметрии будет создана целая структура каталогов, которую мы вскоре рассмотрим.
Файл проекта будет иметь расширение MG, что означает Meshroom Graphs. Термины Pipeline и Graphs подчёркивают, что процессы в Meshroom выполняются последовательно, шаг за шагом. Это хорошо видно в панели Graph Editor в нижней части интерфейса, где отображаются узлы и связи между ними.
Прежде чем подробно рассматривать этот конвейер обработки, давайте быстро ознакомимся с интерфейсом программы.

Панель Image Gallery будет содержать изображения, которые мы хотим использовать для реконструкции. Изначально она пустая и показывает, что файлы можно также перетаскивать сюда напрямую из папки. Если я правильно помню, эта функция перетаскивания не работает в Windows, если Meshroom запущен от имени администратора. В любом случае изображения также можно импортировать через команду Import Images в меню File.
В панели Image Viewer можно просматривать загруженные изображения по одному, что позволяет отбраковывать снимки низкого качества или извлекать необходимую информацию. В этом окне также будут отображаться некоторые данные, создаваемые Meshroom, например Depth Map, как мы увидим позже.
Панель 3D Viewer отображает облако точек, представляющее реконструированную сцену. Здесь также можно заново определить объём реконструкции, называемый bounding box, чтобы сосредоточиться только на определённых элементах.
Панель Graph Editor показывает последовательность узлов для обработки и связи между ними. Каждый узел представляет собой определённую задачу, которая выполняется шаг за шагом, используя входящие данные через входные порты и создавая один или несколько результатов через выходные порты.
Новый проект Photogrammetry содержит базовый конвейер обработки с параметрами по умолчанию, которые подходят для многих проектов. Когда мы запустим проект, Meshroom создаст подпапку Cache, внутри которой появятся дополнительные папки, по одной для каждого узла, присутствующего в конвейере.
Конвейер не обязательно должен оставаться стандартным. Его можно изменять, добавляя новые узлы или изменяя связи между ними, как мы увидим позже в этом выпуске.
В любом случае, выбрав узел, мы можем просмотреть его параметры и настройки в панели Node справа. Каждый узел предоставляет доступ к нескольким типам информации, отображаемым на вкладках Attributes, Log и других вкладках в нижней части панели.

Последняя панель стандартного интерфейса — это Task Manager, которая изначально пуста. Позже здесь будут отображаться сведения о выполнении различных узлов.
В меню View вы можете заметить, что панель Live Reconstruction отсутствует. Однако в этой вводной серии я её использовать не буду, поэтому она может оставаться отключённой.
Опция Fullscreen, как и следует ожидать, позволяет отображать главное окно программы в полноэкранном режиме.
Прежде чем перейти к практической части, позвольте кратко представить конвейер обработки, который определяет последовательность выполнения узлов.
Конвейер можно разделить на две части. В первой части, которая выполняется до узла Structure From Motion, Meshroom загружает изображения и извлекает специальную информацию, называемую Features, которая позволяет находить опорные точки на нескольких фотографиях.

Затем эти Features используются для реконструкции геометрии сцены, однако этот процесс происходит после узла Structure From Motion. В частности, на втором этапе Meshroom вычисляет данные глубины для обнаруженных Features, создавая трёхмерное облако точек. Затем программа реконструирует геометрию, которая называется Mesh, поскольку состоит из вершин, соединённых рёбрами, которые, в свою очередь, образуют треугольные полигоны.
В завершение исходные фотографии объединяются в изображение, называемое Texture, которое содержит цвета различных частей исходного трёхмерного объекта, но организованные в виде двумерного изображения.

Из обнаруженных на фотографиях Features мы получаем точки в пространстве, которые изначально не связаны между собой. Затем эти точки соединяются, формируя геометрию из поверхностей, на которую накладывается изображение Texture, чтобы придать реконструированной геометрии цвета исходного объекта.
О конвейере обработки, узлах и общем процессе выполнения можно рассказать гораздо больше, но я буду объяснять эти детали по мере продвижения по проекту.
Теперь перейдём к практической части. Сначала я перетаскиваю исходные фотографии в панель Image Gallery.
В панели Image Gallery мы можем увидеть общее количество добавленных фотографий, а также количество камер, распознанных Meshroom на основе внутренних параметров, извлечённых из изображений. Это число отображается рядом со значком затвора в нижней части панели.

Для каждой фотографии можно просмотреть эти метаданные, если они доступны, наведя курсор мыши на значок затвора в миниатюре изображения. В данном случае метаданные присутствуют, поэтому значок затвора отображается зелёным цветом. Если метаданные отсутствуют, значок будет красным, и Meshroom выполнит реконструкцию настолько хорошо, насколько это возможно без этой информации.
В проекте фотограмметрии с поворотным столом рекомендуется выбрать узел Feature Matching и установить параметр Minimal 2D Motion в значение 2. После внесения этого изменения я сохраняю проект.

В проекте, где на фотографиях использовался фон хромакей, как в данном случае, можно попробовать заставить Meshroom исключить зелёный фон ещё до извлечения Features. Для этого в Graph Editor можно добавить узел Image Masking, щёлкнув правой кнопкой мыши по пустой области панели и выбрав добавление узла.
Во вход Structure From Motion Data нового узла необходимо подключить выход Structure From Motion Data узла Camera Init, перетащив соединение между двумя портами.
Затем выход нового узла необходимо подключить ко входам Mask Folder узлов Feature Extraction и Prepare Dense Scene.
Теперь, выбрав узел Image Masking, мы можем задать цвет для исключения и настроить значения допуска для оттенка, насыщенности и яркости в панели Node. Однако этот способ исключения зелёного фона не слишком удобен, поскольку не предоставляет хорошей визуальной обратной связи по результату и не позволяет задавать индивидуальные параметры для каждой фотографии. Последнее может быть особенно полезно в нашем случае, поскольку освещение фоновой ткани неравномерно.
По этим причинам я удаляю узел Image Masking, щёлкнув правой кнопкой мыши и выбрав Remove Node. Для справки: соединение между узлами можно удалить, щёлкнув правой кнопкой мыши по линии связи и выбрав Remove.

Я также удаляю все фотографии, потому что в следующем выпуске покажу небольшую настройку в Blender, которая позволит нам не только проще удалять зелёный фон, но и устранять green spill, то есть зелёный оттенок, появляющийся на объектах, снятых на фоне хромакея.
Единственная пользовательская настройка, которую я сохраняю, — это значение 2 для параметра Minimal 2D Motion в узле Feature Matching.
Теперь я сохраняю проект с этими настройками, закрываю Meshroom и увидимся в следующем выпуске!