Compressione

Compressione e Schemi.

Quasi tutti i differenti tipi di file offrono un qualche tipo di compressione. I dati compressi senza perdere qualità sono chiamati lossless e l’algoritmo che li comprime e li decomprire crea un file perfettamente identico all’originale. Altri algoritmi invece si identificano come lossy, una immagine cioè subisce una degradazione causata dal processo di discretizzazione dell’algoritmo stesso.

Compressione RLE e LZW.

Due schemi di compressione predominanti sono l’RLE e il LZW. L’RLE ( Run Lenght Encoding ) è il più usato nelle imagini in CGI; L’LZW ( Lempel-Ziv-Welch ) è altrettanto importante per la sua disponibilità in molti formati immagine. Siccome entrambi gli schemi di compressione sono lossyless, l’immagine risultante sarà identica all’originale e in più questi algoritmi di compressione possono essere usati assieme per ridurre ulteriormente la grandezza in byte del file. LZW viene principalmente usato nelle immagini fotografiche e rispetto al RLE fornisce una compressione minima.

Compressione JPEG e MPEG-2.

I due schemi lossy predominanti sono il JPEG e l’ MPEG-2. La compresisone JPEG è principalmente utilizzata nelle immagini fotografiche e il suo scopo è ridurre i dettagli nel sorgente riducendo drasticamente la grandezza in byte dell’immagine. La sua versabilità deriva dalla facilità di condivisione su sistemi a banda ridotta ( internet e dispositivi mobili ); la compressione permette comunque di avere una buona immagine con variazioni quasi invisibili all’occhio umano. Il JPEG è usato su immagini statiche e non su sequenze di immagini. Nei video infatti, il codec principale è l’MPEG-2; questo schema è molto simile al jpeg, l’algoritmo, dopo una iniziale compressione di alcuni fotogrammi in jpeg, calcola le variazioni nei frame successivi fino a un cambio di inquadratura o una eccessiva modifica dei pixel. Questo permette di salvare molta banda poichè sarà il processore a ricostruire l’immagine nei punti uguali ai fotogrammi precedenti. I frame interi vengono chiamati keyframes e una sequenza di fotogrammi (il primo intero più i successivi dipendenti) viene chiamata GOP ( Group of Pictures ).

compressione

Nel prossimo articolo vedremo il formato immagine rilasciato dell’ILM: OpenEXR

 

Formati Immagine

Formati e Compressione.

Ogni immagine che riceviamo o forniamo al cliente ha un formato proprio e ci sono tantissimi formati differenti, ognuno ha pro e contro. E’ molto importante lavorare con i formati giusti, l’esportazione di un file non leggibile da un altro software crea problemi nelle successive fasi di lavorazione e la perdita di tempo è sempre legata a perdita di denaro. Un aspetto importante dei diversi formati è la compressione sui pixel che l’algoritmo di compressione applica. Il tutto si traduce in una perdita di qualità, inaccettabile in caso di successive lavorazioni. Un ulteriore aspetto da considerazire è la grandezza dei file. Spesso la scelta di un formato inadeguato può incrementare notevolemnte le dimensioni di un file ( spazio su disco ) creando non pochi problemi nello sharing ( banda, tempi di scaricamento, cpu più veloce per una rapida decompressione, ecc ). L’importante è ricordare che, se non si hanno mezzi molto potenti, è buona norma ottimizzare il workflow per ridurre i tempi di attesa, i quali sono punti morti in una produzione e portano solo a un dispendio di risorse, in altri termini salute e soldi .Nei prossimi articoli parleremo dei formati e soprattutto vedremo i diversi schemi di compressione. Parleremo anche particolarmente del formato exr e del rapporto tra grafiche e immagini fotografiche professionali.

formati

Nel prossimo articolo vedremo la differenza tra immagini fotografiche e grafiche.

 

Moltiplicare le immagini

Moltiplicazione e Maschere.

Moltiplicare le immagini è un lavoro molto comune per i compositori digitali, due o più immagini possono essere moltiplicate tra loro fondendo pixel in base ad algoritmi matematici. Se consideriamo una immagine Singola e una maschera bianco/nero, ne possiamo immaginare il prodotto. Considerando ogni punti bianco come 1 e ogni punto nero come 0, è chiaro che moltiplicando l’immagine per la maschera, tutti i punti neri verranno tagliati fuori. Le immagini bianco nero infatti svolgono principalmente la funzione di maschere e tendono ad isolare particolari oggetti o parti.

maskmask

Nel prossimo articolo vederemo i formati immagine.

 

Floating Point

Floating point e interi.

