Home

Page Rank Check    





Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; versione testuale
Articoli - Teoria della Computer Grafica 3D
Scritto da RedBaron85   
Lunedì 06 Giugno 2011 16:15

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; versione testuale

NOTA --- Per visualizzare la versione video di questo tutorial, cliccare qui

 

Salve a tutti,

questo è un tutorial teorico che tratta un problema che può presentarsi in fase di post-produzione: la perdita di informazione dovuta ad operazioni che in linea di principio sono reversibili ma che, in pratica, non si comportano proprio così.

 

Come sappiamo, il “colore” di un pixel, o comunque il valore di intensità (per immagini in scala di grigi), è memorizzato nel computer mediante numeri che possono variare in un determinato range, ad esempio 0-255 per canale colore in formati a 8 bit.

 

Le operazioni di post-produzione cambiano tali valori mediante operazioni matematiche; quando, ad esempio, raddoppiamo la luminosità, stiamo moltiplicando i valori originali per ottenere un nuovo risultato.

 

Il problema è che queste operazioni possono modificare le informazioni in modo tale da non poter tornare indietro, ossia da non poter recuperare l'immagine originale applicando un'operazione inversa... vediamo alcuni esempi.

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; immagine originale

 

Se aggiungiamo ad un'immagine il colore grigio puro, rappresentato dai valori 0.5 per tutti e tre i canali RGB nel range 0.0 – 1.0, tendiamo a rendere più chiara l'immagine; tuttavia, i pixel dell'immagine originale che avevano valori maggiori di 0.5 per uno o più canali si ritroveranno con il valore “troncato”, per così dire, a 1.0, che è il massimo della scala e che rappresenta il bianco puro.

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; aggiunta valore

Provando ad applicare successivamente una sottrazione di 0.5, non torneremo all'immagine di partenza: prendendo ad esempio un pixel a 0.8 e sommandogli 0.5, memorizzeremo 1.0 anziché 1.3 perché il massimo della scala è 1.0, dopodiché togliendogli 0.5 arriveremo appunto a 0.5, non più lo 0.8 iniziale.

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; sottrazione valore

Considerazioni analoghe possono essere fatte per la sottrazione che viene troncata a 0.0, che rappresenta il nero puro, non ammettendo valori negativi; in questo caso, partendo ad esempio da 0.3 e sottraendogli 0.5 arriveremo a 0.0, dopodiché sommandogli 0.5 arriveremo a 0.5, che è un valore maggiore (e, quindi, “più luminoso”, in un certo senso) di quello di partenza!

 

Il discorso può essere esteso a tutti gli operatori matematici, quindi anche a moltiplicazione e divisione, e ad intere espressioni che rappresentano, in effetti, particolari operatori di compositing.

 

Altro esempio: la variazione del contrasto.

Partiamo sempre dall'immagine originale...

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; immagine originale

...dopodiché dividiamo il contasto per due per ottenere una prima immagine intermedia...

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; contrasto dimezzato

...quindi prendiamo questa immagine e moltiplichiamo il contrasto per 2:

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; contrasto raddoppiato

ancora una volta, l'output è diverso dall'immagine originale, e questo perché i valori fuori scala sono stati tagliati, ed anzi a seconda della precisione numerica adottata dal sw utilizzato possiamo aver perso dei valori nel range standard per motivi di arrotondamento nelle moltiplicazioni in virgola mobile (ad esempio se il software memorizza solo una cifra decimale, dividendo 1.5 per due otterremo 0,75, arrotondato quindi a 0.8 dal software, moltiplicandolo poi per due otterremo 1.6, che chiaramente non è 1.5... peggio ancora se si lavora solo con numeri interi, ad esempio nel range 0-255 senza decimali).

 

La differenza può essere quasi impercettibile, ma c'è, come mostrato dall'immagine seguente, dove sono presenti gli istogrammi dell'immagine originale e quello dell'immagine finale, ottenuta dopo la moltiplicazione per due.

Teoria della CG: operazioni di post-processing sulle immagini e perdita di informazioni; confronto tra istogrammi

Questi esempi sono davvero banali, potreste obiettare che non ha molto senso dividere e poi rimoltiplicare un'immagine in questo modo... in effetti, non penso vi capiterà mai di applicare questi passaggi DI SEGUITO, ma in un processo di compositing medio-lungo, dove possono esserci anche maschere ed altri elementi da integrare in una singola scena, può capitare, per cui è bene sapere qualche elemento di teoria, un po' di “dietro le quinte” di queste operazioni.

 

Possibili rimedi sono ad esempio l'utilizzo di software non banali (ossia che memorizzino i valori fuori scala nei passi intermedi e almeno due cifre dopo la virgola), l'utilizzo di formati di immagine con una profondità dei dati maggiore, come ad esempio EXR (utilizzato soprattutto per le immagini in HDR ma che può tornare molto utile anche in post-processing con immagini “standard”) oppure soluzioni ad hoc a seconda del tipo di problema; ad esempio, per rendere più luminosa un'immagine potremmo utilizzare l'operatore Gamma anziché la luminosità con addizione o moltiplicazione... ma di quest'ultimo argomento parleremo in un altro tutorial ad hoc.

 

C'è da dire inoltre che i programmi utilizzano spesso rappresentazioni interne che “sforano” i limiti di 1.0 e 0.0, memorizzando anche i valori fuori scala nei passi intermedi di post-processing, per cui se ad esempio elaborate la sequenza Somma 0.5 e Sottrai 0.5 nel Nodes Editor di Blender non noterete questo problema, perché Blender memorizzerà anche i valori fuori scala, ma se il software da voi utilizzato non dovesse presentare questa caratteristica o se doveste salvare su singoli file i passi intermedi ed elaborarli successivamente, come ho fatto io per ottenere le varie immagini mostrate finora, allora lì si avrà quanto detto.

 

Bene, per questo brevissimo tutorial è tutto;

bye! ;-)

Tags:     videotutorial      informatica computer      computer grafica      computer graphics      redbaron85      computer grafica      computer graphics      post processing      compositing      contrasto      image processing      elaborazione immagini
Ultimo aggiornamento Giovedì 12 Aprile 2012 16:08
 

Ti è piaciuto questo articolo ? Condividilo !



RedBaron85.com Forum community banner

Non hai trovato quello che cercavi ?
Ricerca personalizzata
Copyright © 2012 RedBaron85.com: Informatica, CG 2D e 3D, Blender, Python, Java 2D e 3D, 3D Studio e altro ancora!. Tutti i diritti riservati.
Joomla! è un software libero rilasciato sotto licenza GNU/GPL.

Milanese Francesco - Partita IVA: 04950350878

AltroArticoliblog utentiBlueprintsContestenglishProgrammazioneModelliElencoNewsTexturesTutorialsVideotutorials