jueves, 24 de febrero de 2011

Hechos básicos de la compresión

Generalidades

Una de las muchas variantes de la Ley de Murphy nos dice “nunca se tiene suficiente

dinero, tiempo o memoria” en nuestro caso espacio en disco duro. Para solucionar la falta de

espacio se tienen básicamente tres opciones:

1-Comprar un disco duro más grande.

2-Borrar los archivos que ya no necesitamos, y que luego por una extraña razón los vamos a

necesitar nuevamente.

3-Comprimir los archivos.

De estas tres opciones la más económica y que menos problemas nos dará es la de

comprimir los archivos. El término de comprimir se refiere a tratar los archivos de tal manera

para que ocupen menos espacio. Además del obvio ahorro en espacio, es muy útil para transmitir

información a través de una red ya que se envía la misma información pero con menos bits.

La tasa (también llamada ratio) de compresión (porcentaje que se reduce el archivo

después de comprimirlo) varía según el tipo de archivo (procesador de texto, hoja de cálculo,

música, fotografías, videos, etc.) y el método (o modo) de compresión, ejemplo de esto último es

“la mejor compresión, compresión normal y compresión rápida” o sus equivalentes según el

programa que utilices. Otro factor a tomar en cuenta es el formato de compresión, ya que

diferentes formatos de compresión comprimen a distintas tasas, los más comunes son: zip, rar,

ace, cab, tar, jpg, mpg, DivX y mp3. Obviamente el comprimir un archivo ya comprimido no trae

ningún beneficio en términos de ahorro de espacio y de calidad.

Tipos de compresión

Existen dos tipos de compresión: compresión sin perdida y compresión con perdida. Cada

una de ellas tiene un uso específico y sus ventajas y desventajas.

Compresión sin perdida

Como su propio nombre lo indica no hay ninguna perdida de información al momento de

realizar la compresión. Se puede usar para comprimir cualquier tipo de archivo aunque la tasa de

compresión obtenida es normalmente media. Para llevar a cabo esto se busca información

repetida para trabajar sobre ella, utilizándose básicamente dos métodos:

a)-Buscar cadenas repetidas de caracteres: por ejemplo la secuencia CCCCCCCCC ocupa 9

bytes, comprimiéndola ocuparía solo 2 bytes ya que se representaría como 9C. Esto es un caso

perfecto ya que raramente se tiene este tipo de patrón excepto en las imágenes debido a la

repetición de colores en algunas zonas.

b)-Reconocer los caracteres o palabras que más se repiten: examina los caracteres que más se

repiten para codificarlos de manera más corta, aplicando por ejemplo el algoritmo de Huffman.

En el caso de repetición de una misma palabra, ésta se identifica con una clave (más corta que la

palabra que sustituye) y se inserta en donde se repita la misma palabra, de esta manera se

consigue un buen ahorro de espacio. Un ejemplo sería un documento que tratara sobre

computación, las palabras que probablemente se repetirían son computación, computadora,

Internet, web, siendo éstas palabras las que se identificarían con una clave.

A partir de Windows ME, los sistemas operativos Windows integran un programa para

comprimir/descomprimir archivos aunque es muy limitado: solo maneja archivos zip sin otras

opciones más que la de elegir el lugar de compresión/descompresión y la posibilidad de añadir

una contraseña, pero para salir del apuro es más que suficiente. Anteriormente había que utilizar

aplicaciones de terceros.

He aquí algunos nombres de programas para comprimir/descomprimir:


 Los dos últimos gratuitos los demás son de paga. Todos ellos son capaces de

comprimir/descomprimir zip, así como otros formatos y obviamente también tienen su formato

nativo de compresión. Algo común a todos los programas de compresión es que el número de

formatos que pueden descomprimir es siempre mayor al número de formatos que es capaz de

comprimir.

Compresión sin perdida en dibujos y fotografías

Aunque esta opción también existe para dibujo y fotografías no esperen tasas de

compresión muy elevadas. Los dos formatos utilizados son gif y tif (o tiff). Ambos tienen en

común en que aplican el algoritmo Lzw para comprimir sin perdida, pero hasta allí acaban las

similitudes. El formato gif esta orientado a imágenes que no tengan más de 256 colores, o sea,

dibujos o logotipos. Tif soporta calidad fotográfica, por lo que esta más orientado hacia la

fotografía.

Compresión con perdida

