1. Compressione senza perdita:
Questo tipo di compressione garantisce che il file originale possa essere perfettamente ricostruito dalla versione compressa. Viene utilizzato per file di testo, codice sorgente, fogli di calcolo e altri dati in cui anche un po 'di perdita di informazioni è inaccettabile. Le tecniche comuni includono:
* codifica di lunghezza (RLE): Questo semplice metodo sostituisce i caratteri o byte ripetuti consecutivi con una singola istanza del carattere e il numero di volte che si ripete. Ad esempio, "AAABBBCC" diventa "3a3b2c". È molto efficace per i dati con lunghe serie di valori identici.
* Coding Huffman: Ciò assegna codici più brevi a simboli che si verificano frequentemente e codici più lunghi a quelli meno frequenti. Sfruttando la distribuzione di probabilità dei simboli nei dati, raggiunge una compressione significativa. Ad esempio, nel testo inglese, la lettera "E" è molto comune, quindi riceverebbe un codice breve, mentre lettere meno frequenti come "Z" otterrebbero codici più lunghi.
* Algoritmi Lempel-Ziv (LZ): Questi sono metodi più sofisticati che identificano i modelli di ripetizione all'interno dei dati. Invece di codificare ogni simbolo individualmente, creano un dizionario di schemi ricorrenti e li codificano con brevi riferimenti. Le variazioni comuni includono LZ77, LZ78 e LZW (Lempel-Ziv-Welch), quest'ultimo utilizzato nel formato dell'immagine GIF. Il dizionario è in genere creato in modo dinamico poiché i dati vengono compressi e decompressi.
* Compressione basata sul dizionario: Questi metodi (inclusi gli algoritmi LZ) creano un dizionario di sequenze ripetute e li sostituiscono con codici brevi. Funzionano bene su dati che contiene molte ripetizioni.
* Burrows-Wheeler Transform (BWT): Questa tecnica riordina i dati per raggruppare i caratteri simili insieme, rendendo più facile per altri metodi di compressione funzionare in modo efficace. Viene spesso utilizzato insieme ad altri algoritmi come la trasformazione mossa-frontale e la codifica della lunghezza.
2. Compressione perdita:
Questo tipo di compressione raggiunge rapporti di compressione più elevati scartando alcuni dati considerati meno importanti. Ciò è accettabile per i dati multimediali (immagini, audio, video) in cui una certa perdita di fedeltà è tollerabile. Esempi includono:
* jpeg (immagini): Utilizza una trasformata discreta del coseno (DCT) per ridurre la quantità di dati necessari per rappresentare un'immagine. Scarta alcune informazioni ad alta frequenza, il che è meno evidente all'occhio umano.
* mp3 (audio): Usa la modellazione psicoacustica per scartare le frequenze mascherate da suoni più forti. Ciò consente una significativa riduzione della dimensione del file senza una grande perdita percepita nella qualità audio.
* mpeg (video): Utilizza tecniche come la compensazione del movimento per codificare solo i cambiamenti tra i frame, riducendo significativamente la ridondanza.
In sintesi:
I programmi di compressione dei file utilizzano una combinazione di algoritmi per identificare e sfruttare i licenziamenti nei dati. I metodi senza perdita garantiscono una perfetta ricostruzione, mentre i metodi di perdita sacrificano alcuni dati per rapporti di compressione più elevati. La scelta dell'algoritmo dipende dal tipo di dati compressi e dal livello accettabile di perdita di dati. Molti moderni programmi di compressione usano una combinazione di queste tecniche per ottimizzare l'efficienza di compressione.
software © www.354353.com