Está en la página 1de 3

Duoc

 UC  
Escuela  de  Comunicación  
Ingeniería  y  Tecnología  en  Sonido  
Audio  Digital  
Profesor  Mario  Cáceres  

Compresión  de  datos  


 
La  tarea  de  la  compresión  de  datos  consiste  básicamente  de  dos  partes.  Primero  de  un  algoritmo  
de   codificación   que   toma   los   datos   a   comprimir   y   genera   una   representación   “comprimida”   (de  
preferencia   con   menos   bits)   y   segundo   de   algoritmo   decodificador   que   reconstruye   los   datos  
originales   o   alguna   aproximación   de   ellos   desde   la   representación   comprimida.   Estos   dos  
componentes   están   siempre   atados   debido   a     que   los   dos   deben   entender   la   representación  
comprimida  que  comparten.  
 
Podemos   distinguir   entre   algoritmos   sin   pérdida,   que   pueden   reconstruir   los   datos   originales   de  
manera   exacta   a   partir   de   los   datos   comprimidos,   y   algoritmos   con   pérdida,   que   sólo   pueden  
reconstruir  una  aproximación  de  los  datos  originales.  La  compresión  sin  pérdida  está   basada   en   el  
funcionamiento   de   los   software   de   compresión   como   WinRar   o   WinZip,   y   a   partir   de   ellos   se  
adapta  su  estructura  al  audio  digital.  
 
Compresión  sin  pérdida.  
 
Debido   a   que   no   se   puede   esperar   que   la   compresión   sea   eficaz   con   todos   los   datos   por   igual,  
todos  los  algoritmos  de  compresión  deben  asumir  que  existe  alguna  tendencia  (o  predicción)  en  
los  datos  de  entrada,  de  manera  que  algunos  de  ellos  sean  más  comunes  que  otros,  es  decir,  que  
existe  alguna  probabilidad  de  distribución  de  datos  similares  en  vez  de  que  todos  los  datos  sean  
aleatorios.   Esto   por   el   conocimiento   de   que   la   mayoría   de   los   archivos   de   computador   son  
ampliamente  redundantes,  o  sea,  contienen  la  misma  información  almacenada  muchas  veces.  De  
esta  forma  surgen  dos  elementos:  el  modelo  y  el  codificador.  El  modelo  captura  de  cierta  forma  la  
distribución  de  los  mensajes  al  conocer  o  al  descubrir  algo  acerca  de  la  estructura  de  la  entrada  de  
datos.   El   codificador   luego   toma   los   resultados   de   la   tendencia   de   probabilidad   generada   en   el  
modelo  para  crear  códigos,  acortando  los  datos  con  mayor  probabilidad  o  con  mayor  redundancia.  
 
Tomando  un  ejemplo  de  un  texto:  
 
Yo  no  quiero  ya  verte  tan  triste,  yo  no  quiero  saber  lo  que  hiciste  
 
La   frase   tiene   14   palabras,   hecha   de   53   letras,   13   espacios   y   una   coma.   Si   cada   letra,   espacio   o  
puntuación  toma  una  unidad  de  memoria,  obtenemos  un  archivo  de  67  unidades  de  tamaño.  Para  
reducir  el  tamaño  se  revisan  las  redundancias  y  nos  damos  cuenta  de  que:  
 
“yo”  aparece  2  veces  
“no”  aparece  2  veces  
“quiero”  aparece  2  veces  
 
Ignorando  las  diferencias  entre  mayúsculas  y  minúsculas,  una  parte  de  la  frase  es  redundante.  “Yo  
no   quiero”   servirá   como   base   de   la   frase   completa,   para   que   la   segunda   parte   de   la   ella   se  
construya  recurriendo  a  las  palabras  de  la  primera  y  cambiando  sólo  lo  necesario.  
 

1  
Duoc  UC  
Escuela  de  Comunicación  
Ingeniería  y  Tecnología  en  Sonido  
Audio  Digital  
Profesor  Mario  Cáceres  

La   mayoría   de   los   programas   de   compresión   utilizan   una   variación   del   algoritmo   basado-­‐en-­‐
diccionario   LZ   para   reducir   archivos.   “LZ”   está   referido   a   Lempel   y   Ziv,   los   creadores   del   algoritmo,  
y  “diccionario”  a  la  forma  de  catalogar  las  partes  del  dato.  
 
