В этом выпуске базовой серии уроков по фотограмметрии с поворотным столом мы рассмотрим, как удалить зелёный фон и паразитный цветовой оттенок (Color Spill) с фотографий в Blender.
Текстовая расшифровка видео
Всем привет! В этом выпуске базовой серии уроков по фотограмметрии с поворотным столом мы рассмотрим, как удалить зелёный фон и паразитный цветовой оттенок (Color Spill) с фотографий в Blender.
Изображения, полученные в конце этого процесса, будут представлять собой PNG-файлы с прозрачностью, которые Meshroom сможет использовать, сосредотачиваясь, так сказать, только на объекте интереса на этапе извлечения признаков.
Этот урок записан в Blender 4.3, однако узлы композитинга, используемые здесь, доступны и во многих предыдущих версиях программы и, скорее всего, останутся доступными и в будущих релизах.
Вся работа выполняется в Compositor Editor, поэтому виртуальная камера внутри сцены даже не требуется. Более того, я могу удалить узел Render Layers, который по умолчанию присутствует в новых настройках композитинга.

Сначала необходимо задать выходной формат проекта, указав разрешение фотографий, которое в моём случае составляет 4000 и 3000 пикселей по осям X и Y соответственно.
Во вкладке Output окна Properties Editor также необходимо установить формат вывода PNG с режимом RGBA, то есть с прозрачностью, а также задать низкое значение сжатия.
В этой же вкладке нужно указать путь на диске, куда будут сохраняться обработанные файлы.
В качестве последнего подготовительного шага, перед загрузкой изображений в проект, необходимо установить значение End Frame, равное количеству изображений для обработки. В моём случае это 146.

Что касается самих изображений, Blender распознает последовательность изображений в папке при условии, что файлы пронумерованы последовательно.
В среде Windows существует очень простой способ выполнить такую нумерацию. Выделите все файлы в папке с исходными фотографиями. Щёлкните правой кнопкой мыши по первому файлу и выберите команду Rename. Затем введите имя и нажмите Enter. Как видите, Windows автоматически добавит ко всем файлам в папке последовательный числовой суффикс.
Теперь я могу перетащить первый файл в Compositor Editor Blender и изменить тип узла на Image Sequence.
Внутри узла я указываю количество файлов для обработки в поле Frames. Это значение должно совпадать со значением, ранее заданным в поле End на Timeline.

Я подключаю выход Image узла изображения к узлу Viewer, чтобы видеть изображение на фоне Backdrop в Compositor Editor.
Во время съёмки фотографий я иногда поворачивал смартфон, поэтому некоторые изображения отображаются перевёрнутыми. Эту проблему легко исправить с помощью узла Rotate, где параметр Degrees можно анимировать таким образом, чтобы узел использовался только при необходимости. Однако для Meshroom такие повороты не являются проблемой, поэтому выполнять их на данном этапе необязательно.
Я добавляю в схему узлы Color Key и Color Spill.
Предварительный просмотр Backdrop удобно использовать для выбора оттенка зелёного цвета для узла Color Key. Я нажимаю на цвет по умолчанию в поле Key Color узла Color Key, затем выбираю инструмент Eyedropper и указываю зелёную точку на фотографии.

Теперь я подключаю выход Image узла изображения к входу Image узла Color Key.
Выход Matte узла Color Key необходимо подключить к входу Alpha узлов Viewer и Composite, поскольку он представляет собой маску прозрачности изображений.
Выход Image узла Color Key, в свою очередь, следует подключить к узлу Color Spill, который позволяет удалить зелёные отражения на объектах, снятых на зелёном фоне. Выход узла Color Spill затем подключается к входам Image узлов Composite и Viewer.

В нашем случае параметр Despill Channel должен быть установлен на зелёный канал, а алгоритм следует выбирать между вариантами Simple и Average в зависимости от качества результата, которое можно оценить в окне Backdrop.
На этом этапе я могу начать настройку значений допусков для каналов Hue, Saturation и Value в узле Color Key. Эти допуски определяют, насколько цвет пикселя может отличаться по этим трём каналам от цвета, указанного в поле Key Color данного узла.