A diferencia del tipo de compresión anterior en la que es posible recuperar la información

comprimida con total fidelidad, en la compresión con perdida se pierde información y esta es

irrecuperable. Esto sería fatal para documentos de texto, hojas de cálculo o programas. Debido a

la perdida de información se obtienen altas tasas de compresión, alrededor de 10 veces más

pequeño que el archivo original sin perdida apreciable de calidad en el caso de la música y de

hasta 250 veces menos en videos. Se aplica en video, música y fotografía.

Aunque parezca absurdo el perder información, el resultado puede ser utilizable si la

compresión se hace con sumo cuidado. Esto es posible porque la compresión con perdida esta

basado en las limitaciones de la vista y oído humanos.

Compresión con perdida en video

¿Porqué comprimir un video? porque en su estado original una película de 1 hora puede

ocupar más de 100 GB, o sea, 15 DVD o más de 100 CD. Además del obvio ahorro de espacio al

comprimirla se volverá más fácil de transmitir a través de una red. Una vez comprimida puede

ocupar muchos menos espacio que antes. Como ya se menciono esto es debido a las limitaciones

de la vista humana. El ojo humano es muy limitado y estas limitaciones son aprovechadas con

creces:

a)-No es muy sensible a los cambios de respuesta en frecuencia por unidad de tiempo, por lo que

solo le bastan 24 imágenes por segundo para que el ojo lo interprete como una imagen continua.

Esto es debido a que cada fotograma queda “impreso” en el ojo una fracción de segundo.

b)- Debido a su estructura el ojo no es muy sensible a los detalles finos. Por ejemplo en la escena

donde el barco Titanic zarpa las gentes que están en el muelle despidiéndolo fueron diseñadas en

computadora sin rasgos faciales, es un detalle tan fino que nuestros ojos no percibieron la

diferencia.

c)-Interpretación de los colores: el ojo humano interpreta todos los colores como una

combinación de tres colores básicos (RGB, Red-Green-Blue, Rojo-Verde-Azul) por lo que no es

necesario producir toda la paleta de colores.

d)-En las imágenes en movimiento no todo cambia en el tiempo. Lo que cambia regularmente es

el primer plano (lo que enfoca la cámara) mientras que el fondo permanece sin cambios o casi sin

cambios. En este caso lo que se comprime es la información que permanece estática. Un caso

exagerado de esto son ciertos dibujos animados en donde los personajes solo mueven la boca y

los ojos al hablar mientras todo lo demás permanece estático. Un caso contrario en donde la

compresión sería mínima son las secuencias de las películas en donde tanto el primer plano como

el fondo cambian rápidamente, esto es típico de combates aéreos o de secuencias de acción.

Aunque lo anterior no es una limitación del ojo humano, si es muy utilizado debido a que se

ahorra bastante espacio con esta técnica.

En la siguiente tabla se resumen los principales formatos de compresión en video así

como el uso que se le da:
Formato de compresiónFormato de videoTiempo de reproducción
MPEG-1VCD(calidad VHS)70 minutos.
MPEG-2SVCD, DVD35-60 min.(SVCD), 2.5 hrs.DVD doble capa.
MPEG-4DivX120 min.de video de alta calidad en un CD.
MPEG: Motion Picture Expert Group. MPEG-3 no se utiliza en la actualidad.

Puede llegar a suceder que al momento de reproducir una película no puedas verla y es

porque posiblemente no tengas los códecs con que fue hecha. La palabra códec significa

codificador/decodificador y son necesarios debido a que ellos contienen la “fórmula” para poder

comprimir/descomprimir la película de forma correcta. Los códecs son compatibles con cualquier

reproductor que tengas instalado.

El programa regularmente utilizado para ver películas es Windows Media Player, si

buscan una alternativa les recomiendo ampliamente BSPlayer, el cual es gratuito y lo podrán

descargar de http://www.bsplayer.org/

Compresión con perdida en música

A diferencia del ojo, el oído es más sensible sin embargo no es capaz de extraer todos los

sonidos y esto es considerado como información redundante y por lo tanto desechable. Como

ejemplo tomaremos un CD de música el cual presenta las siguientes características: sonido

estéreo con una frecuencia de muestreo a 44 100 Hz, frecuencia de respuesta plana desde los 10

Hz hasta los 22 000 Hz (22 KHz), 16 bits. Con estas características una pieza extraída del CD