El   sistema   para   organizar   un   diccionario   varía,   pero   podría   ser   tan   simple   como   una   lista  
numerada.  Si  volvemos  a  la  frase,  tomamos  las  palabras  que  están  repetidas  y  las  listamos  en  un  
índice   numerado.   Luego,   simplemente   escribimos   el   número   en   vez   de   escribir   la   palabra  
completa.  
 
Si  este  es  el  diccionario:       1yo  
          2no  
          3quiero  
 
entonces  la  frase  ahora  se  escribe:  
 
1  2  3  ya  verte  tan  triste,  1  2  3  saber  lo  que  hiciste  
 
Si  se  conoce  el  sistema  es  posible  reconstruir  la  frase  original  usando  sólo  el  diccionario  y  el  patrón  
de  números.  Esto  es  lo  que  realiza  un  software  al  momento  de  descomprimir  el  archivo.  
 
Pero,  ¿cuánto  espacio  se  ha  ahorrado  con  este  sistema?  La  segunda  frase  es  claramente  más  corta  
que   la   primera,   pero   hay   que   tener   en   consideración   que   es   necesario   también   guardar   el  
diccionario  junto  con  el  archivo  para  poder  decodificarlo.  La  frase  original  tiene  67  caracteres,  la  
comprimida   tiene   53   caracteres   incluyendo   espacios   y   puntuación,   y   el   diccionario   tiene   13  
caracteres.   Esto   nos   da   un   total   de   66   unidades   de   memoria   para   el   archivo   comprimido,   sólo   una  
menos   que   el   original,   por   lo   que   el   método   de   reducción   no   sería   eficiente   si   sólo   tomará   en  
consideración   las   palabras   completas.   Lo   que   se   hace   en   realidad   es   buscar   los   patrones   en   los  
datos,   y,   con   el   fin   de   reducir   el   tamaño   del   archivo   todo   lo   que   sea   posible,   seleccionar  
cuidadosamente  qué  patrones  incluir  en  el  diccionario.  
 
En  el  mismo  ejemplo,  el  programa  se  daría  cuenta  en  primer  lugar  de  que  “yo”,  “no”  y  “quiero”  
están   repetidas,   pero   después   notaría   que   la   repetición   agrupa   a   estas   mismas   palabras   en   el  
mismo  orden,  todas  seguidas  por  un  espacio:  
 
yo_no_quiero_  
 
por  lo  tanto  podría  el  diccionario  tener  sólo  una  entrada  para  estas  tres  palabras.  Por  otro  lado,  se  
daría   cuenta   de   que   hay   dos   palabras   con   agrupación   de   letras   comunes:   “triste”   e   “hiciste”;  
entonces  haría  una  segunda  entrada  con  las  letras:  
 
iste  
 
Usando  estos  patrones  sería  posible  crear  un  nuevo  diccionario:  
 
1yo_no_quiero_  
2iste  

2  
Duoc  UC  
Escuela  de  Comunicación  
Ingeniería  y  Tecnología  en  Sonido  
Audio  Digital  
Profesor  Mario  Cáceres  

 
y  una  nueva  frase  comprimida:  
 
1ya  verte  tan  tr2,  1saber  lo  que  hic2  
 
de  tan  solo  37  unidades  de  memoria,  más  un  diccionario  de  19  caracteres  resulta  en  un  dato  de  56  
unidades   de   memoria.   Esta   es   sólo   una   manera   de   comprimir   la   frase   y   no   necesariamente   la   más  
eficiente,  pero  consigue  una  reducción  de  11  unidades  de  memoria.  
 
Esta   eficiencia   también   depende   del   algoritmo   específico   usado   por   el   códec   de   compresión.  
Algunos   programas   están   especialmente   diseñados   para   captar   patrones   de   ciertos   tipos   de  
archivos,   de   forma   que   los   pueden   comprimir   con   una   tasa   más   alta.   Otros   cuentan   con  
diccionarios  dentro  de  diccionarios,  que  comprimen  eficientemente  archivos  grandes  y  no  tan  bien  
los  pequeños.  
 
Si   pensamos   ahora   en   el   audio   digital,   cada   muestra   PCM   almacenada   contiene   una   palabra  
binaria   de   16,   24   o   más   bits;   por   lo   tanto,   es   esperable   que   surjan   patrones   a   partir   de   las  
combinaciones   de   “0”   y   “1”   que   se   encuentran   en   esas   palabras.   Los   codificadores   encuentran  
esos   patrones   y   van   creando   así   diccionarios   que   permitan   agrupar   las   repeticiones   dentro   del  
archivo,  y  ocupar  así  menos  espacio  en  su  almacenamiento.  

3  

También podría gustarte