Image Matting
A estimativa de transparência por pixel preserva detalhes finos, como cabelos, para criar recortes naturais e compor imagens de forma realista sobre outros fundos.
O recorte de imagens é o processo de estimar quanto cada pixel de uma imagem corresponde ao primeiro plano. O resultado, uma máscara alfa, preserva detalhes parcialmente transparentes, como fios de cabelo, pelos e bordas suaves, para que um objeto possa ser colocado naturalmente sobre outro fundo. Também conhecida como recorte alfa, essa tarefa de visão computacional permite criar recortes precisos e compor imagens. Este termo também se refere a passe-partouts para emoldurar quadros e a pisos com revestimento de esteira, que são significados distintos.
Como funciona uma máscara alfa#
Uma máscara alfa é uma imagem de canal único com valores entre 0 e 1: 0 representa o fundo, 1 representa o primeiro plano totalmente opaco e os valores intermediários representam cobertura parcial do primeiro plano ou transparência. O alfa descreve a mistura do pixel; a confiança de um modelo descreve a certeza de uma previsão. Fios finos de cabelo podem ocupar apenas parte de um pixel, produzindo um valor alfa intermediário mesmo quando o fio é opaco.
A relação padrão de composição é image = alpha * foreground + (1 - alpha) * background. O recorte estima esses componentes a partir de uma imagem existente; a composição combina o primeiro plano extraído com um fundo substituto. Estimar a cor do primeiro plano também é importante: manter a cor do fundo original ao redor dos cabelos cria franjas coloridas na nova composição.
A segmentação de imagens atribui pixels a regiões. A segmentação semântica atribui rótulos de classe, enquanto a segmentação de instâncias separa objetos individuais. O recorte estima a opacidade contínua do primeiro plano. A segmentação do YOLO26 da Ultralytics permite o isolamento de objetos ao transformar máscaras de instância em recortes transparentes; essas máscaras podem fornecer um contorno inicial do primeiro plano para uma etapa separada de refinamento do recorte.
Trimaps e métodos de recorte#
Um trimap fornece três regiões: primeiro plano conhecido, fundo conhecido e uma região desconhecida que contém bordas ou material transparente. Essa forma de anotação de dados restringe o problema de estimativa. Assim como a segmentação interativa, ela permite que os usuários orientem a extração com uma pequena quantidade de informação. Marcar incorretamente o cabelo como fundo definido força seu alfa a zero, removendo-o do recorte.
O recorte de forma fechada, apresentado por Anat Levin, Dani Lischinski e Yair Weiss em 2006 no artigo Uma solução de forma fechada para o recorte de imagens naturais, usa pressupostos locais sobre as cores do primeiro plano e do fundo para construir um sistema linear esparso. Resolver esse sistema estima o alfa em toda a região desconhecida.
Os métodos de aprendizado profundo aprendem padrões de aparência e de bordas a partir de exemplos rotulados. Em 2017, Ning Xu, Brian Price, Scott Cohen e Thomas Huang apresentaram Recorte profundo de imagens, que combina um codificador-decodificador de rede neural convolucional com refinamento. Os dados de recorte da Adobe e o conjunto de teste Composition-1k tornaram-se recursos de avaliação consolidados. Compor primeiros planos sobre fundos variados amplia os dados de treinamento por meio do aumento de dados.
Estimativa de uma máscara em Python#
A API de estimativa alfa do PyMatting implementa o recorte de forma fechada. Instale-a com pip install pymatting pillow e, em seguida, use regiões-semente de primeiro plano e de fundo na imagem de exemplo. Neste caso, os valores cinza do trimap deixam pixels para o estimador calcular.
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
# Marque o céu como fundo e uma área do ônibus como primeiro plano.
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")A imagem em escala de cinza salva mostra a contribuição estimada do primeiro plano: branco nas sementes do primeiro plano, preto nas sementes do fundo e transições estimadas nas demais áreas.
Aplicações e avaliação da qualidade#
A edição de retratos, a fotografia de produtos e a composição cinematográfica usam máscaras para preservar bordas finas durante a substituição do fundo. O recorte de vídeo de retratos estende essa operação a vários quadros, nos quais bordas instáveis causam cintilação visível. O MODNet é um exemplo verificável de extração de retratos sem trimap a partir de entradas RGB para inferência em tempo real. A restauração de imagens, por sua vez, sintetiza conteúdo dentro de uma região selecionada.
A avaliação do recorte compara os valores alfa previstos com máscaras de referência. O benchmark de recorte orientado à percepção, apresentado por Christoph Rhemann e colegas em 2009, usa a soma das diferenças absolutas, o erro quadrático médio, o erro de gradiente e o erro de conectividade. Essas métricas complementam medidas de sobreposição de regiões, como a interseção sobre união: o erro de gradiente mede discrepâncias nas transições alfa, enquanto o erro de conectividade mede rupturas na estrutura conectada do primeiro plano.










