Image Matting
Маттинг изображений оценивает прозрачность переднего плана на уровне пикселей, сохраняя мелкие детали, например волосы, для естественного удаления фона и реалистичного наложения на новый фон.
Маттинг изображений — это процесс оценки вклада переднего плана в каждый пиксель изображения. Результат — альфа-маттинг — сохраняет частично прозрачные детали, такие как отдельные волоски, шерсть и мягкие края, благодаря чему объект можно естественно разместить на другом фоне. Эта задача компьютерного зрения, также называемая альфа-маттингом, позволяет точно вырезать объекты и компоновать изображения. Физические паспарту для оформления картин и противоскользящие напольные покрытия в медицинских учреждениях — другие значения слова «маттинг».
Как работает альфа-маттинг#
Альфа-маттинг — это одноканальное изображение со значениями от 0 до 1: 0 обозначает фон, 1 — полностью непрозрачный передний план, а промежуточные значения — частичное покрытие передним планом или прозрачность. Альфа-значение описывает смесь цветов в пикселе; уверенность модели показывает, насколько она уверена в предсказании. Тонкие волосы могут занимать лишь часть пикселя, поэтому альфа-значение будет промежуточным, даже если сами волосы непрозрачны.
Стандартное соотношение для композитинга: image = alpha * foreground + (1 - alpha) * background. Маттинг оценивает эти компоненты по исходному изображению; композитинг объединяет извлеченный передний план с новым фоном. Важно также оценивать цвет переднего плана: сохранение цвета исходного фона вокруг волос приводит к появлению цветных ореолов в итоговом изображении.
Сегментация изображений относит пиксели к областям. Семантическая сегментация присваивает пикселям метки классов, а экземплярная сегментация разделяет отдельные объекты. Маттинг оценивает непрозрачность переднего плана как непрерывную величину. Сегментация YOLO26 от Ultralytics поддерживает выделение объектов, превращая маски экземпляров в прозрачные вырезанные объекты; эти маски могут служить начальным контуром переднего плана для отдельного этапа уточнения маттинга.
Тримапы и методы маттинга#
Тримап задает три области: заведомо передний план, заведомо фон и неизвестную область, включающую границы или прозрачный материал. Такая форма разметки данных ограничивает задачу оценки. Как и интерактивная сегментация, она позволяет пользователям направлять извлечение с помощью небольшого объема входных данных. Если ошибочно отметить волосы как заведомый фон, их альфа-значение станет равным нулю, и они исчезнут из вырезанного объекта.
Мэттинг в замкнутой форме, представленный Анатом Левиным, Дани Лишински и Яиром Вайсом в 2006 году в работе Решение задачи маттинга естественных изображений в замкнутой форме, использует локальные предположения о цвете переднего плана и фона для построения разреженной линейной системы. Решение этой системы позволяет оценить альфа-значения во всей неизвестной области.
Методы глубокого обучения обучаются распознавать особенности внешнего вида и границ на размеченных примерах. Нин Сюй, Брайан Прайс, Скотт Коэн и Томас Хуанг представили работу Глубокий маттинг изображений в 2017 году. В ней кодировщик-декодировщик на основе сверточной нейронной сети сочетается с этапом уточнения. Набор данных Adobe для маттинга и тестовый набор Composition-1k стали общепринятыми ресурсами для оценки. Наложение переднего плана на разнообразные фоны расширяет обучающие данные за счет аугментации данных.
Оценка маттинга в Python#
API оценки альфа-значений PyMatting реализует маттинг в замкнутой форме. Установи библиотеку с помощью pip install pymatting pillow, затем задай на примере изображения начальные области переднего плана и фона. Здесь серые значения тримапа оставляют пиксели для оценки решателем.
from urllib.request import urlopen
import numpy as np
from PIL import Image
from pymatting import estimate_alpha_cf
with urlopen("https://ultralytics.com/images/bus.jpg") as response:
photo = Image.open(response).convert("RGB")
photo.thumbnail((256, 256))
image = np.asarray(photo, dtype=np.float64) / 255.0
# Отметь небо как фон, а часть автобуса — как передний план.
trimap = np.full(image.shape[:2], 0.5)
trimap[:20, :] = 0.0
trimap[120:145, 115:145] = 1.0
alpha = estimate_alpha_cf(image, trimap)
matte = Image.fromarray(np.uint8(np.clip(alpha, 0, 1) * 255))
matte.save("alpha_matte.png")На сохраненном изображении в градациях серого показан оцененный вклад переднего плана: белым отмечены начальные точки переднего плана, черным — начальные точки фона, а в остальных местах отображаются оцененные переходы.
Применение и оценка качества#
Редактирование портретов, предметная фотография и композитинг в кино используют маттинг, чтобы сохранить четкие границы при замене фона. Маттинг портретного видео распространяет эту операцию на последовательность кадров, где нестабильные границы создают заметное мерцание. MODNet — проверяемый пример извлечения портрета без тримапа по входному RGB-изображению для инференса в реальном времени. Восстановление изображений, напротив, синтезирует содержимое внутри выделенной области.
При оценке маттинга предсказанные альфа-значения сравнивают с эталонными маттингами. Бенчмарк маттинга с учетом особенностей человеческого восприятия, представленный Кристофом Реманном и его коллегами в 2009 году, использует сумму абсолютных разностей, среднеквадратичную ошибку, ошибку градиента и ошибку связности. Эти метрики дополняют показатели перекрытия областей, такие как пересечение над объединением: ошибка градиента измеряет расхождения в переходах альфа-значений, а ошибка связности — нарушения связной структуры переднего плана.










