QNA > C > Cosa Succede Quando Si Comprime Un'immagine?

Cosa succede quando si comprime un'immagine?

Ci sono due tipi di compressione, lossy e lossless.

Lossy significa che l'informazione viene buttata via, persa per sempre, e che non puoi mai recuperare esattamente l'immagine originale.

Lossless significa che non viene buttato via niente, e puoi decomprimere l'immagine e recuperare ogni singolo bit di informazione.

Ci sono molti algoritmi per comprimere le immagini, ma la cosa che fanno tutti è guardare attraverso l'immagine per vedere dove si verificano ripetizioni o dove dati più semplici possono sostituire strutture più grandi.

Un metodo comune di compressione è il run-length-encoding (RLE).

Immaginate di avere un'immagine come questa:

main-qimg-120a6b88dab1174c7af46c06be2d01bd

Nella memoria del computer, sta memorizzando i valori rosso, verde, blu e alfa per ogni singolo pixel. Sono 4 byte per pixel. L'immagine è larga 621 pixel e alta 414 pixel. Quindi ha bisogno di 621*414*4 byte per essere memorizzata. È circa 1 megabyte!

Ma guardate tutti quei pixel che sono uguali. Se guardate solo la prima riga, è bianco, bianco, bianco, bianco... e così via. In effetti, sono precisamente 621 pixel bianchi opachi identici uno accanto all'altro. Non sarebbe molto più efficiente dire semplicemente "621,bianco" per l'intera riga? Quando si decomprime, il computer può leggere il primo valore e fare altrettante copie dei quattro valori successivi. Se il valore 621 ha bisogno di due byte, allora in totale possiamo rappresentare la prima riga con 6 byte, piuttosto che 2484 che sarebbero necessari se memorizzassimo tutto. Questo è un risparmio incredibile!

Le righe al centro dell'immagine possono avere qualcosa come 96 bianco, 31 blu, 42 bianco, 25 blu, 14 rosso... e così via. È ancora meglio che memorizzare ogni pixel.

Ovviamente, nella realtà, è più complesso di quanto ho rappresentato, ma questa è l'idea generale. Su disco, il file PNG di quel logo è di circa 23 kilobyte. Questo è stato ridotto a poco più del 2% della dimensione originale. Molto bene!

Mentre un sistema di compressione così semplicistico funziona bene per cose come i loghi, che hanno ampie aree di colore piatto, non funziona bene per le immagini reali che hanno molte piccole variazioni da un pixel all'altro. In questo caso, ci sono tipi di file come JPEG, che divide l'immagine in piccoli blocchi, e vede se può rappresentare approssimativamente quel blocco con qualche tipo di gradiente o funzione matematica.

main-qimg-4e373fd0449efaae00409ec0f2c6ccc6

Di Kellyn

Come abilitare la compressione gzip :: Hai guardato qualche serie TV davvero buona e interessante ultimamente?
Link utili