Los estándares más comúnmente utilizados para la codificación y compresión de audio y vídeo fueron desarrollados por MPEG (Motion Picture Experts
Group, Grupo de expertos en imágenes en movimiento) bajo la dirección de
ISO. Por ello, estos estándares se suelen denominar MPEG.
MPEG abarca diversos estándares para diferentes aplicaciones. Por ejem- plo, las necesidades de la difusión de televisión de alta definición (HDTV, high
definition television) son diferentes de las de una videoconferencia, en las que
la señal emitida debe buscar su camino a través de diversas rutas de comunica- ciones que pueden tener capacidades limitadas. Y las necesidades de estas dos aplicaciones difieren, a su vez, de las necesidades que surgen al intentar alma- cenar vídeo de forma y manera que puedan reproducirse o saltarse las diversas secciones del mismo.
Las técnicas empleadas por MPEG caen fuera del alcance de este libro, pero en general las técnicas de compresión de vídeo están basadas en el concepto de que un vídeo se construye como una secuencia de imágenes, de forma muy similar a como se graban en una película las imágenes de un éxito cinemato- gráfico. Para comprimir tales secuencias, solo se codifican completamente algunas de las imágenes, a las que se denomina imágenes I. Las imágenes com- prendidas entre dos imágenes I sucesivas se codifican empleando técnicas de codificación relativa. Es decir, en lugar de codificar la imagen completa, solo se graban las variaciones con respecto a la imagen anterior. Las propias imágenes I se suelen comprimir utilizando técnicas similares a JPEG.
El sistema más conocido para la compresión de audio es MP3, que fue desarrollado como parte de los estándares MPEG. De hecho, el acrónimo MP3 es la abreviatura de MPEG capa 3. Entre otras técnicas de compresión, MP3 aprovecha las características del oído humano, eliminando todos los detalles que este no puede percibir. Una de esas propiedades, denominada enmascara- miento temporal, es que durante un corto periodo de tiempo después de per- cibirse un sonido de gran intensidad, el oído humano no puede detectar otros sonidos más débiles, que en condiciones normales sí que serían audibles. Otra característica, denominada enmascaramiento de frecuencia, es que un sonido de una determinada frecuencia tiende a enmascarar los sonidos más
73 1.8 Compresión de datos
débiles emitidos con frecuencias próximas a esa. Aprovechando tales caracte- rísticas, MP3 puede utilizarse para conseguir un grado significativo de compre- sión del audio, al mismo tiempo que se mantiene una calidad de sonido similar a la que puede conseguirse con un CD.
Utilizando las técnicas de compresión MPEG y MP3, las videocámaras son capaces de grabar hasta una hora de vídeo en 128MB de almacenamiento, mien- tras que los reproductores portátiles de música pueden almacenar hasta 400 can- ciones en un único GB. Pero, a diferencia de los objetivos de las técnicas de compresión en otros entornos, el objetivo al comprimir audio y vídeo no es nece- sariamente ahorrar espacio de almacenamiento. Hay otro objetivo igualmente importante, que es el de obtener una codificación que permita transmitir infor- mación a través de los actuales sistemas de comunicaciones con la suficiente rapidez como para poder presentar esa información a tiempo. Si cada trama de vídeo requiriera un MB de almacenamiento y hubiera que transmitir las tramas a través de una ruta de comunicaciones que solo pueda retransmitir un KB por segundo, no podría nunca mantenerse una videoconferencia. Por tanto, además de la calidad permitida de la reproducción, los sistemas de compresión de audio y vídeo suelen juzgarse según la velocidad de transmisión requerida para la comunicación temporizada de los datos. Estas velocidades normalmente se miden en bits por segundo (bps). Las unidades más comunes son los Kbps (kilo-bps, que equivale a mil bps), Mbps (mega-bps, que equivale a un millón de bps) y Gbps (giga-bps, igual a mil millones de bps). Utilizando técnicas MPEG, pueden retransmitirse presentaciones de vídeo a través de rutas de comunica- ciones que proporcionan tasas de transferencia de 40 Mbps. Generalmente, las grabaciones MP3 suelen requerir tasas de transferencia no superiores a 64 Kbps.
Cuestiones y ejercicios
1. Enumere cuatro técnicas genéricas de compresión. 2. ¿Cuál sería la versión codificada del mensaje
xyx yxxxy xyx yxxxy yxxxy
si utilizamos compresión LZW, partiendo del diccionario que contiene los símbolos x, y y el espacio (como se describe en el texto)?
3. ¿Por qué GIF es más adecuado que JPEG para codificar dibujos anima- dos en color?
4. Suponga que forma parte de un equipo que está diseñando una nave espacial que va a viajar a otros planetas y a enviar de vuelta imágenes fotográficas. ¿Sería buena idea comprimir las fotografías usando GIF o el estándar de línea base JPEG con el fin de reducir los recursos requeridos para almacenar y transmitir las imágenes?
5. ¿Qué característica del ojo humano aprovecha el estándar de línea base JPEG?
6. ¿Qué característica del oído humano aprovecha el estándar MP3? 7. Indique un fenómeno problemático que es común a la hora de codificar
1.9
Errores de comunicación
Cuando se intercambia información entre distintas partes de una computadora, o se transmite información desde la Tierra a la Luna, y viceversa, o también cuando se almacena simplemente la información, siempre existe la posibilidad de que el patrón de bits extraído al final no sea idéntico al patrón original. Las partículas de polvo o de grasa en la superficie magnética de grabación o los pro- blemas de funcionamiento de un circuito pueden hacer que los datos se graben o se lean de manera incorrecta. El ruido estático en una ruta de transmisión puede corromper determinadas partes de los datos y, en el caso de algunas tec- nologías, la radiación de fondo normal puede alterar los patrones almacenados en la memoria principal de la máquina.
Para resolver tales problemas, se han desarrollado diversas técnicas de codi- ficación que permiten la detección e incluso la corrección de errores. Hoy día, dado que esas técnicas están integradas en buena medida en los componentes internos de un sistema de computadoras, las personas que utilizan la máquina no suelen percatarse de su existencia. Y sin embargo, su presencia es impor- tante y representa una contribución significativa a la investigación científica. Es conveniente, por tanto, que investiguemos algunas de estas técnicas que permi- ten alcanzar el alto grado de fiabilidad que ofrecen los equipos actuales.
Bits de paridad
Un método simple para la detección de errores está basado en el principio de que si cada patrón de bits que está siendo manipulado tiene un número impar de 1s y nos encontramos con un patrón con un número par de 1s, podemos deducir que se ha producido algún tipo de error. Para utilizar este principio, necesitamos un sistema de codificación en el que cada patrón contenga un número impar de 1s. Esto puede conseguirse fácilmente añadiendo primero un bit adicional, denominado bit de paridad, a cada patrón de un determinado sistema de codificación ya disponible (por ejemplo, se puede añadir el bit de paridad en el extremo de mayor peso). En cada caso, asignamos el valor 1 o 0 a este nuevo bit, de modo que el patrón completo resultante tenga un número impar de 1s. Una vez modificado nuestro sistema de codificación de esta forma, el encontrarnos con un patrón con un número par de 1s indicará que se ha pro- ducido algún error y que el patrón que estamos manipulando es incorrecto.
En la Figura 1.28 se muestra cómo se podrían añadir bits de paridad a los códigos ASCII correspondientes a las letras A y F. Observe que el código para A pasa a ser 101000001 (bit de paridad 1) y que el de la letra F se convierte en 001000110 (bit de paridad igual 0). Aunque el patrón original de 8 bits para A tiene un número par de 1s y el patrón original de 8 bits de F tiene un número impar de 1s, los dos patrones de 9 bits resultantes tienen un número impar de 1s. Si aplicáramos esta técnica a todos los patrones ASCII de 8 bits, obtendría- mos un sistema de codificación de 9 bits en el que el encontrar un patrón de 9 bits con un número par de 1s indicaría sin ningún género de duda que se ha producido un error.
El sistema de paridad que acabamos de describir se denomina sistema de paridad impar, porque hemos diseñado nuestro sistema de modo que cada patrón correcto contenga un número impar de 1s. Otra técnica alternativa es
75 1.9 Errores de comunicación
la que se denomina de paridad par. En un sistema de paridad par se diseña cada patrón para que contenga un número par de 1s, de manera que la pre- sencia de errores estará indicada por la aparición de un patrón con un número impar de 1s.
Hoy día, es bastante usual que se empleen bits de paridad en la memoria principal de las computadoras. Aunque contemplamos estas máquinas como si tuvieran celdas de memoria con una capacidad de 8 bits, en realidad cada celda tiene una capacidad de 9 bits, empleando uno de esos bits como bit de paridad. Cada vez que se entrega un patrón de 8 bits a la circuitería de memoria para su almacenamiento, esa circuitería añade un bit de paridad y almacena el patrón de 9 bits resultante. Cuando el patrón se extrae posteriormente, la circuitería comprueba la paridad del patrón de 9 bits. Si no se detecta ningún error, la memoria elimina el bit de paridad y devuelve con toda tranquilidad el patrón de 8 bits restante. En caso contrario, la memoria devuelve los 8 bits de datos, pero con una advertencia de que el patrón que se devuelve puede no ser el mismo que el que originalmente se almacenó en la memoria.
Esta utilización tan sencilla y directa de los bits de paridad es simple, pero tiene sus limitaciones. Si un patrón tiene un número impar de 1s y se produ- jeran dos errores, el patrón seguirá teniendo un número impar de 1s, por lo que el sistema de paridad no detectará los errores que se han producido. De hecho, esta aplicación tan sencilla de los bits de paridad no puede detectar ningún conjunto de errores dentro de un patrón compuesto por un número par de errores.
En ocasiones, a los patrones de bits de gran longitud, como por ejemplo la cadena de bits que se graba en un sector de un disco magnético, se les aplica un método para minimizar este problema relativo a los errores no detectados. Lo que se hace en dicho caso es acompañar el patrón por un conjunto de bits de paridad que forman lo que se denomina byte de comprobación. Cada bit del byte de comprobación es un bit de paridad asociado con un conjunto concreto de bits dispersos a lo largo de todo el patrón. Por ejemplo, podría asociarse un bit de paridad con el bit inicial de cada byte que componga el patrón, mientras que otro bit de paridad podría estar asociado con el segundo bit de cada byte que forman el patrón. De esta forma, resulta bastante probable que se pueda detectar un conjunto de errores concentrado en el área del patrón original, ya que afectará a varios de los bits de paridad. Una serie de variantes de este con- cepto de los bytes de comprobación condujo hace ya tiempo al desarrollo de
Bit de
paridad Bit deparidad
1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0
Código ASCII para A , con un número par de 1s
Código ASCII para F con un número impar de 1s El patrón completo tiene
un número impar de 1s
El patrón completo tiene un número impar de 1s
esquemas de detección de errores conocidos como sumas de comprobación y códigos de redundancia cíclica (CRC).