Интересная особенность выполнения этой операции в Blender заключается в том, что параметры узлов можно анимировать. Это означает, что я могу установить значения, хорошо работающие для первого кадра, сохранять их до тех пор, пока они остаются эффективными, а затем изменять их, если для какого-либо изображения они перестают подходить.
Однако будьте внимательны: если вы обнаружили, что установленные значения плохо работают для другого изображения, необходимо вернуться на предыдущий кадр и создать там ключевые кадры, чтобы зафиксировать значения, которые работали до этого момента. После этого можно перейти к следующему кадру, скорректировать параметры под новые условия и записать новые значения новыми ключевыми кадрами. Этот шаг с установкой ключевого кадра на предыдущем кадре обязателен, поскольку в противном случае Blender создаст интерполяцию между кадрами, что может негативно повлиять на их маски.
В целом лучше использовать низкие значения параметра Hue, поскольку существует риск исключить другие цвета, которые на самом деле должны сохраняться. Лучше оставить базовый оттенок с небольшой допустимой погрешностью и корректировать два других параметра. В большинстве случаев неравномерное освещение зелёного экрана приводит к изменению яркости, но не вызывает существенных изменений оттенка.
При настройке параметров всегда необходимо внимательно следить за объектом интереса, потому что, хотя мы стремимся удалить все нежелательные области, иногда это невозможно сделать полностью, и можно случайно удалить части самого объекта.
Для устранения более сложных участков можно использовать один или несколько узлов Box Mask, подключая их последовательно к выходу Matte узла Color Key. В Compositor также имеются и другие инструменты маскирования, однако для наших целей пары узлов Box Mask будет более чем достаточно.

Эти узлы создают прямоугольные маски, которые можно размещать и поворачивать поверх входной маски с помощью параметров, позволяющих настраивать положение, размер и вращение. Маски поддерживают различные режимы применения. В нашем случае я буду использовать режим Subtract, однако следует помнить, что в этом режиме затронутые области становятся чёрными, а не прозрачными.
Чтобы решить эту проблему, достаточно добавить узел Set Alpha перед входами Image узлов Composite и Viewer. Сначала я отключаю подключения к входам Alpha узлов Composite и Viewer. Затем подключаю выход Image узла Color Spill к входу Image нового узла Set Alpha. Наконец, подключаю вход Alpha узла Set Alpha к выходу последнего узла Box Mask в схеме.

Сейчас я перейду сразу к итоговому варианту схемы композитинга, чтобы показать, что по сути она представляет собой комбинацию ключевых кадров как для значений допусков в узле Color Key, так и для параметров положения и размера используемых масок.
Параметры положения и размера масок также можно анимировать, что позволяет вводить их в рабочую область только тогда, когда они действительно необходимы, избегая риска перекрытия объекта интереса в других кадрах.
Здесь действует то же предупреждение, что и при создании ключевых кадров для параметров узла Color Key: крайне важно устанавливать ключевые кадры до внесения изменений в очередном кадре, чтобы избежать некорректной интерполяции положений масок на протяжении всей анимации.
Этот процесс анализа и настройки параметров Color Key и масок может занять некоторое время, однако впоследствии он позволит сэкономить гораздо больше времени, когда Meshroom будет обрабатывать очищенные изображения вместо исходных фотографий.
Впрочем, не стоит беспокоиться, если не удаётся удалить абсолютно все нежелательные элементы. Meshroom всё равно воспримет часть мелких артефактов как шум и автоматически проигнорирует их. Чем лучше мы подготовим изображения на этом этапе, тем лучше будет результат, но чрезмерно усложнять процесс нет необходимости.
После проверки качества цветового ключа и масок на нескольких кадрах я могу наконец запустить рендеринг последовательности и получить изображения, которые затем будут импортированы в Meshroom. Этот процесс рендеринга не займёт много времени, поскольку выполняется лишь обработка внешних изображений, а не рендеринг полноценной 3D-сцены. Полученные изображения являются теми же файлами, которые входят в бесплатный пакет материалов, поэтому вы сможете повторить шаги, которые мы рассмотрим в следующих уроках. На этом всё для данного выпуска! До встречи в следующем уроке!