ocupa aproximadamente 1 411 200 bits por segundo. Sin embargo todos hemos escuchado

archivos mp3 a 128 kilobits por segundo (kbps, kilo significa 1 000) sin perdida apreciable en la

calidad. ¿Cómo es esto posible? nuevamente jugando con las limitaciones de nuestro oído:

a)-Umbral del oído humano: así se le conoce a los límites inferior y superior que nuestro oído ya

no puede percibir. El oído percibe sonidos desde los 20 Hz hasta los 20 KHz por lo que sonidos

por debajo y arriba de estas frecuencias ya no escuchamos. Hz (Hertz) es una medida que nos

dice cuantas vibraciones pasan por un punto en un segundo, por lo que 20 Hz significa 20

vibraciones por segundo y 20 KHz 20 000 vibraciones por segundo. A mayor número de

vibraciones por segundo el sonido será más agudo. A 20 Hz tenemos el sonido más fuerte de las

explosiones, mientras que los 20 KHz lo percibimos en el tintineo más fino (o agudo) de una

campanilla de cristal. Como vemos en el CD hay grabadas frecuencias que nosotros no podemos

percibir y que por lo tanto pueden ser descartadas sin sacrificar calidad.

b)-Efecto máscara o enmascaramiento: se refiere sencillamente a que ciertos sonidos más fuertes

tapan u ocultan a otros más suaves y que por lo tanto no alcanzamos a escuchar. Estos sonidos

tapados son, por lo tanto, eliminados con el consiguiente ahorro de espacio.

c)-Utilización del algoritmo de Huffman: aunque esta técnica es propia de la compresión sin

perdida, también es aplicable a la compresión de sonido. Lo que hace es revisar el archivo en

búsqueda de cadenas repetidas de datos y guarda solo una copia de cada una de ellas con una

referencia a la cantidad de veces que aparece. Esto es aplicado con bastante éxito a los coros de la

música ya que ellos regularmente interpretan la misma estrofa en varias partes de la canción.

Como se menciono anteriormente a 128 kbps se tiene una buena calidad de sonido, ¿pero

que significa exactamente este número? como su propio enunciado lo dice es que esa pieza

musical es codificada (convertida a mp3) y descodificada (reproducida) a un ritmo de 128

kilobits por segundo. A esto se le llama bitrate: cantidad de espacio (en kilobits) que se necesita

para almacenar un segundo de música y existen los tipos fijo y variable.

a)-Bitrate fijo o constante: al momento de realizar la conversión a mp3 el programa solicita el

bitrate y si seleccionamos fijo, éste se va a mantener constante durante toda la conversión.

b)-Bitrate variable: esta opción permite configurar un valor mínimo y máximo de bitrate. Así el

programa de conversión a mp3 decide sobre la “marcha” que bitrate aplicar. Por ejemplo si la

canción contiene unos instantes de silencio o donde se escuchan pocos instrumentos se aplica el

bitrate mínimo, mientras que el bitrate máximo es aplicado cuando se escuchan todos los

instrumentos. Este tipo de bitrate es el que en teoría te debe de dar la mejor relación

calidad/tamaño del archivo.

El tamaño del bitrate aplicado va a repercutir directamente en la calidad del archivo y en

su tamaño, la regla es simple: a mayor bitrate mayor calidad de sonido pero también mayor

tamaño. Considero que a 128 kbps se obtiene una buena relación entre calidad de sonido y

tamaño del archivo.

Los formatos más utilizados son mp3, wma, ogg y mp3pro. El programa por excelencia

