Utente:Hellis/Con perdita d'informazione: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Hellis (discussione | contributi)
m ha spostato Utente:Hellis/bozza2 a Utente:Hellis/Con perdita d'informazione
Hellis (discussione | contributi)
Nessun oggetto della modifica
Riga 1:
La compressione dati senzacon perdita d'informazione come detto nel capitolo precedente è una classe di algoritmi di compressione dati che non porta alla perdita di alcuna parte dell'informazione originale durante la fase di compressione/decompressione dei dati stessi. Come detto nel primo capitolo questa tipologia di compressione può essere applicato unicamente ad alcune tipologie di file dato che una modifica di un'immagine può non essere notata dall'occhio umano mentre anche una minima modifica a un programma può impedire il funzionamento del programma stesso.
 
Le tecniche di compressione che ricadono in questa categoria sfruttano il fatto che l'uomo non è in grado di riconoscere tutte le informazioni che gli vengono trasmesse dai suoi sensi. Quando si guarda un'immagine il cervello umano individua alcune caratteristiche salienti ma trascura la maggior parte dei particolari contenute nell'immagine e quindi le tecniche di compressione a perdita d'informazione cercano di individuare questi particolari per rimuoverli e rendere di conseguenza il file più piccolo. Analogo ragionamento viene svolto per i suoni, durante l'ascolto di un suono l'orecchio umano riesce a seguire l'andamento generale del suono ma molti dettagli del suono non vengono individuati e quindi possono essere eliminati senza compromettere la qualità dello stesso.
Le tecniche di compressione che ricadono in questa categoria sfruttano il fatto che la maggior parte dei file che vengono utilizzati contegno al loro interno una significativa ridondanza dei dati, sfruttando questa ridondanza e riorganizzando in modo più efficiente i dati si può ridurre la dimensione dei file nella maggior parte dei casi. E' da notate che non può esistere un algoritmo di compressione senza perdita d'informazione che comprime tutti i possibili file. Quest'affermazione può essere dimostrata tramite il seguente ragionamento logico.
In generale gli algoritmi di compressione a perdita d'informazione permettono di configurare dei parametri al fine di decidere quante informazioni vanno eliminate e quindi permettono di decidere il giusto rapporto di compressione in funzione della tipologia di file.
 
La maggior parte delle tecniche di compressione a perdita d'informazione effettuano delle trasformazioni dei dati al fine di poter discriminare le informazioni fondamentali dai particolari e poter quindi rimuovere i particolari senza compromettere le informazioni caratteristiche del file. Queste trasformazioni richiedono conoscenze matematiche non banali, al fine di mantenere l'approccio del libro semplice si cercherà di utilizzare il meno possibile le notazioni matematiche e queste comunque verranno sempre corredate da delle descrizioni che cercheranno di rendere chiaro il loro significato anche a chi non ha sufficienti basi matematiche per comprendere i formalismi utilizzati.
*Si supponga di aver un generico algoritmo chiamato '''A''', questo algoritmo comprime sempre i file almeno dell'1%.
*Si prende un generico file chiamato X e lo si comprime tramite A ottenendo '''Y'''=A(X).
*Il file Y dato che l'algoritmo A funziona sempre deve essere più piccolo di X di almeno 1%.
*Si supponga di comprimere Y tramite A ottenendo '''Y<sup>2</sup>'''=A(Y).
*Dato che A comprime sempre tutti i tipi di file Y<sup>2</sup> deve essere più piccolo di Y e quindi anche di X
*Si supponga di reitarare la compressione n volte ottenendo '''Y<sup>n</sup>'''
*Y<sup>n</sup> è piccolo di tutti gli altri file da Y<sup>n-1</sup> fino a X e continuano si potrebbe arrivare a un file di dimensione nulla che ovviamente è impossibile, dato che da un file nullo non si può pensare di ricostruire un file non nullo. Quindi non può esistere un algoritmo di compressione che comprime ogni tipo di file.
 
Nelle applicazioni reali comunque la maggior parte dei file hanno una loro intrinseca ridondanza dei dati e sfruttando questa ridondanza si può ridurre la dimensione dei file. Per esempio supponendo di avere un file contenente un testo in italiano il testo conterrà molto spesso le vocali a,e,i e raramente lettere come a x,y,z. Normalmente nel testo tutte le lettere dell'alfabeto sono rappresentate con 8 bit ma si potrebbe pensare di rappresentare con una notazione con pochi bit le vocali e di utilizzare una rappresentazione con più bit per le consonanti meno usate. Questo permetterebbe di ottenere in media un file più piccolo di quello di partenza. O per esempio si supponga di aver un'immagine con uno sfondo nero, in un immagine non compressa ogni punto dell'immagine è memorizzata con una sequenza di byte che identifica il colore.