SlideShare una empresa de Scribd logo
1 de 37
Estudiantes:
Criollo Carlos
Cobos Juan
Valladarez Carlos
Mora Edgar
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
COMPRESIÓN DE
ARCHIVOS
ÍNDICE
● Introducción
● Compresión de Huffman
● Vector Quantization VQ
● Conclusiones
● Bibliografía
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
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
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
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
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
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
A
5
B
2
C
1
D
1
R
2
2
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
A
5
B
2
C
1
D
1
R
2
2
4
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
A
5
B
2
C
1
D
1
R
2
2
4
6
A
5
0
B
2
C
1
D
1
R
2
2
4
6
11
0
0 0
1
1
1 1
A 0
B 11
R 100
C 1010
D 1011
A B R A C A D A B R A
0 11 100 0 1010 0 1011 0 11 100 0
A 0
B 11
R 100
C 1010
D 1011
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
Tiempos medidos:
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
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
VQ Bidimensional
* codeWord
/ regiones de codificación
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
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
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
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
- 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
UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
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
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
● 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
● 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)
vector medio (6,6)
Code
Word
(22,24) (06,06)
vector medio (16,15)
vector medio (16,15)
Code
Word
(22,24) (06,06)
(16,15) (28,33)
Code
Word
(22,24) (06,06)
(16,15) (28,33) (03,04) (09,08)
(00,00)
(00,00)
Code
Word
(22,24) (06,06)
(16,15) (28,33) (03,04) (09,08)
(16,15) (00,00) (28,33) (00,00)
(03,02)
(03,06)
(08,08)
(10,10)
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
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.
FINALMENTE
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í:
EMPLEANDO VQ a un Nivel 1
(empleando dos codeword 0 y 1)  Dos colores
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
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

Más contenido relacionado

Similar a Compresión De Archivos con y sin Pérdida

Solución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlabSolución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlabWilder Ramirez
 
H.264/SVC over P2P Network
H.264/SVC over P2P NetworkH.264/SVC over P2P Network
H.264/SVC over P2P Networkrameau1982
 
Compresion de Video - Telecomunicaciones III
Compresion de Video - Telecomunicaciones III Compresion de Video - Telecomunicaciones III
Compresion de Video - Telecomunicaciones III Andy Juan Sarango Veliz
 
Respuesta en Frecuencia
Respuesta en FrecuenciaRespuesta en Frecuencia
Respuesta en Frecuenciavirginar07
 
Deber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-niseDeber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-niseALEX PORRAS
 
REDES NEURONALES Base Radial
REDES NEURONALES Base RadialREDES NEURONALES Base Radial
REDES NEURONALES Base RadialESCOM
 
Manual qcad 0910(ii)
Manual qcad 0910(ii)Manual qcad 0910(ii)
Manual qcad 0910(ii)Avel·lí
 
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...José Ramón Cerquides Bueno
 
Redes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasRedes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasIvan Gooseman
 
Algoritmos y diagramas de flujos
Algoritmos y diagramas de flujosAlgoritmos y diagramas de flujos
Algoritmos y diagramas de flujosWalter Manero
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfmargothingrithllanca
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfmargothingrithllanca
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESFranklin J.
 
Tutorial De Comunicacion De Datos
Tutorial De Comunicacion De DatosTutorial De Comunicacion De Datos
Tutorial De Comunicacion De Datosger hernandez
 
Clase 7 la_programacion
Clase 7 la_programacionClase 7 la_programacion
Clase 7 la_programacionDr.Ing. Uriel
 
Instrumentación electrónica virtual - BOOLE
Instrumentación electrónica virtual - BOOLEInstrumentación electrónica virtual - BOOLE
Instrumentación electrónica virtual - BOOLEFrancesc Perez
 

Similar a Compresión De Archivos con y sin Pérdida (20)

Solución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlabSolución de un problema eliptico elementos finitos matlab
Solución de un problema eliptico elementos finitos matlab
 
H.264/SVC over P2P Network
H.264/SVC over P2P NetworkH.264/SVC over P2P Network
H.264/SVC over P2P Network
 
Compresion de Video - Telecomunicaciones III
Compresion de Video - Telecomunicaciones III Compresion de Video - Telecomunicaciones III
Compresion de Video - Telecomunicaciones III
 
A.1.3. Investigación.pdf
A.1.3. Investigación.pdfA.1.3. Investigación.pdf
A.1.3. Investigación.pdf
 
Respuesta en Frecuencia
Respuesta en FrecuenciaRespuesta en Frecuencia
Respuesta en Frecuencia
 
Tecnologiadigital
TecnologiadigitalTecnologiadigital
Tecnologiadigital
 
Deber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-niseDeber 7-cap-2-matlab-nise
Deber 7-cap-2-matlab-nise
 
REDES NEURONALES Base Radial
REDES NEURONALES Base RadialREDES NEURONALES Base Radial
REDES NEURONALES Base Radial
 
Manual qcad 0910(ii)
Manual qcad 0910(ii)Manual qcad 0910(ii)
Manual qcad 0910(ii)
 
Comunicaciones
ComunicacionesComunicaciones
Comunicaciones
 
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...
Comparación de técnicas de detección de cambios de plano sobre vídeo comprido...
 
Ut4
Ut4Ut4
Ut4
 
Redes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadasRedes neuronales artificiales_aplicadas
Redes neuronales artificiales_aplicadas
 
Algoritmos y diagramas de flujos
Algoritmos y diagramas de flujosAlgoritmos y diagramas de flujos
Algoritmos y diagramas de flujos
 
Mas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdfMas_de_400_ejercicios_de_programacion_en (2).pdf
Mas_de_400_ejercicios_de_programacion_en (2).pdf
 
Mas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdfMas_de_400_ejercicios_de_programacion_en (1).pdf
Mas_de_400_ejercicios_de_programacion_en (1).pdf
 
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALESDISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
DISPLAY 7 SEGMENTOS CIRCUITOS DIGITALES
 
Tutorial De Comunicacion De Datos
Tutorial De Comunicacion De DatosTutorial De Comunicacion De Datos
Tutorial De Comunicacion De Datos
 
Clase 7 la_programacion
Clase 7 la_programacionClase 7 la_programacion
Clase 7 la_programacion
 
Instrumentación electrónica virtual - BOOLE
Instrumentación electrónica virtual - BOOLEInstrumentación electrónica virtual - BOOLE
Instrumentación electrónica virtual - BOOLE
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Compresión De Archivos con y sin Pérdida

  • 1. Estudiantes: Criollo Carlos Cobos Juan Valladarez Carlos Mora Edgar UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS COMPRESIÓN DE ARCHIVOS
  • 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
  • 8. A 5 B 2 C 1 D 1 R 2 2 UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
  • 9. A 5 B 2 C 1 D 1 R 2 2 4 UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
  • 12. A B R A C A D A B R A 0 11 100 0 1010 0 1011 0 11 100 0 A 0 B 11 R 100 C 1010 D 1011 UNIVERSIDAD DE CUENCA PROGRAMACION 3 INGENIERÍA DE SISTEMAS
  • 13. Tiempos medidos: 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
  • 15. VQ Bidimensional * codeWord / regiones de codificación 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
  • 20.
  • 21. 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)
  • 27. vector medio (16,15) vector medio (16,15) Code Word (22,24) (06,06) (16,15) (28,33)
  • 29. (00,00) (00,00) Code Word (22,24) (06,06) (16,15) (28,33) (03,04) (09,08) (16,15) (00,00) (28,33) (00,00)
  • 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