La presente diaposivita trata acerca de la comprensión de datos, con y sin perdidas.
Para la comprension sin pérdida, se menciona el algoritmo de Huffman.
Para la compresion con pérdida, se menciona el argotimo Vector Quantization y se describe un ejemplo para comprimir una imágen.
2. ÍNDICE
● Introducción
● Compresión de Huffman
● Vector Quantization VQ
● Conclusiones
● Bibliografía
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
3. Materiales y Métodos
● NetBeans
● DevC++
Enlaces al código fuente en Java, tras la lógica de estos algoritmos:
Codigos: https://github.com/chey3002/Compresiones
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
4. Compresión de Huffman
El algoritmo de Huffman es un algoritmo para la construcción de códigos de
Huffmann, desarrollado por David A. Huffmann en 1952 y descrito en “A Method
for the Construction of Minimum Redundancy Codes”.
El algoritmo consiste en la creación de un árbol binario que tiene cada uno de los
símbolos por hoja, y construido de tal forma que siguiéndolo desde la raíz a cada
una de sus hojas se obtiene el código Huffman asociado.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
5. Pasos:
1. Primero calculamos los pesos de los símbolos y los
ordenamos de forma ascendente
2. En el paso anterior obtenemos n árboles. Ahora
fusionamos los dos primeros árboles sumando sus
frecuencias y volviendo a ordenar
3. Seguimos agrupando pares de árboles hasta obtener
solamente uno. La raíz del árbol resultante debe de ser
la suma de los pesos
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
6. 4. Ahora a partir de nuestro árbol
obtendremos la codificación de Huffman para
nuestra cadena. La regla que hay que seguir es la
siguiente: Cuando nos encontremos en un nodo
las ramas a la izquierda valen ceros y a la derecha
valen unos.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
7. Ejemplo : ABRACADABRA
A:5 B:2 R:2 C:1 D:1
A
5
B
2
C
1
D
1
R
2
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
14. Vector Quantization VQ
● Compresión con pérdidas
● Útil para imágenes y sonidos
● Se basa en redondeos
-2 -1 0 1 2 3 4 4
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
16. Ejemplo
Sea una lista → [5 3 2 0 1 7]
su representación binaria sería → [101 011 010 000 001 111] nºbits/c: 3
la nueva lista queda: [5 3 3 1 1 7] → [10 01 01 00 00 11] nºbits/c: 2
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
0 1 2 3 4 5 6 7
00 01 10 11
17. Mediante código ASCII
● Se emplea la misma técnica anterior pero con el código Ascii
Rango CW Nuevo Valor
[0 2) 1 0
[2 4) 3 1
[4 6) 5 2
[8 10) 9 3
[12 14) 13 4
….
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
18. VQ para imágenes
- El objetivo primordial de la compresión de imágenes digitales es la reducción del
número de bits que requieren dichas imágenes con la menor pérdida de calidad
posible.
- Un VQ se define mediante un conjunto de código de N vectores de dimensión k y una
regla de comparación, la imagen principal es particionada en bloques de igual tamaño,
p x q pixeles.
- Se selecciona un vector que será de entrada, este pasa a ser comparado con todos los
vectores del LC hasta encontrar un vector con el que tenga mayor similitud, a este
vector se le asigna un identificador que por lo general es una palabra binaria.
- Esta palabra será transmitida al decodificador, este utilizara la identificación para el
direccionamiento de dicho vector, seleccionado en su posición correcta con respecto a
la imagen inicial, este proceso repetirá con todos los vectores.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
19. - La cuantificación vectorial permite regímenes binarios en bits por pixel
fraccionado, esta característica es fundamental al momento de evaluar el sistema
VQ.
- Al ser un algoritmo con pérdida nos conduce directamente al concepto de
distorsión.
- Es necesario conocer un grado de diferencia o similitud entre la imagen inicial y la
final (criterio de fidelidad).
COMPRENSIÓN DE IMÁGENES:
Sin Pérdida:
No adaptativos (Huffman), Semi Adaptativos, Adaptativos (Run Lengh
Encode)
Con Pérdida:
JPEG, VQ , entre otros.
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
22. ESTRATEGIA DE LA CUANTIFICACIÓN
1. (NIVEL 0) Se define un conjunto de Vectores
2. Se obtiene el promedio de los vectores agrupados.
3. Se define un rango superior e inferior al vector promedio (con respecto de la unidad).
→ vectorPromedio (3,5) : inferior (2,4), superior (4,6)
4. Se agrupan los vectores con respecto de los vectores de ponderación que den la
menor distancia.(empleando la distancia euclidiana). Con esto se obtiene un nuevo
(NIVEL) (de aquí en adelante cada nivel devuelve el doble de agrupaciones) → Nivel 1
= 2, Nivel 2 = 4 , ….
5. Se repite 2 dependiendo el nivel deseado (óptimo 4 niveles)
6. El último nivel almacena las codeWord (vectores promedio)
7. Se reemplazan los vectores iniciales por los aproximados (codebook)
PARA RECUPERAR → Reemplazar codeBook empleando codeWordsUNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
23. VQ PARA COMPRIMIR IMÁGENES (EJEMPLO)
● Imaginemos un cuadro
pixelado de 5x6 de la siguiente
manera:
● Se agrupan en pares
representativos (par vectores
a cuantizar, restringir):
“Se obtienen 15 pares”
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
24. ● Se obtiene el punto medio: (8,8) → (codeWord)
● Se define un rango inferior y superior (7,7) (9,9)
● Se emplea la distancia euclidiana entre cada punto del
conjunto de vectores y los rangos definidos.
Ejemplo:
para (16,15) y (7,7)
(16-7)*(16-7)+(15-7)*(15-7)=145
para (16,15) y (9,9)
(16-9)*(16-9)+(15-9)*(15-9)=85
25. ● Se obtienen dos grupos
correspondientes al NIVEL 1
● A estos grupo se aplica la misma
lógica, dando como resultado.
● Nótese que al obtener el valor
medio para cada grupo, se esta
definiendo las nuevas codeWord.
→ vector medio
(22,24)
31. Code
Word
(22,24) (06,06)
(16,15) (28,33) (03,04) (09,08)
(16,15) (00,00) (28,33) (00,00)
0 1 2 3 4 5 6 7
(03,02) (03,06) (08,08) (10,10)
NIVEL 1: CodeWords 2
NIVEL 2: CodeWords 4
NIVEL 3: CodeWords 8
32. VECTOR NIVEL 0 → CODEBOOK
● Se reemplaza los vectores del nivel 0 con el codeWord mas proximo
(distancia mínima entre dos puntos) en este caso se empleamos el NIVEL 2.
34. CONSIDERANDO TONALIDADES
Si cada número representaba una
tonalidad en escala gris, la imagen
original se vería así:
Y la imagen comprimida a
un nivel 2 seria así:
35. EMPLEANDO VQ a un Nivel 1
(empleando dos codeword 0 y 1) Dos colores
36. Conclusiones
Emplear comprensión de datos es importante para ámbitos de transmisión y
almacenamiento de los mismos, sin embargo, existen algoritmos que comprimen
y recuperan en su totalidad la información (Con gran complejidad) y otros que
aproximan resultados, empleando pérdidas.
Al tratar con texto es esencial emplear algoritmos de comprensión sin pérdida,
mientras que al manipular imágenes, videos o sonido, no es necesario, puesto
que la información perdida al comprimir no resulta muy evidente al
descomprimirla.
El algoritmo VQ en imágenes, reduce el número de colores empleadas en una
imagen (aproxima el valor de los pixeles a través de promedios)
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
37. Bibliografía:
1. Gersho, A., & Gray, R. M. (2012). Vector quantization and signal compression (Vol. 159). Springer Science & Business Media.
2. Sandoval Mario, Algoritmo de comprensión de Imágenes de alta resolución sin pérdidas,Instituto politécnico nacional ,2008,
México.
3. Alvarez, L. (1984). Cuantificacion Vectorial de Imagenes. Obtenido de
http://oa.upm.es/1187/1/PFC_LUIS_ALVAREZ_SATORRA.pdf
4. Gray, R. (2002). Cuantificacion Vectorial. Obtenido de: http://www.data-compression.com/vq.shtml
5. Data -Comprenssion Vector-Quantzation, Sitio Web, fuente: http://www.data-compression.com/vq.shtml, fecha de acceso:
18/06/2017
6. Sarmiento, L. (2000). Cuantificacion Vectorial. Obtenido de
http://www.ptolomeo.unam.mx:8080/xmlui/bitstream/handle/132.248.52.100/861/A7.pdf?sequence=7
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS