Cap 3
Cap 3
Cap 3
3
Codificación de la fuente
y procesamiento de datos
3.1. INTRODUCCIÓN
Las grandes cantidades de información multimedial que se generan a diario y que requieren
transmitirse, superan con creces las capacidades de almacenamiento y transporte actuales, aún
con la aparición de nuevos dispositivos.
Los requisitos tecnológicos para estas aplicaciones suponen un avance en temas como:
Procesamiento de señales digitales (compresión, filtrado, etc.) y redes de comunicaciones (ancho
de banda cada vez más elevado o técnicas de transmisión adaptable a los distintos flujos de
información). Debido a estos avances, vemos como cada vez se hacen más necesarias las
técnicas de compresión de la información digital.
Por ejemplo, una imagen de dimensiones típicas ( 1024 × 1024 píxeles en true color) requieren
3MB para su almacenamiento. Incluso en RDSI con un ancho de banda de 64 K bits seg , esta
imagen requeriría cerca de 7 minutos para su transmisión. Una posible solución consiste en
aumentar el ancho de banda de la red (usando fibra óptica, por ejemplo); otra opción es utilizar
algún método de compresión, lo cual representa una forma mucho más económica e inmediata
en casi todos los casos. Si conseguimos una compresión 10 : 1 con respecto a la imagen
original, su almacenamiento tan sólo precisará de 300 KB y la demora en la transmisión se
reduce a menos de 38 seg . Esto se traduce en un mejor aprovechamiento de la red y además a
un costo realmente bajo.
Ventajas de la compresión
47
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
• Modelo: Es capaz de determinar las probabilidades de los símbolos del alfabeto que
componen el mensaje que se debe codificar, y de aprovechar la estructura de los datos para
esta estimación.
• Codificador: encargado de asignar palabras del nuevo código a cada símbolo del mensaje
fuente, en función de las probabilidades que el modelo le entregue.
La codificación de la entropía
Los datos que se comprimirán se ven como secuencia de los valores digitales de estos datos, y no
se hace caso a su semántica. Es sin pérdida porque los datos antes de la codificación son
idénticos a los datos después de descodificar; no se pierde ninguna información. Así la
codificación de la Run-length, por ejemplo, se puede utilizar para la compresión de cualquier
tipo de datos en un sistema de ficheros: texto, imágenes inmóviles para el facsímil, o como parte
de la película o de la codificación de audio.
La codificación de la fuente
El grado de compresión alcanzable con esta técnica a menudo depende del medio. En el caso de
la compresión con pérdida, existe una relación entre los datos sin codificar y los datos
decodificados; las secuencias de datos son similares pero no idénticas. Las características del
medio pueden ser explotadas.
En el caso de imágenes inmóviles, se utilizan las redundancias espaciales para comprimir con
una técnica de predicción. Otras técnicas realizan una transformación del dominio espacial al
dominio de la frecuencia usando la transformada del coseno. Las frecuencias bajas, definen el
color promedio, y las frecuencias altas contiene los bordes agudos; por lo tanto, las frecuencias
bajas son mucho más importantes que las frecuencias altas, una característica que se puede
utilizar para la compresión.
Compresión hibrida
Es utilizada a menudo en los datos de audio y de video en sistemas de multimedia; se compone
de diversas técnicas.
48
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
• Con pérdidas (LOSSY): Este grupo lo conforman todos aquellos métodos que durante el
proceso de compresión pierden información en forma involuntaria (como errores de
redondeo) o voluntaria (desestimación de ciertos valores). El proceso de compresión no es
totalmente reversible, es decir, si procedemos en forma inversa al algoritmo de compresión
(descompresión), no obtenemos los datos originales. En compresión de imágenes, el método
con pérdidas más utilizado en la actualidad son las versiones del estándar JPEG.
• Sin pérdidas (LOSSLESS): encontramos todos aquellos métodos que comprimen la entrada
tal cual y al aplicar el proceso inverso (descompresión) obtenemos una copia idéntica a la
entrada del compresor. Se caracterizan porque la tasa de compresión que proporcionan está
limitada por la entropía de la señal original.
Comparación
Los métodos sin pérdidas tienen muy limitado índice de compresión, pueden llegar a comprimir
un archivo, en valores típicos de 5 : 1 o menos; sin embargo los métodos de compresión con
pérdidas pueden obtenerse sin problemas índices de compresión superiores a 20 : 1 y tienen su
principal aplicación en la compresión de imágenes digitales, video y sonido, debido a que estos
métodos explotan las limitaciones de percepción de los sentidos humanos.
Por ejemplo, en imágenes, se aprovecha notablemente el hecho de que en el ojo humano las
pequeñas variaciones de color se perciben con menor precisión que los cambios en el brillo, de
forma que podemos reducir la cantidad de información destinada a los cambios de color, y
mantener la información destinada a los cambios de brillo sin que se aprecien cambios notorios.
Compresión sin pérdidas
La mayoría de información que usamos es altamente correlacionada. En otras palabras, ella
inherentemente contiene redundancia. Lo que indica que es posible usar compresión sin pérdida
de información o con pérdida de información. El mayor requerimiento de la compresión es poder
rápidamente intercambiar entre los datos comprimidos y los originales.
Algunas de las técnicas de compresión sin pérdidas, son: Run-length, Árbol de Huffman,
codificación de longitud variable, codificación aritmética, codificación basada en diccionarios,
etc.
• RLE (Run Length Encoding): Es una técnica eficiente sólo en aplicaciones que involucren
muchos caracteres repetidos; ejemplo, en una imagen sustituye la información gráfica de
píxeles que se repiten por el valor del color de uno de ellos y la posición de cada uno de los
puntos que lo utilizan. Esta técnica es eficiente cuando dentro del fichero gráfico que se va a
comprimir se repite un byte sucesivamente un número grande de veces. En estos casos,
todos los bytes iguales se sustituyen por dos, el primero es un byte de escape que indica el
número de veces que se repite el segundo.
Existen diferentes formas de implementar RLE. Una de ellas, la más ineficiente, es utilizar
un carácter, llamado comúnmente DLE, que sirva para indicar que se ha producido una
repetición de un carácter. Otra es utilizando un carácter "centinela", con un bit que indica si
la siguiente información es acerca de una repetición o son datos sin repetición.
Este método permite obtener un alto nivel de compresión en imágenes que contengan
muchas áreas del mismo color como los dibujos, sin que se produzcan pérdidas de calidad.
El problema surge cuando los colores de la imagen son muy dispares, caso en el que se
pueden obtener archivos de mayor tamaño que los originales.
RLE es el algoritmo utilizado en los formatos gráficos BMP y PCX, aunque cada uno usa un
método distinto de implementación.
El siguiente ejemplo ilustra la codificación RLE para una secuencia de datos que tiene
valores frecuentes de ceros. Cada vez que un cero se encuentra en los datos de entrada de
información, dos valores se escriben en el fichero de salida: el primero de estos valores es
49
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
EJEMPLO 3.1._______________________________________________________________________
La codificación Huffman convierte los valores de brillo de los píxeles de la imagen original
en nuevos códigos de longitud variable, basado en su frecuencia de ocurrencia en la imagen.
De esta manera, a los valores de brillo que ocurren más frecuentemente se les asignan los
códigos más cortos y a los valores de brillo que ocurren con menos frecuencia se les asignan
los códigos más largos. El resultado es que la imagen comprimida requerirá de menos bits
para describir la imagen original.
El esquema de compresión Huffman comienza mirando el histograma de brillo de una
imagen. Con el histograma, se tiene disponible la frecuencia de ocurrencia para cada brillo
en la imagen. Ordenando los valores de brillo por sus frecuencias de ocurrencia, se obtiene
una lista donde el primer valor se encuentra más a menudo en la imagen, y el último valor se
encuentra menos en dicha imagen. Con esta lista, el codificador Huffman asigna nuevos
códigos a cada valor de brillo. Los códigos asignados son de longitudes variables; los
códigos más cortos son asignados a los primeros (más frecuentes) valores m de la lista y,
eventualmente, los códigos más largos se asignan a los últimos (menos frecuentes) valores
de la lista. Finalmente, la imagen comprimida se crea sustituyendo los nuevos códigos de
valores de brillo de longitud variable por los códigos de valores de brillo originales de 1
byte. Por supuesto, la lista de códigos Huffman que acopla los valores de brillo originales a
sus nuevos códigos Huffman variables se debe añadir a la imagen para el uso de la operación
de descompresión Huffman.
La siguiente figura muestra una imagen de 640 píxeles por 480 líneas, donde cada píxel
es representado por un valor de brillo de tres bits. El histograma de la siguiente imagen
muestra el número real de píxeles en la imagen con cada uno de los ocho valores de brillo. El
brillo se ordena basado en sus frecuencias de ocurrencia y entonces se combina en un árbol
de Huffman. Aunque todos los píxeles en la imagen original fueron codificados como
valores de brillo de tres bits, los códigos Huffman son tan pequeños como un bit y pueden
ser tan grandes como 7 bits. El código Huffman más largo nunca puede ser mayor que el
número de valores de brillo diferentes en la imagen (en este caso 8 ) menos 1 . Aunque una
imagen codificada con Huffman puede tener un poco de brillo con códigos muy largos, sus
frecuencias de ocurrencia siempre son estadísticamente bajas.
50
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Los códigos Huffman son asignados creando un árbol de Huffman que hace combinaciones
con los valores de brillo basado en la suma de las frecuencias de ocurrencia. El árbol de
Huffman asegura que los códigos más largos se asignen a los brillos menos frecuentes y los
códigos más cortos se asignen a los brillos más frecuentes. Usando el brillo clasificado en
orden de sus frecuencias de ocurrencia, los dos del final de la lista (menos frecuentes) se
combinan y se etiquetan como 0 y 1 . Los brillos combinados son representados por la
suma de las frecuencias de ocurrencia. Entonces, se determinan y se combinan las próximas
dos frecuencias de ocurrencia más bajas. De nuevo, el siguiente par se etiqueta 0 y 1 , y es
representado por la suma de las frecuencias de ocurrencia. Esto continúa hasta que todo el
brillo se ha combinado. El resultado es un árbol que, cuando se sigue del final hasta el
principio, indica el nuevo código Huffman binario para cada brillo en la imagen.
La cantidad de datos de la imagen original puede calcularse como 640 × 480 × 3 bits. La
cantidad de datos de la imagen codificada por Huffman puede calcularse como la suma de
las ocho frecuencias de ocurrencia multiplicadas por el respectivo número de bits en su
código. La descompresión de imágenes Huffman invierte el proceso de compresión
sustituyendo los valores de brillo originales de longitud fija de un byte por valores
codificados de longitud variable. La imagen original se reconstruye exactamente. La
compresión de imágenes Huffman generalmente proporcionará razones de compresión de
alrededor de 1.5 : 1 a 2 : 1 .
51
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Es posible definir un árbol de Huffman canónico; este árbol canónico puede ser
representado en forma muy compacta, transmitiendo el bit de longitud de cada código. Esta
técnica es usada en la mayoría de los archivadores (pkzip, winzip, Arj, etc.).
Un código de Huffman es un código de longitud variable VLC, en el que la longitud de
cada código depende de la frecuencia relativa de cada símbolo en el texto: cuanto más
frecuente sea un símbolo, su código asociado será más corto. Además este código es libre de
prefijos; es decir, ningún código forma la primera parte de otro código; esto permite que los
mensajes codificados sean no ambiguos.
El algoritmo de Huffman 1 es capaz de producir un código óptimo en el sentido de mínima
redundancia para el código de entrada. Esta comprensión solo será óptima si las
probabilidades de todos los símbolos de entrada son potencias enteras de 12 . El peor de
todos los casos se presentará cuando algunos de los símbolos posea una probabilidad
cercana al 100% .
Se basa en las reglas de D. Huffman-1952, que señala los siguientes pasos: 1) Se ordenan
los puntos de acuerdo con la probabilidad de ocurrencia del evento. 2) Se toman los 2
eventos de menor probabilidad. 3) Se asigna un bit, 1 al de menor probabilidad de ambos y
0 al de mayor probabilidad. 4) Si tienen la misma probabilidad se asigna en forma
indistinta. 5) Se suma la probabilidad de los eventos codificados y se pasa a la lista de
eventos. 6) Se toman los eventos de menor probabilidad y se repite la asignación anterior.
Puede observarse que el código con menor probabilidad de ocurrencia tendrá asignada la
mayor cantidad de bits y el de mayor probabilidad la menor cantidad. Se puede comparar el
valor promedio de bits necesarios para una codificación: en una secuencia de 8 eventos el
valor promedio para una codificación de longitud constante es 3 bits código mientras que para
la longitud variable es 2,65 bits código (sumatoria del producto de la probabilidad de
ocurrencia por el número de bits involucrados). Por otro lado, no se requiere sincronización
ya que ninguna secuencia simula el inicio de otra secuencia distinta. La codificación VLC
requiere conocer la probabilidad de la fuente de señal. Para determinar un procedimiento
dinámico se han desarrollado algoritmos de cálculo para modificar en forma adaptativa la
tabla de codificación.
La codificación de longitud variable (Huffman) reduce la entropía de los datos; permite
reducir la velocidad promedio de un canal asignando a la secuencia más probable, la
longitud de código más corta. Es utilizado en facsímil con una relación de compresión de
15 : 1 . También se aplica en JPEG/MPEG y otros procesos.
Otra técnica de codificación es la codificación de Shannon-Fano; comparada esta técnica
con Huffman, ésta siempre genera códigos óptimos, mientras Shannon-Fano algunas veces
usa unos pocos bits de más. Aparentemente la codificación de Huffman o Shannon-Fano son
el medio perfecto para comprimir datos, sin embargo, no siempre es conveniente usarlos.
• Codificación aritmética: trata el mensaje como una sola unidad (una técnica para la cual, la
codificación de Huffman, requiere la enumeración de cada posible mensaje individual), y así
ataca el límite teórico de la entropía para la eficiencia en la compresión de cualquier fuente.
52
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
53
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Codificadores de forma de onda: utilizan algoritmos para codificar y descodificar de modo que
la salida del sistema es una aproximación de la forma de entrada. Ejemplos de codificadores de
forma de onda: ΔPCM, Δ-APCM, DPCM, ADPCM.
Las velocidades de transferencia de bits de estos codecs son bajas: 24 Kbps . Otras técnicas
avanzadas de codificación alcanzan tasas de transferencia de algunos Kbps . Algunas técnicas
que están disponibles para lograr codificación y decodificación de forma de onda a bajas
54
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
55
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Figura Nº 3.10. Sistema Δ PCM: (a) Transmisor Δ PCM, (b) Receptor Δ PCM.
Figura Nº 3.11. Minimización de los ruidos granular y por sobrecarga mediante la técnica Δ-APCM.
Cuando el transmisor entrega cadenas de unos y ceros consecutivos, indica que el resultado de la
pendiente del DAC es menor que la pendiente de la señal analógica en dirección positiva o
negativa; el DAC ha perdido la noción de la posición de las muestras analógicas y la posibilidad
de sobrecarga de pendiente es alta.
56
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
El esquema de compresión DPCM trabaja con la suposición de que los píxeles vecinos son
similares o altamente correlacionados. Como resultado, sus diferencias normalmente serán
valores muy pequeños.
La operación de compresión en DPCM trabaja mejor en imágenes que no tienen un número
desmesuradamente grande de brillo que oscila entre píxeles adyacentes. Cuando se aplica a
imágenes normales, la codificación DPCM puede proporcionar factores de compresión alrededor
de 2:1; para las imágenes con series largas de valores de píxeles constantes, los factores de
compresión se pueden incrementar significativamente.
• ADPCM: (Adaptive Differencial Pulse Code Modulation).
Es un código reconocido por la ITU (International Telecommunications Union) para aumentar el
número de usuarios analógicos en la mayoría de los enlaces digitales. El ADPCM toma palabras
convencionales PCM de 8 bits y las compara con un valor que es la estimación de lo que
deberían ser esos 8 bits. Dicha diferencia es lo que se transmite. Como la estimación es bastante
buena, se necesitan menos de 8 bits para representar la señal de salida. En efecto, una palabra
de 4 bits es transmitida en lugar de una de 8 . La palabra estimada la calcula un circuito capaz
de examinar los 8 bits previos a los que va a comparar, y con base en un algoritmo cuyas reglas
han sido estandarizadas por la ITU, el circuito es capaz de predecir cuál debería ser el valor de la
próxima palabra de 8 bits. Por otro lado, antes que ADPCM sea aplicado, el circuito es
57
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
examinado para ver la naturaleza del tráfico: si es un circuito de voz, las palabras de 8 bits se
transforman en palabras de 3 , y si es VF data (Voice Frecuency data) se transforma en palabras
de 5 bits (recomendaciones ITU G.731 y G.723).
La codificación de audio y canales de sonido tiene como objetivo maximizar la calidad en lugar
de reducir la velocidad. Se utilizan algoritmos de codificación en el dominio de la frecuencia.
MP3: es un formato estándar que aplica el algoritmo perceptual noise shaping para compresión
de sonido. Este sistema de compresión con pérdida 2 fue desarrollado por la sociedad MPEG 3
(Moving Picture Experts Group) junto con el Instituto Fraunhofer 4 estandarizándose después
con el nombre de ISO-MPEG Audio Layer 3.
Características
• Aplica una relación de compresión de 1 : 12 ; lo que significa, que una canción de cinco
minutos en formato WAV ocupa 60 Mbytes , mientras que en el formato MP3 sólo ocupa
5 Mbytes .
• Un archivo en MP3 puede ser, a su vez, comprimido con alguna herramienta como Winzip.
• La compresión se basa en la eliminación de información perceptualmente irrelevante. Este
estándar divide la señal en bandas de frecuencia que se aproximan a las bandas críticas, y
luego cuantifica cada sub-banda en función del umbral de detección del ruido dentro de esa
banda.
• Las muestras cuantificadas del banco de filtros se empaquetan mediante un protocolo que
aplica CRC y bits de control y sincronización para transmitir los bits de audio codificado y
comprimido.
Método de compresión
58
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
• Buscar el umbral acústico más reducido de la capacidad auditiva para omitir todo aquello
que el oído humano no podría captar. Para lograr esto se utiliza un sistema denominado
codificación de sub-bandas; en este proceso la señal original es descompuesta en 32 sub-
bandas mediante una serie de filtros de convolución. Las sub-bandas son comparadas con el
original mediante un modelo psicoacústico 6 que determina que bandas son importantes y
decide cuales pueden ser eliminadas (Si la energía en una banda es menor al umbral de
ocultamiento, esta no se codificará). Luego se cuantifican y codifican las sub-bandas
restantes y el resultado es finalmente comprimido mediante un algoritmo estándar Huffman
o LZW.
• La reserva de bytes: es otro de los elementos destacados en lo relativo a la comprensión en
MP3. Habitualmente algunas partes de las canciones no pueden ser codificadas a una tasa
correcta sin alterar la calidad de la música, ahí es donde entra en escena la reserva de bytes.
El MP3 emplea una reducida reserva de bytes para codificar a una tasa inferior sin mermar
la calidad. La repartición de bits o ruido se hace en un ciclo de iteración que consiste en un
ciclo interno y otro externo. El ciclo interno realiza la cuantización no uniforme de acuerdo
con el sistema de punto flotante (cada valor espectral de un banco de filtros hibrido
conocido como polifase/MDCT se eleva a la potencia 43 ), el ciclo escoge un determinado
intervalo de cuantización y, a los datos cuantizados, se le aplica codificación de Huffman en
el siguiente bloque. El ciclo termina cuando los valores cuantizados que han sido
codificados con Huffman usan menor o igual número de bits que la máxima cantidad de bits
permitida. El ciclo externo se encarga de verificar si el factor de escala para cada sub-banda
tiene más distorsión de la permitida (ruido en la señal codificada). El ciclo externo termina
cuando una de las siguientes condiciones se cumplen: Ninguna de las bandas del factor de
escala tiene mucho ruido, si la siguiente iteración amplifica una de las bandas más de lo
permitido, todas las bandas han sido amplificadas al menos una vez.
• El Joint Stereo: consiste en que en una determinada frecuencia el oído humano llega un
momento en el que no es capaz de apreciar el lugar exacto del origen del sonido. El formato
MP3 puede, opcionalmente, emplear esta pequeña trampa técnica gracias al llamado Joint
Stereo.
Los datos digitales se dividen en marcos, cada marco contiene 384 muestras, que son el
producto de 32 sub-bandas por 12 muestras sub−banda .
6 Se componen a partir de las percepciones de un grupo de personas entrenadas para rendir al máximo en este campo. Por experimentos se determina la
sensibilidad del oído humano a una serie de fenómenos.
59
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Un codificador típico de MPEG-1 realiza los siguientes pasos: define los parámetros M y N que
determinan de qué forma se encadenan las imágenes I, P y B en una GOP, estima los vectores de
movimiento para cada macrobloque en las imágenes P y B, determina el modo de compresión
para cada macrobloque de la imagen seleccionada (compresión espacial o temporal) y selecciona
la matriz de cuantificación.
Un decodificador MPEG-1 revierte las operaciones del codificador: por un lado, la secuencia de
video codificada de entrada es demultiplexada en coeficientes DCT, y por el otro, se saca la
información en modo de compresión, vectores de movimiento y matriz de cuantificación.
60
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
1440
60 Mbps 60 Mbps 80 Mbps
4:2:0 4:2:0 4:2:2 4:2:0 4:2:0 ó 4:2:2
Principal 720x576 720x576 720x608 720x576 720x576
15 Mbps 15 Mbps 50 Mbps 15 Mbps 20 Mbps
4:2:0 4:2:0
Bajo 352x288 352x288
4 Mbps 4 Mbps
Tabla Nº 3.3. Niveles y perfiles de MPEG-2.
Un perfil simple no soporta una codificación bidireccional y de este modo solo genera imágenes
I y P. El perfil high (alto) soporta tanto el SNR y la escalabilidad espacial, como también la
opción de muestreado 4 : 2 : 2 . El perfil 4 : 2 : 2 se ha desarrollado para proveer
compatibilidad con los equipos de producción digital de televisión existentes. El nivel low (bajo)
corresponde a la resolución SIF utilizada en el MPEG-1. El nivel main (principal) corresponde a
la resolución 4 : 2 : 0 "normal" (de hasta 720 pixeles x 576 líneas). El nivel high-1440 (alto-
1440) está destinado a la HDTV (de hasta 1440 pixeles x 1152 líneas). El nivel high (alto)
está optimizado para la HDTV (de hasta 1920 pixeles x 1152 líneas).
Los perfiles escalables (código jerárquico) permitirán transmitir una imagen básica (base layer)
en términos de resolución espacial (spatially scalable profile) o de cuantificación (SNR scalable
profile), así como información suplementaria independiente (enhanced layer) que permite
mejorar sus características, por ejemplo para transmitir la misma emisión en definición estándar
y HD (High Definition), o permitir una recepción con calidad aceptable en caso de recepción
difícil y de calidad óptima en buenas condiciones (por ejemplo, para la televisión digital
terrestre).
MPEG 4 (ISO/IEC 44196): se inicia en 1994, tiene extensión oficial .mp4 y es un estándar
internacional para codificación y almacenamiento de video multimedia. Mientras MPEG-1 y
MPEG-2 codifican secuencias, MPEG-4 es capaz de crear representaciones codificadas de los
datos de audio y video que la forman. Utiliza codecs/decodecs de transformación para
compresión con bajas pérdidas
Principios de operación del estándar:
61
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
62
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
entre puntos cercanos y la menor sensibilidad del ojo a los detalles finos de las imágenes fijas
(JPEG) y, para imágenes animadas (MPEG), se saca provecho también de la redundancia
temporal entre imágenes sucesivas.
Durante la compresión, los datos duplicados o qué no tienen valor se eliminan o se guardan en
una forma más corta y se reduce el tamaño de un archivo en gran medida. Cuando la imagen se
edita o visualiza posteriormente, entonces el proceso de compresión se invierte.
Clasificación de los métodos de compresión de imágenes: hay dos formas de compresión, sin
pérdidas o con pérdidas, y la fotografía digital usa ambas formas.
La compresión sin pérdidas comprime una imagen para que su calidad sea semejante a la
fuente original. Aunque la compresión sin pérdidas parece ideal, no proporciona mucha
compresión. Un esquema de compresión reconocido es el LZW (Lempel-Ziv-Welch). Este se
usa en archivos GIF y logra proporciones de compresión de 50 a 90% .
Por otra parte, un sistema de codificación básico y apropiado para la mayoría de las aplicaciones
de compresión, es aquel con pérdidas, que se basa en la Transformada Discreta del Coseno; en
este sistema, denominado a veces sistema básico secuencial, la precisión de los datos de entrada
y de salida está limitada a 8 bits, mientras que los valores cuantificados de la DCT están
limitados a 11 bits, La propia compresión se realiza en tres etapas secuenciales: Calculo
DCT(transformada discreta del coseno), Cuantificación de los coeficientes de la DCT,
Asignación del Código de Longitud Variable (VCL).
Una disminución en la codificación se puede obtener, tomando como ventaja que la amplitud de
los componentes espaciales disminuye con la frecuencia. Si el espectro de frecuencia espacial es
dividido en sub-bandas de frecuencia, las bandas de alta frecuencia se pueden describir en pocos
bits, no solamente porque sus amplitudes son pequeñas sino porque puede ser tolerado más
ruido.
La codificación inter o temporal aprovecha la ventaja que existe cuando las imágenes sucesivas
son similares. En lugar de enviar la información de cada imagen por separado, el codificador
inter envía la diferencia existente entre la imagen previa y la actual en forma de codificación
diferencial. El codificador necesita de una imagen, la cual fue almacenada con anterioridad para
luego ser comparada entre imágenes sucesivas y de forma similar se requiere de una imagen
previamente almacenada para que el decodificador desarrolle las imágenes siguientes.
En el recorrido de una imagen original, llamada imagen I o intra, la cual es enviada entre
imágenes que han sido creadas usando una diferencia entre imágenes, llamada imágenes P o
previstas. La imagen I requiere grandes cantidades de información, mientras que las imágenes P
requieren una cantidad menor. Esto ocasiona que el flujo de transmisión de datos sea variable
hasta cuando llegan a la memoria intermedia.
63
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Medida de compresión:
64
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
reconstruye la imagen a un tamaño reducido. El otro método interpola los píxeles eliminados,
creando una aproximación de la imagen original a su tamaño. La codificación por truncamiento
en la resolución de brillo se hace truncando todos los valores de los píxeles de brillo de la
imagen, por una nueva representación de los datos que contengan menos bits. Los bits de bajo
orden son los truncados primero, naturalmente, ellos son los menos significativos en su valor de
brillo. Si, por ejemplo, se truncan 5 bits de cada uno de los píxeles de brillo, la imagen se reduce
por un factor de 83 bits = 2.667 . La codificación por truncamiento proporciona razones de
compresión exactamente predecibles, y estas se basan directamente en cuántos datos de la
imagen son eliminados.
Los esquemas de compresión y descompresión DPCM con pérdidas son idénticos a las formas
DPCM sin pérdidas. La DPCM con pérdidas casi siempre adiciona algunas degradaciones en la
imagen comprimida, pero puede proporcionar un incremento en los factores de compresión de
aproximadamente 3 : 1 o más que su homologo en la compresión sin pérdidas, con algunos
efectos menores de distorsión. Normalmente se puede minimizar el efecto visual de estas
distorsiones a través de una selección apropiada del código de longitud, produciendo resultados
aceptables para muchas aplicaciones. Un caso especial de DPCM con pérdidas, se llama la
Modulación Delta (DM), esta sólo usa un bit para codificar la diferencia de brillo entre píxeles
adyacentes. Cada píxel es codificado como si tuviera un brillo menor que el anterior píxel (0 ) o
mayor que el anterior píxel (1) . Las imágenes en DM pueden mostrar mayores efectos de error
de brillo siempre que se encuentren transiciones significativas de brillo. Generalmente, para una
imagen de 640 píxeles × 480 líneas, siempre que hay transiciones presentes de más de 32
niveles de gris, las manchas en la imagen serán significativas. Las ventajas de la técnica de
codificación DM son extremadamente simples para ser implementadas por un codificador y
decodificador, que asegure un factor de compresión fijo de 8 : 1 (para imágenes con 256
niveles de gris).
El método de compresión por vector de cuantización (VQ), como en el caso JPEG, la imagen se
divide en bloques (o los vectores) de n × n píxeles. Estos bloques se comparan con un sistema
de bloques representativos. Esta colección de vectores representativos se llama codebook. Se
analiza las diferencias entre los píxeles en el vector de la imagen fuente y el vector del codebook
y se computa para cada entrada del codebook. La entrada del codebook con la diferencia más
pequeña se elige como el vector representativo. El índice de ese vector se almacena en un
archivo o se transmite. Ejemplo: supongamos que la imagen original está dividida en vectores de
4 × 4 píxeles. La imagen original es 24 bits píxel . Si utilizamos un codebook que tenga 1024
vectores, necesitaremos 10 bits únicamente para ubicar el vector representativo del código.
Nuestro cociente de compresión para un vector (y también para la imagen entera) es:
Factor de compresión =
[ 24 bits
px × 16 px ] = 38.4
10 bits
El vector de cuantización viene en muchos formatos. Un método, VQ recurrente, repetitivamente
codifica la imagen y la diferencia entre la imagen y su aproximación (el valor del codebook).
Otro método quita la media de un vector antes de codificar. Todos los algoritmos de VQ son de
cómputo intensivo durante la etapa de codificación, pero descifran relativamente muy rápido. El
proceso de descodificación consiste en obtener los vectores del codebook y reemplazarlos en los
bloques correspondientes.
En la codificación por transformación, se utiliza una transformada lineal, reversible para hacer
corresponder una imagen con un conjunto de componentes fundamentales o coeficientes, en el
dominio de la frecuencia. La imagen en el dominio de la frecuencia se puede transformar
inversamente al dominio espacial, reproduciendo la imagen tal y como estaba originalmente.
En el dominio de la frecuencia, los coeficientes fundamentales representados por los píxeles de
brillo, tienden a agruparse en regiones, especialmente alrededor de las zonas de baja frecuencia.
Como resultado, hay áreas generalmente grandes de la imagen donde los coeficientes tienen un
valor muy pequeño o cero. Esto ocurre porque el proceso de la transformada elimina mucha
redundancia de la imagen. La versión en el dominio de la frecuencia de la imagen, es
generalmente una representación muy eficiente de la imagen original. Las técnicas de
65
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
7 El diseño de este formato esta basado en las limitaciones del ojo humano, para el cual los pequeños cambios en el color son percibidos menos que pequeños
cambios en el brillo de una imagen.
66
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
JPEG permite una compresión dentro de un rango de 10:1 a 50:1 en proporción a la imagen
original. Uno de los problemas con esta codificación es que cada vez que abramos un archivo
que este en formato JPEG, no se debe volver a guardar con este mismo formato, ya que al
almacenar vuelve y aplica los algoritmos de compresión y la imagen se degrada cada vez mas.
GIF (Graphics Interchange Format): es un formato gráfico desarrollado por CompuServe en
1987 para resolver el problema de intercambio de imágenes a través de diferentes plataformas.
Se utiliza ampliamente en la WEB.
El formato .GIF realiza la compresión de la imagen sin pérdida de calidad por medio de dos
tipos de algoritmos que son RLE (Ineficiente) y LZW (El más usado en este tipo de formateo).
• RLE: esta codificación busca la repetición de valores idénticos en una secuencia de datos, y
la remplaza por un único valor precedido por el número de veces que se repite. Ejemplo: si
se tiene la secuencia 5 5 14 14 14 14 14 8 8 8 8 7 5 5 5 2 2 (18 bytes), al codificarlo se
obtiene: 2 5 5 14 4 8 1 7 3 5 1 3 2 2 (14 bytes).
• LWZ: es un método de compresión que analiza el texto para identificar cadenas repetidas y
así armar un diccionario de equivalencias, asignando códigos breves a estas cadenas. Este
proceso requiere de dos etapas, la primera de análisis y la segunda de conversión.
Ejemplo: Se tiene una secuencia: 4 12 10 2 8 4 12 10 9 8 4 12 10 9 8 4, al codificarlo se
obtiene: a28abab4, donde a=4 12 10 y b= 9 8.
Las principales características de esta codificación son: 1) 8 bits máximo ( 256 colores
simultáneos), 2) Uso de color indexado a través de una paleta de colores que puede tener
hasta 256 colores, dependiendo del Size of Local Color Table que tiene un tamaño de 3
bits, 3) Utiliza varias capas transparentes (máximo de 256 colores cada uno), simultáneas
entre ellas que permiten mostrar un color real, 4) Permite transparencia de un bit, de tal
forma que cada píxel de la imagen puede ser o no transparente, 5) Formato de mapa de bits,
6) Compresión LWZ sin pérdidas que alcanza tasa de 1 : 4 (Hasta un 25% del tamaño
original).
Existen dos versiones del formato .GIF: GIF87a, sus principales características son: compresión
LWZ sin pérdidas y soporte de entrelazado. GIF89a, sus principales características son:
transparencia y animación.
Introducción
Se recuerda una anécdota de Julio Cesar, en cierta ocasión, queriendo amnistiar a uno de sus
oficiales, dictó la siguiente orden: "Liberadlo, no ejecutadlo". Su mensaje se transmitió con un
pequeño error "Liberadlo no, ejecutadlo".
La naturaleza se protege contra errores que pueden causar, como en el caso anterior, la muerte.
El mensaje genético que permite construir un ser vivo está contenido en dos filamentos
entrelazados; cada filamento contiene una secuencia de nucleótidos (solo son posibles 4 ;
denominados Adenina, Citosina, Guanina, Timina). Entre filamentos existe una relación unívoca
del tipo A-T y C-G y constituyen el ADN. El mensaje es redundante, lo que muestra el cuidado y
el conservadurismo de la naturaleza. Sin embargo, la cantidad de información genética en el
ADN no tiene relación directa con la información; así, en 1983, se encontró que las células de la
azucena tiene 30 veces más ADN que las células humanas.
El error de una sola letra en la lectura de la información genética puede producir en el humano
enfermedades hereditarias letales como la anemia falciforme, la talasemia y varios cánceres.
Otras veces un error permite introducir cambios que llevan a la diferenciación entre especies. No
todos los errores son malignos ni beneficios, la mayoría no producen consecuencias.
67
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
En PCM cada muestra de la señal se representa por una palabra de código de k bits. El receptor
debe reconocer cada palabra de código para reconstruir las muestras; debido al ruido y a otras
limitaciones del canal pueden ocurrir errores en la transmisión. Sin embargo, se puede aumentar
la confiabilidad de la comunicación en presencia de ruido, mediante las siguientes estrategias:
S
• Incrementando la relación señal a ruido .
N
• Agregando bits a expensas de un mayor ancho de banda; estos bits redundantes permiten la
detección y corrección de errores.
Error
Es la distorsión del valor correcto del dato, el cambio a algún otro valor.
Tipos de errores
• Error de bit: significa que un bit de una unidad de datos determinada cambia; es el tipo de
error menos probable en una transmisión de datos en serie.
• Error de ráfaga: Significa que dos o más bits de la unidad de datos han cambiado debido al
ruido del canal. Los errores se producen generalmente en las transmisiones en serie y
afectan bits consecutivos (no siempre).
Eficiencia del código
Es la relación entre la razón de información y la razón de bits del código.
Cuanto mayor es la trama que se transmite, mayor es la probabilidad de que contenga algún
error. Para detectar errores, se añade un código en función de los bits de la trama de forma que
este código señale si se ha cambiado algún bit en el camino. Este código debe de ser conocido e
interpretado tanto por el emisor como por el receptor. Un codeword de n bits consiste en k bits
de datos y r bits de redundancia o chequeo. Aunque se usa a veces la corrección de errores,
normalmente se prefiere la detección de errores ya que es más eficiente.
68
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
k
η=
n
k → Número de dígitos del mensaje por palabra.
r → Número de dígitos del código de comprobación de error por palabra.
n = k + r → Número total de dígitos, longitud del bloque.
En comunicaciones electrónicas todas las señales digitales llevan asociados el proceso de
detección o corrección de errores. El primer paso es reconocer la existencia de los mismos; es
decir, se deben disponer de métodos que permitan la evaluación del número de errores.
Posteriormente el número de errores se expresa como una Tasa de Error de Bit BER (Bit Error
Rate). Luego de reconocida la existencia de errores puede ser posible la identificación del mismo
y la corrección. Para ello se han generado métodos correctores de errores.
Clasificación de los códigos para detección y control de errores
La detección y corrección de errores se implementa en el modelo OSI en el nivel de enlace o
nivel de transporte de datos.
• Códigos algebraicos ó códigos de bloque: Se agregan bits al final de cada palabra de código
para la detección y corrección de error. Ejemplo: Verificación de la paridad, Código de
Hamming, etc.
• Códigos convolucionales: la información de verificación de paridad está distribuida sobre
un espacio de símbolos de mensaje llamado espacio acotado del código; para códigos de
espacio acotado corto se emplea algoritmo de Viterbi.
• Códigos cíclicos: es una subclase de códigos de bloques lineales; para ser cíclico, el código
debe cumplir dos propiedades: 1) Linealidad: la suma de dos palabras de código
cualesquiera en el código es también una palabra de código, 2) Propiedad cíclica: cualquier
corrimiento cíclico de una palabra de código en el código también es una palabra de código.
Ejemplos: códigos CRC, BCH y Red Sólomon.
Otros códigos: códigos turbo. Ejemplo: código RSC de 8 estados y algoritmo BCJR.
69
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
impares, se le añade un bit 1 de paridad). Pero puede ocurrir que el propio bit de paridad
sea cambiado por el ruido o incluso que más de un bit de datos sea cambiado, con lo que el
sistema de detección fallará. Los circuitos que generan paridad usan compuertas XOR.
Los bits de paridad tienen las siguientes variantes VCR-HCR, checksum y CRC. Se aplican
en toda señal digital conocida y solo permiten identificar la presencia de errores. La acción
siguiente puede ser: informar mediante reportes de alarmas; descartar la información o
corregir los errores.
• Comprobación de redundancia vertical y horizontal: la comprobación de redundancia
vertical (VRC: Vertical Redundancy Checking) es un esquema de detección de errores que
usa la paridad para determinar si ha sucedido un error de transmisión, dentro de un carácter.
En consecuencia, la VRC a veces se llama paridad de caracteres. En la VRC cada carácter
tiene agregado un bit de paridad de caracteres. Se puede usar paridad par o impar.
La comprobación de redundancia horizontal o longitudinal (HRC: Horizontal Redundancy
checking ó LRC: Longitudinal Redundancy Checking) es un esquema de detección de
errores que usa la paridad para determinar si se ha presentado un error de transmisión en un
mensaje y, en consecuencia, a veces se llama paridad de mensaje. En resumen, la LRC es el
resultado de comparación XOR de los caracteres que forman un mensaje, mientras que la
VRC es la comprobación XOR de los bits dentro de un solo carácter. Con la LRC sólo se
usa paridad par. La secuencia de bits LRC se calcula en el transmisor antes de mandar los
datos, a continuación se transmite como si fuera el último carácter del mensaje. En el
receptor se vuelve a calcular la LRC a partir de los datos, y el valor recalculado se compara
con la LRC transmitida.
La comprobación de redundancia vertical y horizontal, también es llamada control de
paridad por matriz de caracteres, en el cual se determina la paridad de filas y columnas, y se
envían los bits de control por filas. Permite tanto la detección como la corrección de errores.
• Suma de comprobación (checksum): no es más que el byte menos significativo de la suma
aritmética de los datos binarios que se transmiten. Mientras se transmitan los datos, cada
carácter se suma con la suma acumulada de los que se transmitieron antes. Cuando se llega
al final del mensaje, el sumador ha acumulado la suma de todos los caracteres que hay en el
mensaje que se acaba de mandar. El byte menos significativo de esta suma se agrega al final
del mensaje, y se transmite. La terminal receptora hace de nuevo la operación de suma y
determina su propia suma y su propio carácter de suma de comprobación. El byte menos
significativo de la suma del receptor se compara con la suma de comprobación del final del
mensaje. Si son iguales, es muy probable que no haya ocurrido error de transmisión.
EJEMPLO 3.2._______________________________________________________________________
Datos transmisión: d1 : 10101001
d 2 : 00111001
Σ aritmética complemento a 1: 11100010
Suma de comprobación: 00011101
Datos de recepción: d1 : 10101001
d 2 : 00111001
Suma de comprobación: 00011101
Suma = D1 + D 2 + Σ comprobacion = 11111111
Complemento a 1 = 00000000 → Error = 0
70
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Ventajas: Es un método muy efectivo, puede detectar todos los errores de ráfaga que afectan un
número impar de bits, puede detectar todos los errores de ráfaga de longitud menor o igual que el
grado del polinomio, puede detectar con probabilidad muy alta errores de ráfaga con longitud
mayor que el grado del polinomio.
Pasos: Se agrega una secuencia de n ceros a la unidad de datos a transmitir, la nueva trama de
datos se divide por el polinomio CRC preestablecido por el transmisor y receptor, de longitud
n + 1 ; el residuo de la división binaria sustituye la secuencia de n ceros de la unidad de datos.
En el receptor se divide la secuencia de datos por el CRC; Si la secuencia llega sin error, el
receptor obtiene un residuo de 0 y la unidad de datos se acepta.
El generador del CRC (el divisor) no se suele representar como una secuencia de unos y ceros,
sino como un polinomio algebraico, ejemplo:
1. [
Se hallan el número de elementos de control m: m = E ' ' log 2 (k + 1) + E ' ' log 2 (k + 1) ]
2. E ' ' es la función techo redondear hacia arriba. La función techo redondear hacia arriba
consiste en aproximar el resultado obtenido al numero entero inmediatamente superior; es
decir si el resultado es de 2.01, debemos aproximarlo a 3.
3. Hallamos P ( x ) .
4. Hallamos la matriz con la que se obtiene P ( x ) , teniendo en cuenta que debe tener k filas y
m+k columnas.
71
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
EJEMPLO 3.3._______________________________________________________________________
[ ]
1. Dado k = 4, hallamos el valor de m: m = E ' ' log 2 (4 + 1) + E ' ' log 2 (4 + 1) = 3 , con esto
sabemos que el polinomio P ( x ) es de orden 3: P ( x ) = x + x + 1 = 1011(2 ) .
3
P(x ) = x 3 + x + 1 = 1011(2 )
1000000000000....
1011
1000000000 1011
-----------------
1011 1010
---------------
011
110
1100
1011
-------------------
111
1110
1011
---------------------
101
0001 011 → a1
0010 110 → a 2
0100 111 → a3
1000 101 → a 4
Con estos valores tenemos que
G ( x) = 0001 → F ( x) = a1 = 0001011
G ( x) = 1000 → F ( x) = a 4 = 1000101
G ( x) = 1001 → F ( x) = a1 + a 4 = 1001110
G ( x) = 1101 → F ( x) = a1 + a 4 + a3 = 1101001
Decodificación Cíclica
Pasos para la decodificación Cíclica:
1. Se debe hallar la cantidad de elementos de control m:
[ ]
m = E ' ' log 2 (k + 1) + E ' ' log 2 (k + 1) . E’’ es la función techo redondear hacia arriba.
2. Debemos hallar P ( x) teniendo en cuenta que el orden del polinomio es de e ; así mismo
e ≥ m y w ≥ r . Como d=3 entonces r=1, no debemos olvida que w es el peso, es decir la
cantidad de “1” que tenemos.
3. Hallamos G ( x) que es el polinomio a codificar.
G ( x) x m
4. Hacemos el corrimiento de bits G ( x) x
m
= F ( x) y efectuamos la operación ,
P( x)
F ( x)
para así hallar los posibles valores de R ( x) : → R( x) .
P( x)
5. Si R ( x) = 0 , no hay error.
72
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
6. R( x)
Si no w=? de
7. Si w ≤ r , F ( x) = F ( x) ⊕ R ( x)
F ' ( x)
8. Si no girar hacia la derecha F ' ( x) = F ( x) , (paso 1). → R' ( x) .
P( x)
9. W’=? de R( x) , si w' ≤ r : F ' ( x) = F ' ( x) ⊕ R' ( x) , des-girar hacia la izquierda
F ' ( x) = F ' ( x) , sino retornar al paso 1.
EJEMPLO 3.4._______________________________________________________________________
Si k=1101 y m=3, entonces P ( x) = x 3 + x + 1 =1011 y F ( x) = 1111001 en la recepción,
comprobar que en el dato enviado fue F ( x) = 1101001 . Entonces:
1111001 / 1011
1011 1101 → Q ( x)
--------------------
1000
1011
--------------------------
1101
1011
--------------------------
110 → R ( x)
En este caso R ( x) =110, w=2. Entonces hacemos F ' ( x) = 1110011 es decir tomamos el
primero bit de la palabra y lo colocamos en la última posición y volvemos a dividir:
1110011 / 1011
1011 1100
------------------
01010
1011
----------------------
000111 → R' ( x)
En este casoR ' ( x) =111 w=3
Entonces hacemos F ' ' ( x) = 1100111 es decir tomamos el primero bit de la palabra y lo
colocamos en la ultima posición y volvemos a dividir
1100111 / 1011
1011 1110
-------------------
1111
1011
-------------------
1001
1011
--------------------
73
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
En este caso R ' ' ( x) =1 w=1, Como w ≤ r , F ' ' ' ( x) = F ' ' '⊕ R ' ' ' ( x) = 1001110 .
Ahora desgiramos, es decir tomamos el último bit de la palabra y lo colocamos en la primera
posición, esto lo hacemos hasta que nuevamente encontremos F ( x) .
Se trata de códigos que detectan y corrigen errores que aparecen en las transmisiones. Puede
haber dos tipos de errores:
74
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
debe de ser capaz de reenviar tramas fuera de orden. Estos requerimientos adicionales hacen que
este método sea menos utilizado que el de adelante-atrás-N.
Hamming trabajó en los laboratorios Bell en los años 40 en una computadora del modelo V de
Bell, un monstruo electromecánico basado en relés con velocidad de proceso de hertzios. La
entrada se alimentaba con tarjetas perforadas en las que, con frecuencia, se cometían errores al
ser leídas. En cada jornada, los errores encontrados se indicaban mediante luces de destello para
que los operadores pudieran corregir el problema. Fuera de las horas laborales, y durante los
fines de semana, cuando no había operadores, la máquina se dejaba preparada para el trabajo de
la siguiente jornada. Hamming trabajando los fines de semana, se sentía frustrado cada vez que
tenía que recomenzar sus programas debido a la falta de fiabilidad del lector de tarjetas. Los
siguientes años trabajó en el problema de corrección de error, desarrollando un arsenal de
algoritmos cada vez más eficaces. En 1950 publicó lo qué ahora se conoce como código de
Hamming, que aún hoy sigue siendo utilizado.
El número de bits HAMMING que se deben agregar a una unidad de información se determina
con la siguiente expresión:
2n ≥ m + n + 1
Los bits de verificación HAMMING se van a insertar en las potencias de dos, así:
2 0 , 21 , 2 3 , ... 2 n .
EJEMPLO 3.5._______________________________________________________________________
Mensaje: 101100010010
2 4 ≥ 12 + 4 + 1 → 16 ≥ 17
Ya que 17 > 16 No cumple la condición.
2 5 ≥ 12 + 5 + 1 → 32 ≥ 18
18 < 32 Si cumple la condición.
17 bits va ha ser la longitud de la trama de datos.
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 H 0 1 1 0 0 0 1 H 0 0 1 H 0 H H
75
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
17 = 10001
14 = 01110
13 = 01101
9 = 01001
5 = 00101
Modulo 2: 11110
Datos en el transmisor
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0
Datos en el receptor
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0
17 = 10001
16 = 10000
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 00000 , no se presento error.
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0
17 = 10001
16 = 10000
15 = 01111
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 01111 , se presentó error en el bit número 15 .
Sin embargo, no es posible detectar mediante este código, varios bits equivocados
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
0 0 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0
76
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
15 = 01111
14 = 01110
13 = 01101
9 = 01001
8 = 01000
5 = 00101
4 = 00100
2 = 00010
Modulo 2: 01111 , Existe error en el bit 13 : falso, ya que existen varios bits
erróneos.
Se debe cumplir que 2 ≥ n + 1 , como se sabe que d = 3 , se deduce la cantidad de bits que
m
deben tener m y n.
k 1 2 3 4 5 6 7 8 9 10 11 12 13
m 2 3 3 3 4 4 4 4 4 4 4 5 5
n 3 5 6 7 9 10 11 12 13 14 15 17 18
Como hacerlo
77
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
5. Se construye una matriz de tal forma que en la columna de “Nº de orden” simplemente se
pone en binario una numeración desde 001 hasta 111 (en código binario natural), en la
columna siguiente (a la derecha) se colocan de forma vertical la fila hallada en el paso 4.
my m y −1 … m1
n1
n2
…
nn −1
nn
6. Se plantean las ecuaciones con la matriz anterior, y se igualan a cero, de esta forma se hallan
los valores reales de m; con esto se obtiene el mensaje a transmitir.
7. Una vez obtenida la palabra de código correcta, basta con quitar los bits de paridad para
obtener la palabra original enviada por el emisor, por lo cual e necesario conocer los valores
de m.
EJEMPLO 3.6._______________________________________________________________________
Si el mensaje original es k = 1101 , se procede de la siguiente manera:
1. Se halla la longitud del valor de k, en este caso la longitud de k = 4bits .
2. En la tabla se hallan los valores de m y n, en este caso m = 3bits y n = 7bits .
3. Se ordenan los factores en las posiciones correspondientes:
m3 m2 m1
0 0 1 m1
0 1 0 m2
0 1 1 k4
1 0 0 m3
1 0 1 k3
1 1 0 k2
1 1 1 k1
5. Se planten las ecuaciones, teniendo en cuenta que el número de ecuaciones es igual a
número de elementos de control (m ) , en este caso 3.
Para plantear las ecuaciones nos ubicamos en la columna marcada con m1 , ahora en orden
descendente empezamos a ver que variables tienen el valor de “1”, en este caso resaltados en
amarillo y los igualamos a cero. La ecuación nos queda de la siguiente forma
m1 ⊕ k 4 ⊕ k3 ⊕ k1 = 0
78
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
⊕ 0 1
0 0 1
1 1 0
m1 ⊕ k 4 ⊕ k 3 ⊕ k1 = 0
m1 1 1 1
En este caso el valor de m1 es 1
m 2 ⊕ k 4 ⊕ k 2 ⊕ k1 = 0
m2 1 0 1
En este caso el valor de m 2 es 0
m3 ⊕ k 3 ⊕ k 2 ⊕ k1 = 0
m3 1 0 1
En este caso el valor de m3 es 0
EJEMPLO 3.7._______________________________________________________________________
Con base en el ejemplo anterior, tenemos que: k = 1101 , m = 100 , n = 1010101
Si se desea averiguar qué bit está dañado si se transmite el siguiente mensaje: n = 1010001 (se
ha producido deliberadamente un error en el quinto bit).
Luego de construir las ecuaciones del paso 3, del mismo modo que en el ejemplo anterior, se
remplazan los valores correspondientes del nuevo n , y se halla el resultado de cada una de las
ecuaciones
m1 ⊕ k4 ⊕ k3 ⊕ k1 = 1
1 1 0 1
Según el mensaje, m1 es 1
m 2 ⊕ k 4 ⊕ k 2 ⊕ k1 = 0
0 1 0 1
Según el mensaje, m2 es 0.
m3 ⊕ k3 ⊕ k2 ⊕ k1 = 1
0 0 0 1
Según el mensaje, m3 es 0
Luego tomamos los resultados de cada ecuación en orden descendente y pasamos ese número a
binario: 101(2 ) = 5 (10 ) , con esto concluimos que el error se encuentra en el quinto bit.
79
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
# de bits
numerada módulo 2 ) hasta un máximo de el número máximo de tramas que quepan
en el buffer del receptor. El receptor irá procesando las tramas que le lleguen y confirmando
que admite tramas a partir de una dada (hasta un máximo de 7 en el ejemplo). Por ejemplo,
si ha procesado hasta la trama 5 , confirmará el número 6 (es decir, que puede procesar las
tramas 6, 7, 0, 1, 2, 3 y 4 ). Al recibir el emisor la confirmación de la trama 6 , emitirá
todas las que no haya transmitido desde la 6 hasta la 4 ( 6, 7, 0, 1, 2, 3 y 4 ). Por
ejemplo, si ya había enviado la 6, 7, 0 y 1 , sabe que puede enviar la 2, 3 y 4 . Existe la
posibilidad de indicarle al emisor la confirmación de tramas recibidas y prohibirle el envío
de más tramas (con el mensaje de Receptor No Preparado). Cuando las dos estaciones son
emisoras y receptoras, se pueden utilizar dos ventanas por estación, una para el envío y otra
para la recepción. Se puede utilizar la misma trama para enviar datos y confirmaciones,
mejorando así la utilización del canal. Este sistema de transmisión es mucho más eficiente
que el de parada y espera, ya que pueden haber más de una trama a la vez en las líneas de
transmisión (en el de parada y espera sólo puede haber una trama a la vez).
80
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Claudius había podido haberle incorporado seguridad al mensaje de forma que el rey de
Inglaterra verificara el contenido del mensaje. Moraleja: La seguridad es relevante para la
privacidad e integridad de la transmisión de información sensible.
Breve reseña histórica sobre el cifrado: Debido a la evolución de las computadoras, y a la
reducción de sus costos y tamaños, diversas empresas e instituciones comenzaron a utilizarlas.
Al mismo tiempo, fue necesario cifrar comunicaciones importantes como las transferencias de
dinero. Sin embargo, para que dos compañías intercambiaran información cifrada debían poseer
el mismo algoritmo. Esto era un problema entre 1960 y 1970 ya que no existía un único
algoritmo de cifrado, es decir no había un estándar. Por tal razón en mayo de 1973, la American
National Bureau of Standards, hoy la National Institute of Standards and Technology (NIST),
decidió resolver el problema y solicitó formalmente propuestas para establecer un sistema de
cifrado estándar. Una de esas propuestas fue un algoritmo propuesto por la IBM, resultado de un
proyecto de investigación a cargo de Walter Tuchman y Carl Meyer.
A finales de los años 60, IBM estableció un proyecto de investigación en criptografía conducido
por Horst Feistel, un inmigrante alemán que llegó a E.U.A. en 1934. El proyecto concluyó en
1971 con el desarrollo de un algoritmo denominado LUCIFER, el cual operaba con bloques de
64 bits y una clave de 128 bits y que fue vendido a la LLoyd's de Londres para ser usado en
un sistema de cajero automático, igualmente desarrollado por la IBM. Posteriormente, dado que
la IBM deseaba que LUCIFER se volviese un producto más comercial inició un nuevo proyecto
a cargo de Walter Tuchman y Carl Meyer (con ellos estuvieron involucrados consultores y
personal de apoyo técnico de la National Security Agency (NSA).
El resultado fue una versión refinada del LUCIFER que era más resistente al criptoanálisis pero
que usaba una clave de tamaño más pequeña, 56 bits. Este ultimo fue el algoritmo que la IBM
sometió a consideración del National Institute of Standards and Technology (NIST) en 1973, y
que de hecho se adoptó formalmente como el algoritmo de cifrado estándar en 1977. A partir de
ese momento se le denominó: Data Encryption Standard. DES.
Criptología
Del griego Kryptos y logos que significa tratado de lo oculto: este término describe la ciencia de
las comunicaciones secretas. Se divide en:
• Criptografía
• Criptoanálisis
Criptografía
La criptografía es el empleo de la escritura para inducir a un error intencional. Se aplicó en
Egipto a partir del 700 AC creando infinidad de jeroglíficos (monumental o cursiva) que pierden
conexión con la escritura cotidiana (hierática) y permitiendo la lectura solo por parte de la
minoría sacerdotal. Hace referencia a las transformaciones de un mensaje (aplicación de
algoritmos para proteger los mensajes) en forma codificada a través del encriptado y en la
recuperación del mensaje original a partir del desencriptado. En la segunda guerra mundial se
usó el lenguaje navajo (lenguaje que describe la naturaleza) para cifrar información secreta de
los aliados.
Esta forma de codificación permite encubrir la información enviada bajo un formato de difícil
identificación por un detector no autorizado. Se encuentra en aplicaciones como CATV, redes de
datos (Gran parte de asuntos comerciales, de negocios y personales se están realizando en la
actualidad por medio de computadores) y sistemas celulares. La seguridad es un aspecto
importante. Para asegurarla se dispone de algoritmos de encriptamiento y claves, en cuya
privacidad se basa todo el esquema.
Criptoanálisis
Aparece con los árabes y tiene que ver con los procedimientos para deshacer las comunicaciones
criptográficas, rompiendo el cifrado o falseando las señales codificadas que podrían ser
aceptadas como genuinas.
81
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
82
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Figura 3.22. Diagrama de bloques de un sistema de comunicaciones con criptografía de clave secreta.
• Simétrica: Usa la misma clave secreta, normalmente de 64 bits, tanto para cifrar como
para descifrar. El poder del algoritmo esta en su complejidad y en la longitud de la clave (es
imprescindible el uso de un canal seguro para la retransmisión de la clave, inadecuada para
firmas digitales). Ejemplos: DES, SDES, RC4 y AES.
• Asimétrica: Usa dos claves, una de las cuales hacen pública. La codificación y
decodificación se controla por claves diferentes, evitándose así la necesidad de la
distribución de claves; para la distribución de las claves diferentes se utiliza la encripción
asimétrica, posteriormente se emplea el cifrador simétrico por ser más rápido. Ejemplos:
RSA, GAMAL.
• El modo: Define como el cifrador aplica un algoritmo de encriptación al texto plano.
• Padding: Define cómo es alargado mediante relleno un texto plano para que cumpla con el
tamaño del cifrador, tamaño con el cual opera.
83
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
• La firma no es falsificadle.
• El mensaje electrónico firmado por el emisor no puede negar que lo es.
Ejemplo: algoritmo RSA (satisface las tres propiedades anteriores).
Acuerdo de claves
Para que dos personas (Alix, B0 ) puedan intercambiar información secreta primero deben
ponerse de acuerdo en las claves. Es un método para crear una clave secreta compartida,
intercambiando llaves públicas.
Procedimiento
• El mensaje es cifrado con una llave secreta a través de cifrado simétrico.
• La llave simétrica es cifrado de forma asimétrica por una llave pública que es tomada de un
depositario.
• La llave simétrica encriptada es ligada el mensaje cifrado.
• Los usuarios mantienen el par de llaves por mucho tiempo ( 1 año).
Ejemplo: Diffie- Hellman, RSA.
Aplicaciones de la criptología
Internet: La criptografía para Internet se inicia en 1976 por Diffie y Hellman cuando se
estableció el concepto de “criptografía de clave pública”. Para realizar este proceso se recurre a
un número público (g ) , dos números privados ( x, y ) y un módulo ( p ) . El extremo A envía la
clave (g ) y el extremo B la clave (g ) en ambos casos módulo-p. En recepción se realizan
x y
las operaciones (g ) y (g ) que son iguales y pasan a ser la clave de criptografía secreta y
x y y x
• Se parte del alfabeto español, 26 letras, no cuentan las siguientes letras: LL, RR y Ñ.
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Tabla Nº 3.4. Alfabeto para el cifrado CESAR
84
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
¾ "b " es cualquier número ≤ 676 ; " a " es un residuo primo de 676 .
¾ (a,676) : 1 , " a " es residuo primo de 676 , si y solo si, el único común denominador
es 1 .
(175,676) : 1 , son primos relativos
175 5 676 2
35 5 338 2
7 7 169 13
1 13 13
1
(26,676) : 1 , no son primos relativos porque:
26 2 676 2
13 13 338 2
1 169 13
13 13
1
26 y 676 tienen divisores comunes 2 , 13 . Para que 26 y 676 sean primos
relativos, el divisor común a ambos debe ser 1 .
EJEMPLO 3.8._______________________________________________________________________
ALIX va a encriptar el mensaje claro M = Buenos días → BU EN OS DI AS
X 0 = 26(B ) + U = 26(1) + 20 = 46
X 1 = 26(E ) + N = 26(4 ) + 13 = 117
X 2 = 26(O ) + S = 26(14 ) + 18 = 382
Y así sucesivamente con el resto del mensaje.
Para este ejemplo, ALIX usará como claves: " a " = 175 y "b " = 673 . La función de
encriptación quedará así
ek ( X 0 ) = [175( X 0 ) + 673] mod 676
85
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Proceso de descifrado
• Función de B0 : descifrar el mensaje encriptado.
B0 conoce las claves " a " y "b " .
Aplicará la función: [ ]
d x ( y ) = ( y − b)a −1 mod 676
86
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
t 2 = t 0 − (q1 )(t1 )
t 2 = 0 − (q1 )(1) , porque t 0 = 0 y t1 = 1 , por condiciones iniciales.
t 2 = 0 − (3)(1) = −3 , porque q1 del paso anterior es 3 .
t 3 = t1 − (q2 )(t 2 )
t 3 = 1 − (1)(− 3) = 4 , porque q2 del paso anterior es 1 y t 2 = −3 .
t 4 = t 2 − (q3 )(t 3 )
t 4 = −3 − (6 )(4 ) = −27 , porque q3 del paso anterior es 6 y t 3 = 4 .
t 5 = t 3 − (q4 )(t 4 )
t 5 = 4 − (3)(− 27 ) = 85 , porque q4 del paso anterior es 3 y t 4 = −27 .
t 6 = t 4 − (q5 )(t 5 )
t 6 = −27 − (2)(85) = −197 , porque q5 del paso anterior es 2 y t 5 = 85 .
Suspendemos aquí porque se acabaron las q n .
• − 197 mod 676 = 479 , entonces el inverso de 175 es 479 . Se puede probar así:
(175 × 479) − 1 = 83824 , dividiendo entre 676 , el dividendo es exacto 124 .
EJEMPLO 3.9._______________________________________________________________________
46 26
20 1
46 = 26(1) + 20 , se examinan los pesos del alfabeto, 1 corresponde a B y 20 corresponde a U.
46 = 26(B ) + U . La pareja de letras XN → se desencripta como BU.
87
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Proceso de criptoanálisis
La función de EVA: es hacer criptoanálisis; ella ignora las claves " a " y "b " , pero sabe que la
clave " a " es un residuo primo de 676 , y que la clave "b " es cualquier número menor o igual
a 676 . Para hacer criptoanálisis procede a generar un vector con todos los residuos primos de
676 y a esos números le saca el inverso porque el proceso de descifrado implica la siguiente
fórmula.
[
d x ( y ) = ( y − b)a −1 ] mod 676
Para la clave "b " también procede a generar un vector con todos los números menores o iguales
a 676 .
3.4.2. Cifrado RSA: Rivest, Shamir y Adleman.
Este algoritmo está constituido por las claves N ( p, q ), e, d que son respectivamente el módulo
de trabajo, el exponente de cifrado y el exponente de descifrado. Los valores de N y de uno de
los exponentes son públicos; mientras que, los valores del otro exponente, p y q son privados y
secretos.
• El usuario del programa ingresa dos números primos grandes, aproximadamente de cien
dígitos cada uno. Los dos números primos son p y q . El programa debe examinar que los
dos números p y q sean primos. Un número primo es aquel que sólo es divisible por si
mismo y por la unidad.
• Calcular N = p ⋅ q , Calcular φ ( N ) = ( p − 1)(q − 1)
• Cifrado: Para realizar el cifrado C de un mensaje claro M se debe cumplir que
1 < M < N , si el texto claro M > N , se divide M en bloques S , tal que 1 < S < N .
EJEMPLO 3.10.______________________________________________________________________
C ≡ M e mod N
C ≡ 1621151 mod 2419 ,
151
Como resolver módulos grandes 1621 mod 2419
88
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
M ≡ C d mod N Si e ≡ 151
M ≡ 75 2151 mod 2419 e −1 mod φ ( N ) = 2151
M ≡ 1621 e −1 mod 2320 = 2151
Nota: la recuperación del mensaje M también puede lograrse aplicando el teorema chino
de los residuos, así:
{ [ ] [
M ≡ Ap C p mod P + Aq C q mod q mod N
d d
]}
Donde C p ≡ C mod p y C q ≡ C mod q
[ ]
Ap ≡ q q −1 mod p = q p −1 mod N
Aq ≡ p[ p −1
mod q] = p q −1
mod N
{ [
M ≡ Ap C p
dp
] [
mod p + Aq C q
dq
]}
mod q mod N
Donde dp = d mod ( p − 1) y dq = d mod (q − 1)
Observación: en éste cifrado se pueden obtener tres letras, no obstante se agrupó el texto
claro en dos. Para descifrar, se deben agotar todas las opciones posibles.
89
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
En general, DES utiliza una clave simétrica de 64 bits, de los cuales 56 son usados para la
encriptación, mientras que los 8 restantes son de paridad, y se usan para la detección de errores
en el proceso, como la clave efectiva es de 56 bits, son posibles un total de
2 56 = 72.057.594.037.927.936 claves posibles.
Aunque el DES, actualmente ya no es un estándar, se considera un objeto de estudio interesante
en la criptografía y por ello se aborda a continuación una versión simplificada: DES simplificado
(S-DES). DES simplificado (S-DES) fue diseñado por el profesor Edward Schaefer de la
universidad de Santa Clara, como una herramienta para ser usada con fines educativos más que
de seguridad.
El S-DES es un algoritmo de cifrado por bloques. Utiliza un tamaño de bloque de 8 bits, y una
clave secreta de 10 bits. Esto significa que si tenemos un mensaje de tamaño mayor, éste deberá
partirse en bloques de 8 bits. Esto puede resultar muy conveniente, sobretodo si se esta
trabajando con caracteres codificados en código ASCII, en el cual cada caracter se codifica con
8 bits, de esta manera tomaríamos caracter por caracter y lo cifraríamos usando la clave. El S-
DES es un algoritmo de clave secreta, cuyo funcionamiento esta basado en el uso de
permutaciones y sustituciones.
Como se puede observar en la siguiente figura, para cifrar un bloque, inicialmente se aplica una
permutación inicial (IP ) ; una función f K ; una permutación simple SW que lo único que hace
es intercambiar las mitades derecha e izquierda del bloque; luego se vuelve a aplicar la función
f K y finalmente se aplica una permutación, que de hecho es la permutación inversa: IP −1 .
Para descifrar un bloque, se llevan a cabo las mismas operaciones, lo único que cambia es el
orden en el que se utilizan las subclaves K1 y K 2 que son generadas de la clave K .
90
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Generación de claves para S-DES: tanto DES como S-DES, son algoritmos de clave secreta, lo
cual implica que dos entidades que deseen comunicarse deben compartir la misma clave, pues
depende de dicho dato, que se puedan cifrar y descifrar los mensajes fácilmente. S-DES utiliza
una clave K de 10 bits, de la cual, se derivarán un par de subclaves K1 y K 2 , que se
utilizarán en distintas etapas del proceso de cifrado y descifrado. La forma de generar dichas
subclaves se muestra en la siguiente figura.
Clave K
K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
1 0 1 0 0 0 0 0 1 0
Después de haber aplicado la permutación, se observará de la siguiente forma
K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
1 0 0 0 0 0 1 1 0 0
A dicho resultado, se le divide en dos partes
1 0 0 0 0 0 1 1 0 0
A cada una de las cuales se le hace un corrimiento circular a la izquierda. Esto es el bit más a la
izquierda se coloca más a la derecha, y los demás se corren un lugar, lo cual se observa en la
siguiente tabla
0 0 0 0 1 1 1 0 0 0
Este resultado nos va a servir para realizar dos operaciones. La primera de ellas será tomar el
conjunto de 10 bits concatenando ambos bloques como sigue.
K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
0 0 0 0 1 1 1 0 0 0
91
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Se observa que la permutación no se incluyen los bits 1 y 2 ; por lo tanto, después de aplicarla
quedarán solamente 8 bits, a este tipo de permutaciones, se les conoce como permutaciones de
compresión. Así se obtiene la subclave K1 .
Subclave K1
K6 K3 K7 K 4 K 8 K 5 K10 K 9
1 0 1 0 0 1 0 0
La segunda operación que se lleva a cabo es tomar ambos bloques de 5 bits, y a cada uno de
ellos, se le hace un corrimiento circular a la izquierda de 2 posiciones ( 2 corrimientos hacia la
izquierda de una posición), después del cual cada uno de los bloques se verá de la siguiente
manera
0 0 0 0 0 0 0 0 1 1
Por último se juntan los dos bloques anteriores en uno sólo
K1 K 2 K 3 K 4 K 5 K 6 K 7 K 8 K 9 K10
0 0 1 0 0 0 0 0 1 1
Subclave K 2
K6 K3 K7 K 4 K 8 K 5 K10 K 9
0 1 0 0 0 0 1 1
Cifrado S-DES: Se toman bloques de 8 bits, cada uno de los cuales se cifra y forma parte del
mensaje cifrado.
EJEMPLO 3.11.______________________________________________________________________
Suponga que el mensaje esta constituido por un bloque de 8 bits; y que el mensaje M , que se
desea cifrar es:
m2 m6 m3 m1 m4 m8 m5 m7
0 1 1 1 1 1 1 0
92
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Ronda 1: El mensaje que constituye el bloque anterior se separa en dos partes de 4 bits cada
una; Una parte será el bloque izquierdo, denotado por L, y la otra será el bloque derecho,
denotado por R
L R
0 1 1 1 1 1 1 0
Siguiendo el diagrama, que se muestra en la figura anterior, se toman los 4 bits que conforman
el bloque R
R
b1 b2 b3 b4
1 1 1 0
E P
4 1 2 3 2 3 4 1
Queda así
b4 b1 b2 b3 b2 b3 b4 b1
0 1 1 1 1 1 0 1
Estos 8 bits, operan XOR con la subclave k1 = 10100100 que se había generado
anteriormente.
0 1 1 1 1 1 0 1
⊕ 1 0 1 0 0 1 0 0
1 1 0 1 1 0 0 1
93
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Los 4 bits más a la izquierda (MSB) se utilizan para hacer una consulta en la tabla S 0 y los
restantes 4 bits (LSB) se emplean para hacer una consulta en la tabla S1 . A dichas tablas S 0 y
S1 se les conoce como las S-cajas. Para que los cuatro bits MSB: 1101 , puedan realizar la
consulta en S 0 , es necesario ubicar un renglón y una columna. El renglón lo conforman el
primero y el cuarto, de estos cuatro bits, es decir: 11 ; y la columna la conforman el segundo y el
tercer bit, esto es: 10 . Con estos datos buscamos en S 0
S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10
Y se obtiene 11 . Luego, hacemos lo mismo, pero ahora tomando en cuenta los cuatro bits LSB:
1001 . Nuevamente, se toma el primero y el cuarto bit, que conforman el renglón, esto es: 11 ; y
el segundo y el tercero la columna, es decir, 00 . Y se realiza la búsqueda, pero ahora en S1 .
S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11
Y se obtiene 10 . Ahora se concatenan los 2 bits que se hallaron en la caja S 0 con los 2 bits
que se encontraron en la caja S1 . Y el resultado es 1110 . A esta cadena se le aplica la
permutación P4 que aparece a continuación
P4
2 4 3 1
Y como resultado se obtiene 1011 ; este resultado opera XOR con los cuatro bits de la izquierda
denotados por L
0 1 1 1
⊕ 1 0 1 1
1 1 0 0
L R
1 1 0 0 1 1 1 0
L R
1 1 1 0 1 1 0 0
94
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
0 1 1 0 1 0 0 1
⊕ 0 1 0 0 0 0 1 1
0 0 1 0 1 0 1 0
Este resultado lo dividimos en dos partes: 0010 y 1010 . La primera parte la utilizamos para
buscar en S 0 los 2 bits que serán izquierdos
S0 00 01 10 11
00 01 00 11 10
01 11 10 01 00
10 00 10 01 11
11 11 01 11 10
La segunda parte la usamos para buscar en S1 los 2 bits que estarán a la derecha
S1 00 01 10 11
00 00 01 10 11
01 10 00 01 11
10 11 00 01 00
11 10 01 00 11
Con los bits encontrados tanto en S 0 , como en S1 se forma el bloque 0000 , al cual se le aplica
la permutación P4, después de lo cual, el bloque nos queda igual, este opera XOR con el bloque
izquierdo L
0 0 0 0
⊕ 1 1 1 0
1 1 1 0
L R
1 1 1 0 1 1 0 0
IP −1
4 1 3 5 7 2 8 6
Mensaje cifrado C
0 1 1 1 0 1 0 1
95
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Descifrado S-DES
L R
0 1 1 1 0 1 0 1
En la siguiente figura se proporciona un diagrama con los datos que pasan por cada etapa. Es
importante recordar que para hallar los bits en las S-cajas, el renglón se obtiene tomando el
primer y el cuarto bit del dato precedente, y la columna se obtiene tomando el segundo y tercer
bit del dato precedente. Al final se obtiene nuevamente el texto en claro M , que teníamos al
principio.
96
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Este cifrado de clave pública está basado en la dificultad que supone la resolución del logaritmo
discreto cuando se trabaja con números enteros suficientemente grandes.
• Los parámetros de este cifrado son un número primo grande p , de aproximadamente 200
dígitos y un valor entero g , generador del grupo multiplicativo Z p . Los valores p y g son
públicos.
• La clave secreta del receptor es un entero aleatorio x elegido, tal que 1 < x < p − 1 .
• El usuario del programa ingresa un número primo grande p y un número g generador del
grupo multiplicativo Z p ; se debe verificar que el número p dado por el usuario sea
efectivamente primo.
97
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
EJEMPLO 3.12.______________________________________________________________________
p = 13 ⇒ el número 13 es primo, p − 1 = 12
Los elementos de Z p = {1,2,3,4,5,6,7,8,9,10,11,12}
g=2 ⇒ el número 2 es un generador del grupo multiplicativo Z p , porque
21 mod p=2
2 2 mod p=4
2 3 mod p=8
2 4 mod p=3
2 5 mod p=6
2 6 mod p = 12
2 7 mod p = 11
2 8 mod p=9
2 9 mod p=5
210 mod p = 10
211 mod p=7
212 mod p =1
El número 2 elevado a las potencias de todos los elementos de Z p generan los mismos
elementos de Z p . Entonces 2 es un generador de Z p .
Nota: en este ejemplo se encontró que para p = 107 , g = 32 es un número generador
del grupo multiplicativo Z p .
ICA : 820 , se compara 820 así: 1 < 820 < 107 , como 820 > 107 , no cumple la
desigualdad, entonces se divide el mensaje en bloques de dos letras:
IC AR OE SM IT OL OG IA .
IC AR OE : 82 017 144
Para el primer bloque, IC : 82 ; y para el segundo bloque, AR : 017 ; se cumple la
desigualdad 1 <
M < P . Sin embargo, para el tercer bloque no cumple la desigualdad, porque
1 < M < P : 1 < 144 < 107 , así que ese bloque es necesario sub-dividirlo en una letra.
• El mensaje M está compuesto por la pareja de valores enteros C = (r , s ) dado por la
congruencia:
r ≅ y K mod p , a su vez, y = g x mod p
98
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
• " x " es una clave secreta del receptor (proporcionada por el usuario), un número aleatorio
que cumple la siguiente desigualdad: 1 < x < P − 1 . Para el caso del ejemplo que vamos
siguiendo, suponga que el usuario escogió x = 74 , entonces: 1 < 74 < 106 .
• y = g x mod p = 32 74 mod 107 = 53
74 = 1001010 1 Z = 12 mod 107 = 1
Z = 1× 32 mod 107 = 32
0 Z = 32 2 mod 107 = 61
0 Z = 612 mod 107 = 83
1 Z = 832 mod 107 = 41
Z = 41× 32 mod 107 = 28
0 Z = 28 2 mod 107 = 35
1 Z = 35 2 mod 107 = 48
Z = 48 × 32 mod 107 = 38
0 Z = 38 2 mod 107 = 53
• r ≅ y K mod p ≅ 53 49 mod 107 ≅ 16
99
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
t J = t J − 2 − (q J −1 )(t J −1 ) , con t0 = 0 y t1 = 1
t 2 = 0 − (6)(1) = −6
t 3= 1 − (1)(− 6) = 7
t 4 = −6 − (2)(7 ) = −20
−1
inverso (Ver el algoritmo de Cesar). En este caso M = S ⋅ r mod 107 = 82
∑α
i =1
i = 2 + 5 + 8 + 17 + 34 + 71 = 135 .
• Para construir la clave pública, el usuario selecciona un número y lo ingresa con el teclado,
k
ejemplo, w = 137 , compara el valor de w con ∑α
i =1
i , si
k
w > ∑ α i : 137 > 135 entonces el número es válido.
i =1
• El usuario ingresa t , este es un número que cumple la siguiente desigualdad 0 < t < w ,
además, (t , w) : 1 significa que t es un número primo relativo de w . Ejemplo: t = 43 ,
0 < 43 < 137 .
• Se calcula el inverso de t , siguiendo las formulas de los algoritmos anteriores para calcular
−1
el inverso. Para este ejemplo: t = 51
• Se construye la mochila difícil, que hace parte de la clave pública α i ' = α i ⋅ t ⋅ mod w
EJEMPLO 3.13.______________________________________________________________________
α1 ' = 2 ⋅ 43 ⋅ mod 137 = 86
α 2 ' = 5 ⋅ 43 ⋅ mod 137 = 78
α 3 ' = 8 ⋅ 43 ⋅ mod 137 = 70
α 4 ' = 17 ⋅ 43 ⋅ mod 137 = 46
100
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
30 71
0
30 34
0
30 17
1
Cuando el cociente de la división es 1 , el dividendo de la siguiente operación es el residuo
de la primera y así sucesivamente.
13 8
1
5 5
1
0 2
0
Se leen los cocientes de abajo hacia arriba y se recupera el mensaje, así: 011100 . Del
mismo modo se procede con el siguiente resultado del paso anterior (120).
PROBLEMAS Y SOLUCIONES________________________________________________________
A.3.1. Se prueba un sistema ΔPCM colocando en su entrada una señal senoidal de 10KHz y 1V de
amplitud pico a pico. El muestreo se hace a 10 veces la tasa de Nyquist.
a) Cuál es el tamaño del paso requerido para evitar sobrecarga de pendiente y minimizar el
ruido de cuantización?
b) Cuál es la potencia del ruido de cuantización?
101
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
c) Si la entrada del receptor está limitada en banda a 200kHz, cuál es la relación de potencia de
la señal promedia al ruido de cuantización (SNR)0?
Solución:
a)
f = 10 KHz
1
W (t ) = sen(2π * 10 KHz * t )
2
∂W (t ) 1
= * 2π *10 KHz * cos(2π *10 KHz * t )
∂t 2
∂W (t )
= π *10 KHz * cos(π * 20 KHz * t )
∂t
Sin sobrecarga de potencia:
c)
3
⎛S⎞ 3f
⎜ ⎟ = 2 S2
⎝ N ⎠ 8π f a * B
⎛S⎞ 3(200 KHz )3
⎜ ⎟= 2
⎝ N ⎠ 8π (10 KHz ) * 200 KHz
2
⎛S⎞
⎜ ⎟ = 15,2veces
⎝N⎠
A.3.2. Encuentre el código Hamming para el mensaje ”P`” en ascii, paridad impar:
Solución:
P: 70 en Hexadecimal
`: 60 en Hexadecimal.
p`= 01110000,11100000 , m = 16
2n = m + n + 1 → n = 5
102
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Posición 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
del bit
Tipo de 0 1 1 1 0 H 0 0 0 1 1 1 0 H 0 0 0 H 0 H H
bit.
10 0 1 0 1 0
11 0 1 0 1 1
0 0 0 0 1
12 0 1 1 0 0
0 1 1 0 1
18 1 0 0 1 0
1 1 1 1 1
19 1 0 0 1 1
0 1 1 0 0
20 1 0 1 0 0
Código
Hamming 1 1 0 0 0
[
m= 1 1 1 0 . ]
Se quiere codificar m utilizando un código Hamming (7,4).
e1 = [0 1 1 1 0 0 0] ,
¿Cuál es el mensaje estimado a la salida del decodificador? Si no es igual al mensaje
enviado justifique las posibles causas.
c) Si se transmite la palabra codificada por un canal con un patrón de error
e2 = [0 0 1 1 0 0 0] ,
¿Cuál es el mensaje estimado a la salida del decodificador? Si no es igual al mensaje
enviado justifique las posibles causas.
Solución:
Para el código
103
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
⎡1 1 0 1 0 0 0⎤
⎢0 ⎡1 0 0 1 0 1 1 ⎤
1 1 0 1 0 0⎥⎥ ⎢ ⎥
G=⎢ y H = 0 1 0 1 1 1 0 .
⎢ ⎥
⎢1 1 1 0 0 1 0⎥
⎢ ⎥ ⎢
⎣ 0 0 1 0 1 1 1 ⎥⎦
⎣1 0 1 0 0 0 1⎦
a) c = mG = [0 1 0 1 1 1 0]
b) r1 = c + e1
r1 = [0 0 0 1 1 1 0]
El síndrome:
s1 = r1H T
s1 = [0 1 0]
Con el síndrome calculado se elige el patrón de error perteneciente al coset líder de mayor
probabilidad. La palabra código estimada es
c) r 2 = c + e2
r 2 = [0 1 1 1 0 1 0]
El síndrome:
s2 = r 2H T
s 2 = [0 1 0]
Con el síndrome calculado se elige el patrón de error perteneciente al coset líder de mayor
probabilidad. La palabra código estimada es
d) r 3 = c + e3
r 3 = [0 0 0 1 1 0 1]
El síndrome:
s 3 = r 3H T
s3 = [0 0 0]
Con el síndrome calculado se tiene que no hubo ningún error en la transmisión.. La palabra
código estimada es
104
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
A.3.4. Una entidad A elige el cifrado RSA para cifrar la información, con las siguientes claves:
p = 5 y q = 11 , por tanto n = 55
Solución:
Al ser p y q números primos se tiene que φ (n) = ( p − 1)(q − 1) = 40 ; A elige para su clave
pública e = 3 , que es primo relativo con 40. Para calcular d, el inverso de e, puede usarse el
teorema de Euclides extendido o aplicar la fórmula de Euler, teniendo en cuenta que
φ (40) = φ (2 3 ⋅ 5) = (2 2 ⋅ 1)(5 0 ⋅ 4 ) = 16 , con lo que:
Si el mensaje que se desea enviar B se representa por m = 18 , el valor del mensaje cifrado
sería:
Solución:
Para codificar numéricamente el mensaje se parte del alfabeto español de 27 letras. A la letra “a”
se le asigna el valor de 0, y a la “z” el valor de 26. Los valores relativos asignables a cada una de
las letras del mensaje “tañer” serían respectivamente: 20, 0, 14, 4 y 18. Para determinar el
tamaño del bloque utilizado para cifrar con RSA hay que tener en cuenta que si éste estuviese
constituido por dos caracteres, el valor de m para los dos primeros de la palabra “tañer” sería:
m =" ta" = 20 ⋅ 27 + 0 = 540 , que, como puede comprobarse, es mucho mayor que 55, valor
de n. Por ello no se tiene más remedio que considerar cada bloque constituido por una sola letra.
Por la letra “t” se tendría:
c = 20 7 mod 55 = 15
Para realizar este cálculo puede hacerse uso de un algoritmo de exponenciación rápida propuesto
por Knuth. Para esa misma letra, cuando A reciba el primer bloque del mensaje cifrado, el valor
del primer bloque del mensaje claro sería:
m = 15 23 mod 55 = 20 , que es el valor asociado a la letra “t”. Con las restantes letras del
mensaje se procederá de forma similar.
105
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
PROBLEMAS _______________________________________________________________________
3.1. Se debe diseñar un modulador delta para transmitir la información de una señal análoga que
tiene un nivel pico a pico de 1 V y un ancho de banda de 3.4KHz, Suponga que la forma de onda
debe transmitirse sobre un canal que tiene una respuesta en frecuencia extremadamente pobre
por arriba de 1MHz.
a. Seleccione el tamaño de paso apropiado y la tasa de muestreo para una señal senosoidal de
prueba y analice el desempeño del sistema usando los valores de los parámetros que Usted
haya seleccionado.
b. Si el sistema DM se ha de usar para transmitir la información de una señal análoga de voz,
seleccione el tamaño de paso apropiado cuando la tasa de muestreo es de 25KHz. Analice el
desempeño del sistema bajo estas condiciones.
3.2. Una fuente discreta sin memoria X tiene un alfabeto de 8 símbolos xi, i = 1,...,8, con
probabilidades 0.25, 0.20, 0.15, 0.12, 0,10, 0.08, 0.05 y 0.05.
a. Use el algoritmo de Huffman para generar un código binario para la salida de esta fuente.
b. Halle la eficiencia del código hallado en a).
3.3. Dibuje con cuidado una señal analógica que varía muy lentamente. Esta función va a ser
muestreada 10 veces, con muestras espaciadas a una distancia algo menor que el intervalo usual
del Nyquist. Suponga que las muestras se alimentan a un cuantizador de dos niveles, como parte
de un sistema de modulación delta. Arranque el sistema comparando la primera muestra con 0,
número que también se usa como primera estimación inicial. Se usa estimación según la muestra
∧ ∧
previa: g j = 0.9 x j −1 . Donde x j −1 es la estimación en la muestra ( j − 1) .
Muestre la secuencia de salidas del modulador delta ± k .
'
a)
b) Arranque el sistema con un valor relativamente alto de k ' ; rastree la función original con su
'
estimación. Reduzca el valor el valor de k hasta que se produzca ruido de sobrecarga.
3.4. Considere una señal de prueba senoidal x(t)=Asen ω m t. Dibuje la onda senoidal en el intervalo
− π / 2 < ω m t < π / 2 . La onda senoidal se va a muestrear muchas veces a la velocidad
fs > fm .
Demuéstrese que si k f s 2πAf m < 1 , resultara ruido de sobrecarga ( k es el tamaño del
' '
a)
escalón del modulador delta )
b) Sea α ≡ k ' f s 2πAf m ≡ 0.707 . Demuéstrese que la región de ruido de sobrecarga inicial
en ω m t = − π ≡ θ1 . Suponiendo que el ruido de cuantización es despreciable, de manera
4
que la salida del receptor del modulador delta es prácticamente una línea recta, dibuje la
salida de receptor hasta el máximo de la curva senoidal y encuéntrese el tiempo ω m t ≡ θ 2 ,
donde termina la región de sobrecarga.
2
⎡1 θ2 ⎛ k ` fs ⎞⎤
c) Verifíque la ecuación N o = ∫ ⎢ Asenθ − ⎜⎜ (θ + θ1 ) − Asenθ1 ⎟⎟⎥ dθ para el
π 1⎣
− θ
⎝ wm ⎠⎦
ruido de sobrecarga.
3.5. Resolver los siguientes ejercicios sobre las técnicas de cifrado vistas en clase:
a. A partir de los siguientes dos ejemplos de cifrado-descifrado de CESAR, con una letra,
identifique la clave (en ambos casos es la misma) y justifique su respuesta.
m: CESAR, c: GIWEW
c: FVYXYW, m: BRUTUS
106
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
Paridad impar:
H = Hex : (0 × 48), Binario : 01001000, P.I : 11001000
O = Hex : (0 × 4 F ), Binario : 01001111, P.I : 01001111
Y = Hex : (0 × 59), Binario : 01011001, P.I : 11011001
Claves: K1 : (10100100), K 2 : (01000011)
IP : (2,6,3,1,4,8,5,7), IP −1 : (4,1,3,5,7,2,8,6)
d. Cifrar en RSA el mensaje claro “PILA”, agrupando el mensaje claro en dos letras. Utilice
las siguientes claves:
107
COMUNICACIONES DIGITALES CODIFICACIÓN DE LA FUENTE Y PROCESAMIENTO DE DATOS
108