Compressió de dades

La compressió de dades, aplicada al món de la informàtica, consisteix en el procés de codificació de dades utilitzant el mínim nombre possible de bits, o unitats d'informació. Això es pot aconseguir gràcies a la utilització d'esquemes de codificat o còdecs. La compressió només funciona si tant l'emissor com el receptor de la informació del missatge han acordat a priori un esquema concret de codificat. Per exemple, podríem acordar que a partir d'aquesta línia de text escriurem cp en comptes de compressió, això ens estalviaria uns quants bits i faria que l'arxiu final ocupes menys. Però perquè el lector d'aquest article comprengui el significat de cp hem d'informar-lo amb anterioritat (ha de conèixer l'esquema de codificat).

Principalment, la compressió és possible gràcies al fet que al món real, les dades són molt redundants, o bé són representades en una "forma humana", és a dir, fàcils d'interpretar per tots nosaltres però no representats d'una manera òptima. La compressió és important perquè ens permet d'estalviar recursos que resultarien cars, com ara espai de disc o amplada de banda en la nostra xarxa. Per això s'han creat diversos tipus d'algorismes de compressió segons el tipus de dades que volem comprimir. Bàsicament, es podrien dividir entre els que tenen pèrdues per a imatge, so i vídeo, i els que són sense pèrdua per desar dades, programes, o informació que no pugui ser alterada.

La compressió és un cas particular de la codificació, que destaca perquè el codi resultant té menor mida que l'original.

La compressió de dades consisteix en la reducció del volum d'informació tractable (processar, transmetre o gravar). En principi, amb la compressió es pretén transportar la mateixa informació, però utilitzant la menor quantitat d'espai.

L'espai que ocupa una informació codificada (dades, senyal digital, etc.) Sense compressió és el quocient entre la freqüència de mostreig i la resolució. Per tant, com més bits s'empren major serà la mida del fitxer. No obstant això, la resolució ve imposada pel sistema digital amb què es treballa i no es pot alterar el nombre de bits a voluntat, de manera que s'utilitza la compressió, per transmetre la mateixa quantitat d'informació que ocuparia una gran resolució en un nombre inferior de bits.

La compressió de dades es basa fonamentalment a buscar repeticions en sèries de dades per després emmagatzemar només la dada amb el nombre de vegades que es repeteix. Així, per exemple, si en un fitxer apareix una seqüència com "aaaaaa", ocupant 6 bytes es podria emmagatzemar simplement "6A" que ocupa només 2 bytes, en algorisme RLE.

En realitat, el procés és molt més complex, ja que rarament s'aconsegueix trobar patrons de repetició tan exactes (excepte en algunes imatges). S'utilitzen algorismes de compressió

Algorismes de compressió 
 D'una banda, alguns busquen sèries llargues que després codifiquen en formes més breus.
 D'altra banda, alguns algorismes, com l'algorisme de Huffman, examinen els caràcters més repetits per després codificar de forma més curta els que més es repeteixen.
 Altres, com el LZW, construeixen un diccionari amb els patrons trobats, als quals es fa referència de manera posterior.
 També aquesta una manera de comprimir que és codificant els bytes parells és molt senzill i fàcil d'entendre.

A l'hora de parlar de compressió cal tenir presents dos conceptes:
 Redundància: Dades que són repetitives o previsibles
 Entropia: La informació nova o essencial que es defineix com la diferència entre la quantitat total de dades d'un missatge i la seva redundància.

La informació que transmeten les dades pot ser de tres tipus:
 Redundant: informació repetitiva o previsible.
 Irrellevant: informació que no podem apreciar i l'eliminació per tant no afecta el contingut del missatge. Per exemple, si les freqüències que és capaç de captar l'oïda humana estan entre 16/20 Hz i 16.000/20.000 Hz, serien irrellevants aquelles freqüències que estiguessin per sota o per sobre d'aquests valors.
 Bàsica: la rellevant. La que no és ni redundant ni irrellevant. La que ha de ser transmesa perquè es pugui reconstruir el senyal.

Tenint en compte aquests tres tipus d'informació, s'estableixen tres tipologies de compressió de la informació:
 Sense pèrdues reals: és a dir, transmetent tota l'entropia del missatge (tota la informació bàsica i irrellevant, però eliminant la redundant).
 Subjectivament sense pèrdues: és a dir, a més d'eliminar la informació redundant s'elimina també la irrellevant.
 Subjectivament amb pèrdues: s'elimina certa quantitat d'informació bàsica, de manera que el missatge es reconstruirà amb errors perceptibles però tolerables (per exemple: la videoconferència).

Diferències entre compressió amb pèrdua i sense 
L'objectiu de la codificació és sempre reduir la mida de la informació, intentant que aquesta reducció de mida no afecti el contingut. No obstant això, la reducció de dades pot afectar o no a la qualitat de la informació:
 Compressió sense pèrdua: les dades abans i després de comprimir-són exactes a la compressió sense pèrdua. En el cas de la compressió sense pèrdua més compressió només implica més temps de procés. El bitrate sempre és variable a la compressió sense pèrdua. S'utilitza principalment en la compressió de text.
 Un algorisme de compressió amb pèrdua pot eliminar dades per reduir encara més la mida, de manera que se sol reduir la qualitat. A la compressió amb pèrdua el  bit rate  pot ser constant o variable. Cal tenir en compte que una vegada realitzada la compressió, no es pot obtenir el senyal original, encara que sí una aproximació la semblança amb l'original dependrà del tipus de compressió. S'utilitza principalment en la compressió d'imatge, vídeo i so.

Referències

Vegeu també 
 7z
 Bzip2
 Gzip
 LHA
 RAR

Enllaços externs 

 Fonaments de la compressió d'imatges 
 vhooraz/tesis_wavelet.pdf Processament Digital de Senyals Acústics utilitzant Wavelets.
 Llista de Programes per comprimir Dades 
 White paper sobre COMPRESSIÓ 
 de manuals d'algorismes de compressió sense pèrdua