In questo articolo cercherò di spiegare cosa sia effettivamente la compressione delle immagini, a cosa serva e quali siano gli effetti sulla qualità della foto.
Il modo migliore per essere sicuri di non fare errori è sempre capirne il funzionamento, perché, come capirete leggendo questo articolo, ogni immagine è diversa e la compressione va adattata ad essa e non viceversa. Se invece siete pigri e volete solo una ricetta, però senza garanzia, saltate direttamente alle conclusioni.
PremessaQuando qualcuno descrive una fotocamera digitale (compatta, prosumer o DSLR che sia) dice sempre il numero di
Megapixel che possiede.
Anche se in realtà è l’ottica a distinguere una macchina di qualità da un’altra, i megapixel sono importanti per capire la dimensione dell’immagine, lo spazio che occupa e quindi poter pensare alla sua compressione.
Questa unità di misura si riferisce al numero di milioni di pixel che formano il sensore (CCD) e che producono un’immagine la cui area avrà appunto quel numero di pixel
[1].
Riporto una tabella per capire meglio questo concetto:
Megapixel |
Pixel (Altezza x Larghezza) |
1 |
1280 x 768 |
2 |
1600 x 1200 |
3 |
2048 x 1536 |
4 |
2272 x 1704 |
5 |
2560 x 1920 |
6 |
3072 x 2048 |
10 |
4064 x 2704 |
Le misure sono approssimative e possono variare a seconda del rapporto delle dimensioni del sensore.
Una volta scattata una foto, questa viene compressa al volo dal microprocessore della fotocamera ed immagazzinata nella memoria a stato solido (Schede CF, SD, XD, ecc..).
Il tipo di compressione normalmente è scelto dall’utente nel menù della fotocamera e oltre a far diminuire lo spazio occupato può anche causare perdita di risoluzione (rimpicciolendo l’immagine) oppure di qualità (perdendo dettagli).
Oltre alla risoluzione spaziale del sensore (in pixel), incide sullo spazio occupato dall’immagine espresso in KByte anche la profondità del colore cioè a quanti colori diversi il CCD è sensibile.
Solitamente si parla di una profondità di colore di 24bit (8 bit per canale RGB) cioè di una sensibilità di 2^24=16,8
milioni colori diversi.
Per capire il perché dell’uso della compressione basta fare alcuni semplici calcoli.
Una singola immagine da 5 Megapixel occuperebbe senza compressione 2560 x 1920 x 3 cioè circa 15MByte.
[2]CompressioneA questo punto entrano in gioco gli algoritmi di compressione che possono essere di due tipi:
lossy o
lossless.
Per esempio se voglio comprimere la stringa
aaabbbcceccddddfdd un algoritmo lossless mi restituirà
3a3b2ce2c4df2d facendomi risparmiare 4 caratteri.
Con un algoritmo lossy invece un risultato potrebbe essere 3a3b4c6d, facendomi perdere il “dettaglio” della ‘
e’ e della ‘
f’ ma risparmiando ben 9 caratteri.
La compressione lossy viene attuata nel formato JPEG mentre la lossless nei formati Tiff, PNG ma anche nei formati RAW proprietari come il CRW o il CR2 della Canon che
usano la vecchia versione lossless del
JPEG.
[3]Se possedete una fotocamera che scatta in RAW provate a fotografare qualcosa di molto dettagliato e con moltissimi colori e poi, scegliendo sempre il formato RAW, una superficie omogenea. Vedrete che la prima foto avrà un peso maggiore della seconda perché il RAW, seppur comprimendo l’immagine, mantiene tutta l’informazione, presente in grande quantità nella prima rispetto che nella seconda.
Dato che, come si dice in gergo,
no-free-lunch bisogna cercare un trade-off tra qualità e spazio occupato, anche se scattare in RAW è di gran lunga più indicato per le modifiche off-line (bilanciamento del bianco, recupero fino ad 1 stop delle bruciature, ecc) che esso permette.
La compressione fatta su un PC con un programma di fotoritocco come Gimp o Photoshop il più delle volte sarà molto più accurata da una fatta in tempo reale sul microprocessore della propria compatta o anche sulle sofisticate DSLR.
C’è da dire anche che nel formato RAW lo spazio dei colori resta quello originale (24, 32, 48bit e oltre a seconda della fotocamera) mentre nel JPEG è fisso a 24bit.
Se volete però pubblicare la vostra foto da 5 o più Megapixel sul web è necessario un ridimensionamento ed una successiva compressione.
La prima mossa utile è quella di rimpicciolire l’immagine per portarla alle dimensioni volute, 720x600 per esempio ;D
Sembra un’operazione banale ma anche qui i risultati cambiano a seconda dell’algoritmo usato. Passare da 5 Megapixel a meno di 1 Mp comporta una notevole perdita di informazione e decidere cosa scartare e cosa no è importante, ma rimando gli approfondimenti sugli algoritmi di riduzione (Bilinear, Bicubic, ecc..) ad altra sede e consiglio solo di usare un buon software come Gimp o Photoshop e di non limitarsi al Paint…
Facendo un po’ di conti l’occupazione di un’immagine non compressa di 720x600 pixel moltiplicati per 24bit ovvero 3byte di profondità di colore è di circa 1.2 MByte.
Se volessimo, per esempio, portare l’immagine a 180KB, dovremmo comprimerla di circa un fattore 6 rispetto al peso originale.
A questo punto però entra in gioco il tipo di immagine: se questa è formata da pixel i cui vicini sono tutti diversi, anche una leggera compressione causerebbe una perdità di qualità percepibile in termini di sfocatura (perché il JPEG opera in frequenza
[4]).
Considerando comunque che con il JPEG si può arrivare fino ad un fattore di compressione 1:100 e che 2.5 è considerato FullQuality, per arrivare a 6 non servirà molto sforzo in termini di perdita di qualità in caso di foto “ordinarie”.
EsempiEcco alcuni esempi per capire quanto l’immagine può far variare lo spazio occupato e la percezione di perdita di qualità.
Partiamo subito dagli estremi:
Immagine Random, non comprimibile senza perdita di dettaglio [5]: 213x213 pixel e 24bit di colore, 136KB in formato non compresso, 100 KB con compressione lossless (Tiff ZIP)
|
|
JPEG al 100% (FullQuality): 132KB |
JPEG al 60%: 74KB |
|
JPEG al 10%: 22KB |
Immagine Monocromatica: 213x213 pixel e 24bit di colore 132KB in formato non compresso, 23 KB con compressione lossless (Tiff ZIP)
|
|
JPEG al 100% (FullQuality): 854Byte |
JPEG al 60%: 853Byte |
|
JPEG al 10%: 600ByteB |
Ora consideriamo due immagini “ordinarie”:
Immagine con molti dettagli: 213x213 pixel e 24bit di colore, 132KB in formato non compresso, 126 KB con Compressione lossless (Tiff ZIP)
|
|
JPEG al 100% (FullQuality): 51KB |
JPEG al 60%: 16KB |
Immagine con aree sfocate, più omogenea: 213x213 pixel e 24bit di colore, 132KB in formato non compresso, 110 KB con Compressione lossless (Tiff ZIP)
|
|
JPEG al 100% (FullQuality): 30KB |
JPEG al 60%: 15KB |
Si può notare una compressione di fattore 2.5 usando JPEG in FullQuality nell’immagine “ordinaria” con più dettagli, ed un fattore 4 nell’immagine più omogenea.
La prima immagine ordinaria compressa al 60% (fattore 8) presenta una lieve perdita di dettaglio visibile sulle ciglia e sulle piume del cappello.
ConclusioniPer lo scatto è sempre consigliabile il formato RAW per la grossa flessibilità nella postproduzione e per la possibilità di rimediare facilmente ad eventuali errori in fase di scatto.
Per la pubblicazione sul web la scelta dipende anche dal tipo di immagine.
Se questa è troppo densa di dettagli (e sparsi per tutta la foto) si potrà fare poco senza perde quelli più fini, forse sfocare alcune parti dell’immagine non interessanti in postproduzione può aiutare a mantenere i dettagli del soggetto, una volta compressa l’immagine.
Nella maggior parte dei casi fortunatamente il formato JPEG in modalità FullQuality può anche dimezzare il peso dell’immagine ed una compressione al 80% può essere un buon compromesso per mantenere tutti i dettagli importanti ed avere una buona compressione.
Usate sempre programmi di qualità come Gimp (gratuito) o Photoshop, sia per il ridimensionamento che per la compressione, ma lasciate stare il Paint e i programmi di visualizzazione immagini.
Durante il salvataggio, scegliete l’opzione di compressione ottimizzata per il web e controllate sempre lo spazio occupato dall’immagine finale in modo da usare sempre tutti i KB disponibili.
Se il programma di compressione visualizza la percentuale di compressione scegliete accuratamente il valore perché variazioni anche dell’ 1% possono farvi guadagnare qualità. Ad esempio se la vostra foto compressa al 70% pesa 150KB e al 80% ne pesa 200KB non fermatevi al 70% ma provate anche con i valori intermedi e fermatevi a quello che si avvicina di più ai 180KB.
Seguendo queste semplici regole difficilmente la vostra foto sarà penalizzata a causa di un errore di compressione, a meno che questa non sia stata di scarsa qualità già in partenza a causa dell’ottica o da un’impostazione errata della fotocamera in fase di scatto.
Immagini da:
http://www.cs.cmu.edu/~chuck/lennapg/
[1] In realtà i megapixel effettivi sono 1/3 a causa della presenza del filtro di Bayer e gli algoritmi di demosaicing si “inventano” il resto dei dati. Vedi articolo “
Retina e CCD”
[2] Un Byte sono 8 bit quindi la profondità di colore è di 24bit/8=3Byte
[3] http://libopenraw.freedesktop.org/wiki/Canon_CR2
[4] http://en.wikipedia.org/wiki/JPEG
[5] http://en.wikipedia.org/wiki/Kolmogorov_complexity
I campi contrassegnati con l'asterisco sono obbligatori.