La discussione precedente sulla profondità dei bit era pertinente ai numeri interi. C’è da dire che i numeri a 8 bit, che vanno da 0 a 255, sono tutti interi e quindi non troveremo mai 10.4 o 112.25. Comunque i decimali chiamati , floating point, sono un modo molto importante per rappresentare i pixel se i software di compositing li supportano. Il computer converte i numeri a 8 bit in floating point mappando 0-255 a 0-1.

Il valore floating point di zero è settato al valore intero di zero in 8 bit mentre il valore di floating point 1 è assegnato al valore in 8 bit di 255. Per i dati a 16 bit il valore 1.0 è settato a 65.535. Usare i float hanno vataggi e svantaggi. Vediamo quali sono.

floating point

Floating point: pro e contro.

Se proviamo a moltiplicare un valore 8 bit di grigio, ad esempio 128 per il 50% di un altro grigio (128) otteremmo un 128×128 che è sicuramente maggiore rispetto al valore 64 che volevamo raggiungere. Se invece facciamo la stessa operazione in float: 0.5 *0.5 fa 0.25 il quale convertito da float in intero è 64. Un altro svantaggio deriva dal clipping dell’utilizzo del sistema a 8 bit. Il floating point infatti non limita il valore a 255 variazioni, un immagine a 8 bit non potrebbe avere un rosso con valore 300 poichè questo verrebbe tagliato a 255, in compositing se proviamo ad addizionare due immagini con due bianchi, il pixel finale non sarà mai superiore al 255 poichè questo è il limite del canale a 8 bit. Se lavoriamo invece in float un valore di bianco 1 + un altro bianco 1 da 2 e quindi anche se il nostro monitor non riesce a mostrarci piu dell’ 1, il nostro valore è ben conservato e sappiamo bene che quel pixel ha una luminosità del doppio. Quando infatti lavoreremo sull’esposizione ci troveremo con brillanti risultati.

Uno dei problemi del floating point è l’enorme quantità di calcolo che richiede alla cpu/gpu rispetto al calcolo per interi. I computer di oggi sono comunque abbastanza moderni e non dovremmo preoccuparcene troppo.

Nel prossimo articolo vedremo le maschere e la moltiplicazione di immagini.

 

Bit Depth

Bit e Possibili variazioni.

Tutti avremo sicuramente sentito che i computer lavorano soltanto con 0 e 1. Questo è letteralmente vero. Ogni uno e ogni zero è chiamato bit ( binary digit – cifra binaria ) e questi bit sono organizzati in blocchi da 8 bit chiamati bytes. Alcuni esempi di bytes sono 010110101 e 10101101. Se raggruppi 8 bit in un byte, il numero possibile di combinazioni 1 e 0 è esattamente 256 e il loro valore oscilla tra 0 e 255. In altre parole, un byte da 8 bit può esprimere numeri interi che vanno da 0 a 255. Il numero di bit utilizzati prende appunto il nome di bit depth, profondità di bit. Se il numero di bit fosse ad esempio 10, avremmo 1024 variazioni. Se invece lo riducessimo a 4 ne avremmo 16. Più è grande la profondità dei bit, più numeri possiamo rappresentare.

bit

Per portare tutto questo discorso alle immagini digitali, se la luminosità di un pixel è espressa da un byte a 8 bit, allora possono esserci soltanto 256 valori di luminosità che vanno dal nero (0) al bianco (255). Questo è un range abbastanza buono. Per una immagine rgb a 8bit per canale, quindi, avremmo 256 variazioni per ogni canale e quindi moltiplicando 256 x 256 x 256 avremmo 16.7 milioni di colori. Potrebbero essere tanti ma ciò non è vero.

Bit e trilioni.

I programmi moderni di compositing supportano immagini a 16 bit. Quando la profondità dei bit è incrementata da 8 a 16, la variazioni possibili diventano 65.536 e non più solo 256. Potremmo avere quindi una variazione da nero a bianco con 65 mila intermedi e nessun nero o bianco sembrerebbe mai nero o bianco abbastanza. I colori di una immagine rgb a 16 bit infatti sarebbero 65536 ^3 e quindi più di 281 trilioni.

bit

Comunemente però siamo quasi sempre a contatto con immagini a 8 bit ma ci sono casi in cui anche noi ci rendiamo conto quanto siano importanti immagini ad almeno 10 bit. Sarà capitato a tutti di osservare un cielo perfettamente blu e tutti abbiamo notato quanto sia bella la natura nel rendere suggestivo il gradiente che va dall’orizzonte fino alla volta celeste. Beh una immagine a 8 bit non riuscirebbe a rendere questo cosi spettacolare poichè si verificherebbe il banding. I 256 stati di luminosità non riuscirebbero a coprire tutte le variazioni del gradiente reale.

Nel prossimo articolo vedremo cosa sono i floating point.

 

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