Image Matting
La stima della trasparenza in un'immagine determina l'opacità del primo piano a livello di pixel, preservando dettagli fini come i capelli per ottenere scontorni naturali e composizioni realistiche con lo sfondo.
La stima della trasparenza in un'immagine consiste nel determinare quanto il primo piano contribuisce a ciascun pixel dell'immagine. Il risultato, una maschera alpha, preserva i dettagli parzialmente trasparenti, come singoli capelli, peli e bordi sfumati, così che il soggetto possa essere inserito in modo naturale su un altro sfondo. Chiamata anche alpha matting, questa attività di visione artificiale consente scontorni precisi e la composizione di immagini. Le imbottiture fisiche per cornici e i tappetini medici sono significati diversi del termine «matting».
Come funziona una maschera alpha#
Una maschera alpha è un'immagine a canale singolo con valori compresi tra 0 e 1: 0 rappresenta lo sfondo, 1 rappresenta il primo piano completamente opaco e i valori intermedi rappresentano una copertura parziale del primo piano o la trasparenza. L'alpha descrive la miscela del pixel; la confidenza di un modello indica quanto è sicuro di una previsione. Un capello sottile può occupare solo una parte del pixel, generando un valore alpha intermedio anche se il capello è opaco.
La relazione standard di composizione è image = alpha * foreground + (1 - alpha) * background. La stima della trasparenza determina questi componenti a partire da un'immagine esistente; la composizione combina il primo piano estratto con uno sfondo sostitutivo. È importante stimare anche il colore del primo piano: mantenere attorno ai capelli il colore dello sfondo originale crea aloni colorati nella nuova composizione.
La segmentazione delle immagini assegna i pixel a regioni. La segmentazione semantica assegna etichette di classe, mentre la segmentazione delle istanze separa i singoli oggetti. La stima della trasparenza determina l'opacità continua del primo piano. La segmentazione di YOLO26 di Ultralytics supporta l'isolamento degli oggetti trasformando le maschere delle istanze in scontorni trasparenti; queste maschere possono fornire un contorno iniziale del primo piano da rifinire in una fase separata di stima della trasparenza.
Trimap e metodi di stima della trasparenza#
Una trimap definisce tre regioni: primo piano noto, sfondo noto e una regione sconosciuta che contiene bordi o materiale trasparente. Questa forma di annotazione dei dati vincola il problema di stima. Come la segmentazione interattiva, consente agli utenti di guidare l'estrazione fornendo pochi dati. Contrassegnare per errore i capelli come sfondo certo forza il valore alpha a zero, rimuovendoli dallo scontorno.
La stima della trasparenza in forma chiusa, introdotta da Anat Levin, Dani Lischinski e Yair Weiss nel 2006 con A Closed Form Solution to Natural Image Matting, usa ipotesi locali sui colori del primo piano e dello sfondo per costruire un sistema lineare sparso. La risoluzione del sistema stima l'alpha in tutta la regione sconosciuta.
I metodi di deep learning apprendono schemi relativi all'aspetto e ai bordi da esempi etichettati. Nel 2017 Ning Xu, Brian Price, Scott Cohen e Thomas Huang hanno presentato Deep Image Matting, che combina un encoder-decoder basato su rete neurale convoluzionale con una fase di rifinitura. I dati di matting di Adobe e il set di test Composition-1k sono diventati risorse di valutazione consolidate. Comporre primi piani su sfondi diversi amplia i dati di addestramento tramite l'aumento dei dati.
Stima di una maschera in Python#
L'API di stima alpha di PyMatting implementa la stima della trasparenza in forma chiusa. Installala con pip install pymatting pillow, quindi usa regioni campione di primo piano e sfondo nell'immagine di esempio. Qui, i valori grigi della trimap lasciano al risolutore il compito di stimare i pixel.
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
# Indica il cielo come sfondo e una zona dell'autobus come primo piano.
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")L'immagine in scala di grigi salvata mostra il contributo stimato del primo piano: bianco nei punti campione del primo piano, nero in quelli dello sfondo e transizioni stimate altrove.
Applicazioni e valutazione della qualità#
Il fotoritocco di ritratti, la fotografia di prodotti e la composizione cinematografica usano le maschere per preservare i bordi fini durante la sostituzione dello sfondo. La stima della trasparenza nei video di ritratti estende questa operazione a più fotogrammi, nei quali bordi instabili producono sfarfallio visibile. MODNet fornisce un esempio verificabile di estrazione di ritratti senza trimap a partire da input RGB per l'inferenza in tempo reale. Il riempimento delle immagini, invece, sintetizza il contenuto all'interno di una regione selezionata.
La valutazione della stima della trasparenza confronta i valori alpha previsti con le maschere di riferimento. Il benchmark di stima della trasparenza basato sulla percezione, presentato da Christoph Rhemann e colleghi nel 2009, usa la somma delle differenze assolute, l'errore quadratico medio, l'errore di gradiente e l'errore di connettività. Queste metriche integrano misure di sovrapposizione delle regioni come l'intersezione sull'unione: l'errore di gradiente misura le discrepanze nelle transizioni alpha, mentre l'errore di connettività misura le discontinuità nella struttura connessa del primo piano.










