Compressione senza perdita
La compressione senza perdita è il punto in cui nessun dato viene perso. Tutto ciò che viene inserito può essere recuperato perfettamente. Funziona bene con file di testo o binari in cui si noterà l'errore più piccolo.
La compressione dei file funziona prendendo il file e scansionando i pattern e traducendoli in qualcos'altro che occupa meno spazio.
Ad esempio "AAAAAAAA" potrebbe essere trasformato in "8A".
È vero che non funziona esattamente perché allora hai il problema se "8A" fosse in chiaro. Si decomprimerebbe il file e sarebbe sbagliato. Un buon punto di partenza è Wikipedia o l' algoritmo di compressione dei dati LZW .
Di seguito è riportato un semplice codice psuedo per questo copiato:
STRING = get input character
WHILE there are still input characters DO
CHARACTER = get input character
IF STRING+CHARACTER is in the string table then
STRING = STRING+character
ELSE
output the code for STRING
add STRING+CHARACTER to the string table
STRING = CHARACTER
END of IF
END of WHILE
output the code for STRING
Tutta la compressione utilizza un dizionario di ricerca che viene utilizzato per comprimere e decomprimere il file. Più grande è il dizionario, più è possibile comprimerlo, anche se ti imbatti nella Legge dei rendimenti decrescenti .
Vale anche la pena notare che la compressione non sempre produce un file più piccolo. Ci sono situazioni (con file di piccole dimensioni, o quando la compressione dei dati casuali ) che si non ottenere un file più piccolo dopo la compressione. Ci sono state alcune sfide divertenti relative alla capacità di comprimere i dati casuali.
Compressione "Lossy"
Quanto sopra riguarda principalmente la compressione senza perdita . Altri tipi di compressione utilizzati in applicazioni video / audio come MP3, JPG e h.264 sono esempi di compressione con perdita di dati .
La compressione con perdita funziona eliminando i dati che hanno meno probabilità di essere notati. Nell'audio questo suona circa 30.000 Hrz e inferiore a 100 Hrz, insieme ad altre varie cose. Nell'immagine (statica) rimuove varie cose e unisce i pixel insieme ai dati di scarto.
La compressione con perdita di dati è una forma di codifica di trasformazione . Calcola la media dei dati per ridurre le dimensioni complessive. Ad esempio un blocco di 10 pixel in un'immagine, tutti i colori leggermente diversi possono essere uniti in un unico colore e quindi compressi.
Nella compressione video spesso le istruzioni verranno posizionate solo per ridisegnare i pixel che sono stati modificati dall'ultimo fotogramma o fotogramma chiave .