Lossless graphic GPD
# Lossless graphic GPD

Lossless graphic GPD è un formato di file per la memorizzazione compressa delle immagini digitali grafiche (senza perdita di informazioni).

Mentre la caratteristica di un'immagine fotografica (RGB truecolor 24 bit) a tono continuo è quella di rappresentare molti dettagli, grazie a una distribuzione continua dei toni colore, le immagini digitali grafiche (loghi, cartoni animati, ecc) si distinguono per la omogeneità dei valori colore, su ampie superfici della immagine.

L'aspetto significativo è risultato essere una luminosità non distribuita ma "costante" su ampie zone della immagine. Per questa ragione l'analisi non si è fermata alla ricerca di maggiori ridondanze possibili per ogni singolo canale colore, ma si è spinta alla creazione di un aumento delle ridondanze, riguardante ogni singola tripletta per ogni singolo pixel. L'elemento portante, "quella parte di luminosità appartenente a tutti e tre i colori, cioè condivisa dai tre colori", risulta di conseguenza ad altissima ripetizione (ridondanza). Una volta individuato questo valore comune all'interno della tripletta colori, è risultato sufficiente salvare questo valore in un "quarto byte di appoggio", per poi scrivere una nuova tripletta colori utilizzando i rimanenti 3 byte per definire solo le distanze residue, dal valore unico di luminosità estratto e inserito nel quarto byte di appoggio. Uno dei 3 ulteriori byte che rappresentano i delta dal valore unico di luminosità, risulta di conseguenza sempre a zero, il che serve anche al riconoscimento della posizione del colore a delta 0.

## Metodo

Dalla tripletta RGB si passa a una quaterna (delta RGB + Luminosità) in grado di descrivere nel 4º byte il valore comune di luminosità, e nei byte 1º, 2º, 3º solamente i delta. Con uno dei tre valori di delta sempre a zero, uno zero utile anche al riconoscimento della posizione di quello specifico colore-valore nella tripletta originale da ricostruire in decompressione. L'aumento di massa (da 3 a 4 byte) in questo nuovo file (buffer) virtuale, viene quindi costantemente compensato dalla presenza in uno dei quattro byte con un valore sempre a zero.

Precedere la vera e propria compressione, con la creazione di un buffer virtuale a 4 byte con uno di questi sempre a zero, comprova che la nuova e diversa organizzazione dei valori permette a qualsiasi compressione senza perdita di operare in modo decisamente più efficiente, senza la perdita di alcuna informazione.

Nel caso di GPD, la compressione finale senza perdita utilizzata è LZMA licenziata da Igor Pavlov.

Questa preparazione alla compressione senza perdita, dedicata ai file grafici, permette inoltre di aggiungere funzioni di riduzione "quantità e valori" dei colori per ottenere ulteriori riduzioni di peso, pur mantenendo una percezione visiva (perceptual lossless) ancora non distinguibile dall'originale.