para reproducir mp3 es sin lugar a dudas Winamp (gratuito, http://www.winamp.com/), aunque le

siguen de cerca Windows Media Player (integrado en el sistema operativo) y Quintaessential

Player (gratuito, http://www.quinnware.com/). Por cierto, mp3 significa MPEG-1 Layer 3.

Un programa útil para convertir a mp3, y que además es gratuito y lo puedes configurar al

idioma español, es CD-Ex y lo puedes descargar de http://cdexos.sourceforge.net/

Otro programa recomendable es FreeRip, que también es gratuito pero en inglés, el cual lo podrás

descargar de http://www.mgshareware.com/frmmain.shtml

Compresión con perdida en fotografía

El formato indiscutible de este tipo de compresión es sin ninguna duda jpg (JPEG: Joint

Photographics Expert Group). Permite ajustar diferentes niveles de compresión según la calidad

que queramos aplicar al archivo. Esta especialmente orientado a la fotografía ya que permite

almacenar hasta 16 700 000 colores. Para comprimirlas utiliza el algoritmo de Huffman, es decir,

busca un patrón repetitivo de valores (colores en este caso) para guardar solo una vez el valor

para posteriormente repetirlo en donde sea necesario.

Hay que tener especial cuidado a la hora de retocar una fotografía en jpg porque si la

volvemos a guardar en jpg va a ver una perdida apreciable de calidad debido a que estamos

recomprimiendo una imagen ya comprimida. Por eso lo mejor es guardar las fotografías

originales en un formato no comprimido (como bmp por ejemplo) o con compresión sin perdida

(tiff con Lzw), si esto no es posible guardala en jpg pero con la menor compresión posible. Por lo

tanto hay que hacer énfasis en la tasa de compresión que vayamos a aplicar, ya que si aplicamos

mucha compresión el archivo resultante será de tamaño pequeño pero la fotografía presentara

cuadros visibles que agrupan mismos colores (imagen pixelada) o manchas; en cambio si

elegimos aplicar poca compresión la imagen va a ser de gran calidad pero con un tamaño de

archivo grande. Vas a tener que decidir que es más importante: la calidad o el espacio que ocupe

según el uso que le vayas a dar a la fotografía, no es lo mismo comprimir una fotografía para

“colgar” en Internet que para imprimirla, en este último caso la compresión tiene que ser mínima

para obtener una buena calidad en la impresión.
Prácticamente cualquier programa de retoque de imágenes que se precie como tal debe ser

capaz de abrir y guardar sin ningún problema archivos en formato jpg, eso sí, los más básicos no

tienen la capacidad de poder ajustar manualmente la compresión.

Un programa muy recomendable para el retoque de imágenes es The GIMP, una

aplicación totalmente gratuita que ha saltado de Linux a Windows. Debido a la cantidad de

funciones que posee es una alternativa muy válida a otros programas de paga y que muchos

usuarios no nos podemos costear debido a sus altos precios. Tiene una función que se me hace

especialmente útil para guardar archivos en jpg: mediante un botón deslizante es posible ajustar

la tasa de compresión a la vez que vemos el tamaño del archivo resultante y una vista previa de la

fotografía si decidiéramos aplicar esa tasa de compresión, ni que decir lo útil que es para aquellos

que se inician y no tienen ni idea de que tanto comprimir la imagen.

Para su instalación es necesario descargar GTK (componentes que The GIMP necesita

para trabajar) y The GIMP (que es el programa). Instalalos exactamente en este orden, pero antes

descargalos de http://gimp-win.sourceforge.net/stable.html

Conclusiones

La finalidad de comprimir es ahorrar espacio y poder transmitir la misma cantidad de

información en un menor tiempo a través de una red.

La compresión sin perdida esta más orientada hacia archivos que no sean de música,

fotografía y video, ya que la perdida de información en este tipo de archivos sería fatal. La

compresión con perdida logra altísimas cotas de compresión a cambio de perder información y

esta perdida es irrecuperable por lo que lo más conveniente es guardar una copia sin ningún tipo

de compresión o con compresión sin perdida. Entre mayor sea la tasa de compresión menor va a

ser el tamaño del archivo pero a costa de perder calidad y viceversa.

Los métodos anteriormente mencionados para lograr la compresión (tanto en la

compresión sin perdida como con la de perdida) no son los únicos existentes pero sí son los más

socorridos. Cada compañía de software desarrolla métodos propios para mejorar la compresión y

por tanto están en constante evolución.

Hasta ahora solo he mencionado la compresión por software pero también es justo

mencionar que también existe compresión por hardware y esta es muy superior, en cuanto a

rapidez, que la compresión por software. Esto es debido a que el mismo hardware es el encargado

de realizar la compresión quitando esta carga de trabajo al procesador que ahora se puede dedicar

a otras tareas. Un ejemplo obligado son las tarjetas de video: su procesador (GPU) le quita el

trabajo al procesador principal (CPU) de tener que estar procesando las secuencias de acción de

los videojuegos actuales y de la compresión/descompresión de las películas. He allí el motivo del

alto precio de las tarjetas de video: es como tener una computadora dentro de otra computadora.

0 comentarios:

Publicar un comentario