Premoltiplica

Confusione.

C’è un po di confusione riguardo alla premoltiplica delle immagini cgi. Questo problema è influenzato direttamente dal canale di alpha e dallo spazio colore di compositing. Vediamo quindi di fare un po di chiarezza.

Importanza della premoltiplica.

Innazitutto è fondamentale conoscere tutte le fasi matematiche del compositing per capire a fondo cosa succede durante i diversi step di manipolazione. Lavorare senza curare attentamente la premoltiplica crea degli artefatti neri in prossimità dei bordi nel compositing. Spesso potremmo trovarci di fronte a immagini non premoltiplicate con bordi molto seghettati.

Tutti sappiamo che le immagini sono formate da pixel e che questi ultimi tendono a discretizzare la qualità di una immagine visualizzabile. Un algoritmo di sampling effettuato via software discretizza ulteriormente parte delle nostra immagine. Ora immaginiamo di osservare il bordo di una sfera virtuale, chiaramente il sampling dell’alpha channel forma un gradiente che va dal bianco al nero.

Una immagine rgb senza premoltiplica è composta da colori interi saturi. La premoltiplica consiste nel moltiplicare i colori rgb per il canale alpha. Questo processo tende a scurire i pixel con alpha minore di 1  rendendoli totalmente neri dove l’alpha è 0. La premoltiplica è necessaria per avere una immagine finale corretta ma il problema deriva dalla fase di compositing.

premoltiplica

Compositing.

Quando una immagine viene importata in un software di compositing la prima cosa da fare è depremoltiplicare l’immagine ( unpremult ), convertire l’immagine in uno spazio colore lineare e rieffettuare la premoltiplica. Questo processo evita di convertire i colori rgb in lineare modificati dal processo di premoltiplica durante il render. Generalmente anche dopo aver convertito l’immagine in uno spazio colore lineare, i pixel otterranno comunque una variazione logaritmica srgb temporanea poichè l’immagine viene visualizzata su un monitor classico.

I software di compositing permettono di ridurre i problemi di premoltiplica già in fase di input. L’immagine importata viene flaggata come premoltiplicata, questo farà capire al software che i colori rgb dovranno essere divisi per l’alpha in modo da riottenere i colori originali.

I pixel premoltiplicati portano con sè una percentuale di background originato durante il render. La percentuale di background è 100 meno la percentuale di alpha ( il bianco mappato a 100 e il nero a 0 ). Ciò vuol dire che se ad esempio andiamo a renderizzare una immagine su sfondo nero, una parte dei pixel periferici avranno tonalità scure dovute al blending tra l’immagine e il background nero.

Il software di compositing nel processo di divisione restituisce la tonalità originale ai pixel. E’ importante non premoltiplicare le immagini su sfondo diverso dal nero poichè il blending del pixel con lo sfondo differente porterebbe ulteriori problematiche. In questo caso bisognerebbe prima sottrarre la percentuale di colore del background per simulare un rendering su sfondo nero e  a questo punto dividere per l’alpha per riotterere il colore solido originale.

Nel prossimo articolo vedremo la correzione colore legata alla premoltiplica.

 

Subscribe
Notify of
guest

9 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Theiamania
Theiamania
10 years ago
Reply to  xgiovio

Ciao Giovanni, ti avevo fatto questa domanda, specificando molto benegli argomenti, proprio per avere risposte precise. Ti ringrazio per la replica ma mi appare ancora un po’ troppo confusa. Io credo che sarebbe meglio che tu ti prendessi un poco più di tempo per rispondere in maniera puntuale ad ogni perplessità sollevata. Per esempio, quando tu dici: ” Quando invece importi una immagine con gamma non lineare allora puoi settarla nel nodo di input. questo ti permette quindi di dire al programma di convertire l’immagine da srgb(ad esempio) a lineare. tutto ciò che matematicamente si fa sui nodi avviene in… Read more »

Theiamania
Theiamania
10 years ago

Ciao Giovanni, ho cominciato con Nuke e vorrei fare un po’ di chiarezza su alcune termini da te usati per capire bene il workflow del compositing in Nuke. Innanzitutto, comincerei dalle immagini CGI in ingresso in Nuke, che chiamo convenzionalmente come FOREGROUND. Se importo un render 3D, che è lineare e con alpha premoltiplicato (io li faccio così e così li richiedo a chi me li fa), non devo fare nulla perché Nuke me li riconosce come lineari. Quindi, se ho ben capito, sui render 3D non ci sono problemi. Se invece importo footage in Greenscreen già bucato, dovrei prima… Read more »

Theiamania
Theiamania
11 years ago

Ciao G,
spero di non aver detto capperate…

Theiamania
Theiamania
11 years ago

Ciao e grazie perla replica. Vorrei approfondire il discorso perché secondo me non è chiaro. Quandi tu dici. “…Generalemnte il background è nero e quindi puoi ben immaginare come l’interpolazione lineare causata dall’alpha permetta al nero di essere visibile…” intendi dire che tu metti un background nero dietro al tuo modello 3d, mettiamo di un auto, prima di renderizzare? Non credo proprio…! Tu crei il modello 3D , senza alcuno sfondo, e quindi hai una canale alpha bucato perfettamente! Quello che puoi decidere è il tipo di antialiasing, in modo da decidere un tipo di bordo sfumato tra la parte… Read more »

Theiamania
Theiamania
11 years ago
Reply to  Theiamania

Scusa ma ho premuto un tasto e il messaggio è partito senza che fosse completo… Lo riscrivo qui di seguito, corretto. Ciao e grazie perla replica. Vorrei approfondire il discorso perché secondo me non è chiaro. Quandi tu dici. “…Generalemnte il background è nero e quindi puoi ben immaginare come l’interpolazione lineare causata dall’alpha permetta al nero di essere visibile…” intendi dire che tu metti un background nero dietro al tuo modello 3d, mettiamo di un auto, prima di renderizzare? Non credo proprio…! Tu crei il modello 3D , senza alcuno sfondo, e quindi hai una canale alpha bucato perfettamente!… Read more »

Theiamania
Theiamania
11 years ago

Ciao Giovanni e complimenti per il sito. Riguardo alla premoltiplicazione, trovo l’argomento assai fumoso e questo tuo articolo, cosentimelo, mi ingenera ulteriore confusione. Mi spiego. Innanzitutto dovremmo distunguere fra immagini che vengono da render 3D e che quindi non hanno un colore solido di background che ne contamini la maschera, da imagini invece che vengono da bucature come Keying, Rotoscoping o mascheramenti d’altro tipo, magari fatti in Photoshop o AE, nei quali invece hai sempre un colore di sfondo che ti contamina i bordi della maschera. Quindi dovresti specificare se e perchè dovremmo premultiplicare incaso di immagini da 3D render… Read more »

Twitter | Instagram | Bitbucket | Battlelog | LinkedIn | GitHub

Google Profile


My name is Giovanni Di Grezia, but people call me xgiovio.

Here is my homepage: .

I am a VFX Artist and Software Developer

And this is a picture of me.

Giovanni Di Grezia





9
0
Would love your thoughts, please comment.x
()
x