Beruflich Dokumente
Kultur Dokumente
COMPRESIÓN DE DATOS
2.4.2 LZHuff
2.4.3 LZP
4.1 JPEG
4.2 MPEG
CONCLUSIONES
BIBIOGRAFIA
Existen muchos métodos de compresión, ya sea por el tipo de algoritmo que utiliza,
la metodología para revertir la compresión (reversibilidad), la expectativa de la
aplicación que la utiliza (video, voz tiempo real, etc) y por la cantidad de perdida de
información.
Asi como existen distintos tipos de compresión de datos, existen también distintos
algoritmos de compresión. A continuación listaremos algunos de ellos:
LZ77
LZ78
LZW
Huffman
Aritméticos
Fractales
MPEG
JPEG
Este tipo de algoritmo puede utilizar la técnica de múltiples contextos; estos a su vez, utilizan la
probabilidad condicional al modificar la fórmula de Shanon, de esta manera, incrementan las
probabilidades de aparición generando códigos más cortos (comprimiendo más). Adicionalmente,
parten de una concepción estadística, que reconoce como altamente probable la aplicación de la
misma acción ante una misma situación (acierto predictor) basandose en algoritmos estadísticos
clásicos, pero modifican la forma de calcular la probabilidad de la apariciones considerando
probabilidades condicionales (contextos).
Contextos:
Se parte de la base de que un texto tiene secuencias que se repiten, por ejemplo, en un programa
escrito en C, luego del caracter “;” es altamente probable un fin de linea. Para cada carater, el o los
caracteres precedentes son su contexto. El orden de un contexto es la cantidad de caracteres
precedentes que se toman en cuenta para predecir. Orden 0 (“O(0)”) significa ningún caracter.
Orden 1 (“O(1)”), un caracter.
Este método realice un consumo elevado de memoria por la gran cantidad de datos que debe
registrar.
Para cada caracter (o cadena) se almacena una tabla de probabilidades asociada para considerar a
todos los caracteres que le pueden seguir.
Utilizar distintas tablas de probabilidades según el contexto ayuda a predecir mejor, esto equivale
a mejores modelos probabilísticos que a su vez equivalen a una menor emisión en bits. Por otro
lado, O(0) necesita una tabla de 256 posiciones (una para cada caracter), O(1) requiere de una
tabla de 256x256 y así sucesivamente, esto se traduce en un crecimiento exponencial de las tablas,
por lo que si la fuente no tiene patrones repetidos, utilizar contextos no mejora la compresión.
prevW:=escape;
repeat
if WA es nueva then
emitir un escape;
else
endif;
prevW:=WA;
until fin-de-archivo.
El algoritmo PPM presenta una buena razón de compresión, pero su velocidad puede llegar a ser
inadecuada para algunas aplicaciones como la transmisión de datos; esta mantiene un diccionario
Un modelo PPMC de orden O lee un símbolo s y considera los O símbolos como el contexto actual.
Después busca el contexto seguido del símbolo s. Si el símbolo no se encuentra, el modelo
“escapa” al siguiente contexto de orden mas bajo O-1 mediante la transmición de un código de
escape; este proceso continua hasta que el símbolo se encuentra o el modelo alcanza el orden 0.Si
el símbolo no se encuentra en el orden 0, entonces un escape final es transmitido y el símbolo s se
predice por el orden -1, donde todos los símbolos tienen la misma probabilidad (1/256, donde el
alfabeto tiene 256 símbolos). Por último, el diccionario se actualiza añadiendo el símbolo s al
contexto correspondiente. Las siguientes fórmulas se usan para calcular las probabilidades de los
símbolos y del escape:
Para ejemplificarlo tomamos una cadena de caracteres. Por claridad, representamos el espacio en
blanco con un guión bajo.
Después de procesar la cadena de prueba, las probabilidades de los símbolos de acuerdo al estado
actual del diccionario son las mostradas en la siguiente Tabla. Esta tabla se obtuvo por separado,
por lo que comprobamos el correcto funcionamiento del algoritmo.
Un algoritmo hibrido es uno que combina dos o más algoritmos que solucionan el mismo
problema, ya sea escogiendo uno (a merced de los datos), o cambiando entre ellos sobre el curso
del algoritmo. Esto es hecho generalmente para combinar caraterísticas deseadas de cada uno, a
fin de que el algoritmo global sea mejor que los componentes individuales.
Combina run-lenght con estadística (Huffman), sólo es eficiente cuando un carácter es muy
repetido, más que el 50% de ocurrencias, en su contra parte, Huffman no es efectivo porque no
puede codificar con menos de 1 bit, puede ser estático o dinámico. Este método codifica la
longitud del caracter más probable; por cada ocurrencia se escribe su longitud en binario, se le
Referencias:
http://pdi-fich.wdfiles.com/local--files/teorias/PDI_Unidad_VIb.pdf
The data compression book – Second edition – Mark Nelson – Jean Loup Gailly
https://ccc.inaoep.mx/~cferegrino/Publicaciones/articulos/Impl_FPGA_PPMC_TCR04.pdf
Ejemplo.
Por 1960 Cloude E. Shannon y Robert M Fano desarrollaron un procedimiento para generar un
árbol de código binario. El procedimiento evalúa la probabilidad del símbolo y asigna palabras de
código con una longitud de código correspondiente
La utilización de este código tiene sentido si se desea aplicar un algoritmo simple con un alto
rendimiento y los requisitos mínimos para la programación. Un ejemplo de este método esta
especificado en el formato zip.
Ejemplo1
Para crear un árbol de código de acuerdo con Shannon y Fano una tabla ordenada se requiere
proveer la frecuencia de cualquier símbolo. Cada parte de la tabla se divide en dos segmentos. El
algoritmo tiene que asegurarse de que, o bien la parte superior y la parte inferior del segmento
tienen casi la misma suma de frecuencias. Este procedimiento se repite hasta que queden
símbolos iguales.
Los datos originales se pueden codificar con una longitud media de 2,26 bits, una codificación
lineal de 5 símbolos requeriría 3 bits por símbolo, pero antes de generar un árbol de código de
Shannon-Fano la tabla debe ser conocida o debe derivarse de los datos anteriores.
El ejemplo muestra la construcción de un código Shannon para un pequeño alfabeto. Los cinco
símbolos que pueden ser codificados tienen la siguiente frecuencia.
Todos los símbolos son ordenados por frecuencia, de izquierda a derecha. Dividiendo entre B y C
obtenemos un total de 17 en el grupo de la derecha y 22 en el de la izquierda. Esto minimiza la
diferencia total entre los dos grupos. Con esta división, A y B tendrán ambas un código que
empezará con el bit 0, y C, D y E con el bit 1. Seguidamente, la mitad izquierda del árbol se
subdivide en A y B, lo que pone a A en una hoja con el código 00 y a B en otra con el código 01.
Tras cuatro divisiones, terminamos el árbol de códigos. Al final, los símbolos del árbol con
frecuencias más altas tienen todos códigos de 2 bits, y los otros dos símbolos con menor
frecuencia tienen códigos de 3 bits, como se ve en la tabla inferior.
Es un compresor que utiliza como base el aritmético, de la misma forma que el Modelo de
Shannon. Se comporta bien si la fuente es de salida BS y MTF.
Utiliza 9 modelos o contextos numerados donde los más altos machean con más cantidad de
símbolos.
Ejemplo 002003508
Todos los sistemas requieren de dos algoritmos, el primero es para codificar y el segundo es el
decodificador, es decir, comprimir los datos en el origen en consecuencia descomprimirlos en el
destino.
EL estándar JPEG:
Desarrollado por expertos fotográficos, este estándar tiene cuatro modos y muchas opciones estás,
se deben a que las imágenes se puede aplicar efectos como: invertir, girar, transponer. Definido en
el estándar 10918. Utilizado para codificar imágenes de video RGB de 24 bit.
Paso 2: Aplicar una transformación discreta de cosenos a cada uno de los 7200 bloques
separadamente. En este paso matemáticamente se da sin pérdidas mientras que llevado a la
práctica utilizando números en coma flotante se introduce error de redondeo, lo que significa
pérdida de información.
Paso 4: reduce el valor de cada bloque reemplazándolo por la cantidad en que difiere del elemento
correspondiente ene l bloque previo.
Paso 5: recorrer la tabal en zigzag de izquierda a derecha y de arriba hacia abajo para el ejemplo
anterior hay 38 ceros al final de la matriz.
Paso 6: Finalmente se codifica por Huffman los números para almacenamiento o transmisión.
Es estándar “JPEG “ofrece una comprensión de 20:1 utilizado frecuentemente por los usuarios,
además decodificar requiere solo ejecutar el algoritmo al revés, JPEG es muy simétrico: decodificar
lleva el mismo tiempo como codificar.
El estándar MPEG:
Son los algoritmos más importantes para comprimir videos y son un estándar desde 1993. Aquí se
comprime video y audio sin embargo el video necesita más ancho de banda además contiene mayor
redundancia que el audio. Existen cuatro versiones: MPEG-1, MPEG-2, MPEG-3, MPEG-4.
Conclusiones:
Los algoritmos que permiten comprimir los datos nos permitieron transmitir archivos en
menor tiempo.
Las técnicas utilizadas para ciertas codificaciones de datos presentan perdida, sin embargo
es imperceptible para el usuario final.
Actualmente el tiempo en comprimir un archivo es casi igual al tiempo utilizado para
descomprimir el archivo.
Algunas técnicas y algoritmos de compresión, matemáticamente son precisos, es decir, se
recupera el mismo archivo, pero al llevarlo a la práctica este archivo contiene una ligera
pérdida ya que en el trascurso de decodificación existe el redondeo matemático.
Mediante el siguiente trabajo se conoció sobre las técnicas y algoritmos de comprensión de
datos.