SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
´
˜
DISENO Y PROGRAMACION DE UN CODEC
HUFFMAN
Cristian Aguirre Esparza
cbaguirre@utpl.edu.ec
Edwin Castillo
eacastillo4@utpl.edu.ec

Abstract—A medida que la necesidad de los usuarios de enviar
y recibir informaci´ n cada ves es mas extensa, surgio la necesidad
o
de comprimir dicha informaci´ n de tal manera que esta sea
o
posible enviarla y recibirla sin ocasionar perdidas pero a su ves
en un numero menor de datos, de esta manera facilitar en mucho
las comunicaciones. En base a esto la practica a desarrollarse,
˜
es el de disenar y programar un c´ digo HUFFMAN ya sea
o
para audio, video o texto, y utilizando otro c´ digo sin perdidas
o
comprobar el funcionamiento del c´ digo HUFFMAN. En nuestro
o
caso hemos elejido texto, ya que consideramos que de los tres
campos, con texto se nos facilitaria ver y entender la operaci´ n y
o
el funcionamiento del c´ digo, que es el objetivo de esta pr´ ctica.
o
a
Keywords—Comprensi´ n, matlab, texto, huffman, RLZ.
o

´
I. INTRODUCCION

E

N ciencias de la computaci´ n y teor´a de la informaci´ n,
o
ı
o
la codificaci´ n Huffman es un algoritmo usado para
o
compresi´ n de datos. El t´ rmino se refiere al uso de una tabla
o
e
de c´ digos de longitud variable para codificar un determinado
o
s´mbolo (como puede ser un caracter en un archivo), donde la
ı
tabla ha sido rellenada de una manera espec´fica bas´ ndose en
ı
a
la probabilidad estimada de aparici´ n de cada posible valor
o
de dicho s´mbolo. Fue desarrollado por David A. Huffman
ı
mientras era estudiante de doctorado en el MIT, y publicado
en “A Method for the Construction of Minimum-Redundancy
Codes”. Para poder utilizar el algoritmo de Huffman es
necesario conocer de antemano las frecuencias de aparici´ n
o
de cada s´mbolo, y su eficiencia depende de lo pr´ ximas
ı
o
a las frecuencias reales que sean las estimadas. Algunas
implementaciones del algoritmo de Huffman son adaptativas,
actualizando las frecuencias de cada s´mbolo conforme
ı
recorre el texto. [1]

II. OBJETIVOS
1)
2)
3)
4)

Dise˜ ar un codec Huffman en base a la teor´a revisada.
n
ı
Programar el codec Huffman.
Realizar pruebas de funcionamiento del codec.
Validar el codec Huffman (comparar con otro codec de
compresi´ n con/sin p´ rdidas).
o
e

´
III. MARCO TEORICO
´
A. COMPRESION DE DATOS (TEXTO)
La compresi´ n es un caso particular de la codificaci´ n,
o
o
cuya caracter´stica principal es que el c´ digo resultante tiene
ı
o
menor tama˜ o que el original. En otras palabras la compresi´ n
n
o
de datos es la reducci´ n del volumen de datos tratables
o
para representar una determinada informaci´ n empleando una
o
menor cantidad de espacio. La compresi´ n se basa fundao
mentalmente en buscar repeticiones en series de datos para
despu´ s almacenar solo el dato junto al n´ mero de veces que se
e
u
repite. As´, por ejemplo, si en un fichero aparece una secuencia
ı
como “AAAAAA”, ocupando 6 bytes se podr´a almacenar
ı
simplemente ”6A” que ocupa solo 2 bytes.
En realidad, el proceso es mucho m´ s complejo, ya que
a
raramente se consigue encontrar patrones de repetici´ n tan
o
exactos (salvo en algunas im´ genes). Se utilizan algoritmos
a
de compresi´ n.
o
Por un lado, algunos buscan series largas que luego codifican en formas m´ s breves, por otro lado, algunos algoritmos,
a
como el algoritmo de Huffman que es el que se utilizara
en esta pr´ ctica, examinan los caracteres m´ s repetidos para
a
a
luego codificar de forma m´ s corta los que m´ s se repiten.
a
a
Otros, como el LZW, construyen un diccionario con los
patrones encontrados, a los cuales se hace referencia de manera
posterior, y por ultimo, la compresi´ n RLE o Run-length
o
encoding es una forma muy simple de compresi´ n de datos en
o
la que secuencias de datos con el mismo valor consecutivas
son almacenadas como un unico valor m´ s su recuento.
´
a
´
´
B. TECNICA DE CODIFICACION HUFFMAN
La codificaci´ n Huffman usa un m´ todo espec´fico para
o
e
ı
elegir la representaci´ n de cada s´mbolo, que da lugar a un
o
ı
c´ digo prefijo (es decir, la cadena de bits que representa a
o
un s´mbolo en particular nunca es prefijo de la cadena de
ı
bits de un s´mbolo distinto) que representa los caracteres m´ s
ı
a
comunes usando las cadenas de bits m´ s cortas, y viceversa.
a
Huffman fue capaz de dise˜ ar el m´ todo de compresi´ n m´ s
n
e
o
a
eficiente de este tipo: ninguna representaci´ n alternativa de
o
un conjunto de s´mbolos de entrada produce una salida media
ı
m´ s peque˜ a cuando las frecuencias de los s´mbolos coinciden
a
n
ı
con las usadas para crear el c´ digo. Posteriormente se encontr´
o
o
un m´ todo para llevar esto a cabo en un tiempo lineal si las
e
probabilidades de los s´mbolos de entrada (tambi´ n conocidas
ı
e
como “pesos”) est´ n ordenadas. El codificador Huffman crea
a
una estructura arb´ rea ordenada con todos los s´mbolos y
o
ı
la frecuencia con que aparecen. Las ramas se construyen
en forma recursiva comenzando con los s´mbolos menos
ı
frecuentes.
Para un grupo de s´mbolos con una distribuci´ n de probaı
o
bilidad uniforme y un n´ mero de miembros que es potencia de
u
dos, la codificaci´ n Huffman es equivalente a una codificaci´ n
o
o
en bloque binaria, por ejemplo, la codificaci´ n ASCII. La
o
codificaci´ n Huffman es un m´ todo para crear c´ digos prefijo
o
e
o
tan extendido que el t´ rmino “codificaci´ n Huffman” es ame
o
pliamente usado como sin´ nimo de “c´ digo prefijo”, incluso
o
o
cuando dicho c´ digo no se ha producido con el algoritmo de
o
Huffman.
Aunque la codificaci´ n de Huffman es optima para una
o
´
codificaci´ n s´mbolo a s´mbolo dada una distribuci´ n de
o ı
ı
o
probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificaci´ n aritm´ tica y la
o
e
codificaci´ n LZW normalmente ofrecen mayor capacidad de
o
compresi´ n. Estos dos m´ todos pueden agrupar un n´ mero
o
e
u
arbitrario de s´mbolos para una codificaci´ n m´ s eficiente, y
ı
o
a
en general se adaptan a las estad´sticas de entrada reales. Este
ı
ultimo es util cuando las probabilidades no se conocen de
´
´
forma precisa o var´an significativamente dentro del flujo de
ı
datos.
´
´
C. TECNICA DE CODIFICACION RLE
La compresi´ n RLE o Run-length encoding es una forma
o
muy simple de compresi’on de datos en la que secuencias de
datos con el mismo valor consecutivas son almacenadas como
un unico valor m´ s su recuento. Esto es m´ s util en datos que
´
a
a ´
contienen muchas de estas “secuencias”; por ejemplo, gr´ ficos
a
sencillos con areas de color plano, como iconos y logotipos.
´
Por ejemplo, considera una pantalla que contiene texto en
negro sobre un fondo blanco. Habr´a muchas secuencias de
ı
este tipo con p´xeles blancos en los m´ rgenes vac´os, y otras
ı
a
ı
secuencias de p´xeles negros en la zona del texto. Supongamos
ı
una ´nica l´nea (o scanline), con N representando las zonas en
ı
ı
negro y B las de blanco:
“BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBBB
BBBBBBBBBBBBBBBBBBBBNBBBBBBBBBBBBBB”
Si aplicamos la codificaci´ n run-length a esta l´nea, obo
ı
tendr´amos lo siguiente:
ı
“12B1N12B3N24B1N14B”
Interpretado esto como 12 letras B, 1 letra N , 12 letras B,
3 letras N, etc. El c´ digo run-length representa el original de
o
67 caracteres en tan s´ lo 16. Esto quiere decir que la l´nea
o
ı
original pesa 67 bytes y la cadena codificada pesa s´ lo 16
o
bytes.

´
˜
IV. DISENO Y PROGRAMACION DEL CODEC
HUFFMAN
Procedemos a realizar la compresi´ n, codificaci´ n y deo
o
codificaci´ n de un archivo de texto, que fue previamente
o
almacenado en la carpeta del programa para evitar errores.
La realizaci´ n del c´ digo se lo lleva a cabo en el software
o
o
Matlab, en donde programamos la compresi´ n y codificaci´ n
o
o
en un scrip, con el fin de generar un resultado expl´cito del
ı
comportamiento del sistema.
A. Etapa de almacenamiento
Primeramente el mensaje a codificar se lo almacena en
un .txt con nombre mensaje.txt de manera que el usuario
unicamente debera ingresar en este su mensaje a codificar y
el programa accede a este txt para su codificaci´ n.
o
B. Etapa de asignaci´ n
o
El programa luego de ingresar al archivo txt procede a
“asignar” a cada letra su respectivo c´ digo “ASCII” y lo
o
almacena en un string de tal manera que se nos facilite trabajar
con n´ meros que representara cada letra.
u
C. Etapa de verificaci´ n
o
En esta etapa lo que realizamos es la comprobaci´ n de
o
cada caracter, de tal manera que vayamos almacenando el
numero de veces que se repite cada caracter y de esta manera
obtener la probabilidad del mismo, de esta manera sabremos
la ocurrencia de cada uno, todas estas probabilidad se van
almacenando en otro nuevo string.
D. Etapa de compresi´ n
o
Hay dos funciones importantes que se encuentran incluidas
en Matlab, hablamos de la funci´ n ¡huffmamndict¿ que nos
o
permite crear el diccionario d´ nde la primera columna de listas
o
del dict son los valores de los s´mbolos y la segunda columna
ı
corresponde a las palabras c´ digo de cada s´mbolo. La funci´ n
o
ı
o
del huffmandict genera un c´ digo diccionario Huffman que
o
corresponde a una fuente con un modelo de probabilidad
conocido. Las entradas requeridas son los s´mbolos, que
ı
corresponde a los distintos valores se˜ alados que el mensaje
n
produce. Y tenemos tambien la funci´ n ¡huffmanenco¿, la
o
que nos permite codificar el mensaje con el diccionario
anteriormente obtenido , y la funci´ n ¡huffmandeco¿ la que
o
nos permite decodificar el mensaje para asi comprobar con el
mesanje asignado en un principio.
E. C´ digo en la herramienta MATLAB
o
%PRACTICA HUFFMAN CODE
clc
clear all
% LEER ARCHIVO
k=1;
fid = fopen(“Mensaje.txt”); % abrir el archivo
cadena = fscanf(fid,“%c”); % archivo guardado matriz cadena

cadena %presenta el mensaje a codificar
mensaje=double(cadena) %Presenta el mensaje en codigo
ASCII

aux=b(j);
b(j)=b(j+1);
b(j+1)=aux;
aux=c(j);
c(j)=c(j+1);
c(j+1)=aux;
end
end
end

for i=32:255 %225 caracteres ASCII
datos=char(i); %char convierte el numero ASCCI a caracter
total=length(strfind(cadena,datos)); % formando una matriz
con la posicion donde
% fue encontrado, leghth calcula el tama˜ o de la matriz
n

for i=1:n
fprintf (’%c ⁀ c(i))
’,
fprintf (’%f , b(i))
i=i+1;
end

x=length(cadena);
probabilidad=total/length(cadena); % probablidad
if(total = 0) % s´ el total a sido diferente de cero (X,1)
ı

bi=fliplr(b);
nh=n ;
for i=1:nh-1
ph=bi(i)+bi(i+1);
end

fprintf(’MENSAJE A CODIFICAR”);
fprintf(’salto de linea’);

L(k) = datos; % Almacena el mensaje
n=length(L);
V(k) = total; % Almacena las veces que se repite la letra en
el texto
P(k) = probabilidad; % Almacena las probabilidades de cada
letra
X(k) = cellstr(datos);
%fprintf (“%c ⁀’’, datos)
% fprintf (“%f ”,probabilidad)
⁀
fprintf(“Caracter: %c aparece :%d veces ”,datos,total);
⁀ ”,probabilidad);
%fprintf(“con probabilidad%f
k=k+1;
end
end
fprintf(“Tama˜ o
n
del
texto
de:
%d
caracteres”,length(cadena));%tama˜ o total del txt
n
fprintf(“salto de linea”); % ORDENAR DE MAYOR A
MENOR DEPENDIENDO SU PROBABILIDAD
b=P;
c=L;
fprintf (“Simbolos de la fuente”)
simbolos = double(c)
⁀
fprintf(“FUENTE ORDENADA”);
fprintf(“salto de linea”);
for i=1:n
for j=1:n-i
if b(j) < b(j+1)

matriz=[];
for i=1:n
matriz =[matriz, b(i)];
i=i+1;
end
while (length(matriz)¿2);
suma = matriz(length(matriz)) + matriz(length(matriz) - 1) ;
matriz( length(matriz) - 1 ) = suma;
matriz( length(matriz) ) = [];
matriz=sort(matriz, “descend”)
end
fprintf(“DICCIONARIO”)
dict = huffmandict(simbolos,b) %Asigna el diccionario
fprintf(“MENSAJE CODIFICADO”)
hcode =huffmanenco (mensaje,dict) %Codifica el mensaje
dhsig = huffmandeco(hcode,dict) %Decodifica el mensaje
fprintf(“MENSAJE DECODIFICADO”)
mensajedeco = char(dhsig)
tamano1=(length(cadena))*8
tamano2=length(hcode)
fprintf(“Tama˜ o del archivo original: %d bits” ,tamano1)
n
fprintf(“Tama˜ o del archivo comprimido: %d bits”,tamano2)
n

F. C´ digo de comparaci´ n en la herramienta MATLAB
o
o
%CODIGO RLE
clc;
clear;
st = “AABCDEABCDFGHTREFTFFDVD”
codigo = “”;
while length(st)
codigo = [codigo st(1)];
st = st(2:end);
count = 1;
while st & (codigo(end) == st(1))
st = st(2:end);
count = count + 1; end
codigo = [codigo num2str(count)];
end
Ncod=length(codigo)
Nor=length(st)
Tcrun=(Ncod/Nor)*100;
codigo

VI. CONCLUSIONES
1) Se pudo observar y entender mas a fondo el procedimiento de la codificaci´ n Huffman.
o
2) Se logr´ crear un algoritmo pr´ pio basado en la codifio
o
caci´ n Huffman con la ayuda de la herramienta matlab.
o
3) Se realiz´ multiples pruebas de funcionamiento del codec
o
para verificar su validad.
4) Se valido el codec Huffman comparando el tama˜ o de
n
los archivos tanto el original como el comprimido.
5) Se valido el codec Huffman comparandolo con el c´ digo
o
RLE
6) La compresi´ Huffman en matlab es sumamente compleja
o
por lo que ayudarse en las funciones propias de matlab
facilito mucho la tarea.
7) Al decodificar tanto utilizando Huffman como RLE se
pudo obtener el mensaje original sin error alguno, por lo
que se comprob´ tambien la codificaci´ n sin p´ rdidas.
o
o
e

´
V. VALIDACION
Para la validaci´ n se procedio a comprimir un determinado
o
texto para luego comprobar el tama˜ o en bits del mensaje
n
original con el mensaje codificado en Huffman y a su ves con
el c´ digo RLE y de esta manera determinar que codificaci´ n
o
o
ser´a la mas adecuada y la mas eficiente.
ı
La relaci´ n de compresion se define por el cociente entre
o
el tama˜ o original del archivo que queremos comprimir y el
n
tama˜ o del archivo comprimido.
n
RC =

To
Tc

(1)

El texto a comprimir tiene un tama˜ o de 3416 bits. El
n
texto comprimido con Huffman tiene un tama˜ o de 1975 bits.
n
El texto comprimido con RLE tiene un tama˜ o de 6784 bits.
n
HUFFMAN

3416
1975
RC = 1.73 : 1
RC =

RLE
RC =

3416
6784

VII. RECOMENDACIONES
1) En la programaci´ n se debe tener mucho cuidado en la
o
asignaci´ n del codigo Huffman ya que se es propenso a
o
cometer errores en esta etapa.
2) Tener clara la idea sobre la codificaci´ n Huffman de esta
o
manera sabemos hacia donde deseamos llegar con nuestro
algoritmo.
3) Tener cuidado en el momento que se asigna la probabilidad a cada caracter.
4) Si es posible utilizar las funciones propias de matlab,
utilizarlas facilitan en mucho el trabajo.

1)

(2)
2)
(3)
3)

RC = 0.503 : 1
4)
Podemos observar que la t´ cnica de codificaci´ n Huffman
e
o
tiene una relaci´ n de compresi´ n mayor a la codificaci´ n
o
o
o
RLE, demas de esto comparando el tama˜ o de cada t´ cnica
n
e
de codificaci´ n, se puede observar claramente que la t´ cnica
o
e
Huffman es la mas eficiente. As´ mismo obtenemos el factor
ı
de compresi´ n del c´ digo Huffman.
o
o
1
RC ∗ 100%
1
FC =
1.73 ∗ 100%
F C = 59%
FC =

(4)

5)

VIII. REFERENCIAS
´
CODIFICACION
“Codificaci´ n
o
Huffman
con
Matlab”,
Disponible
en
linea
en:
[http://www.buenastareas.com/ensayos/Simulaci%C3%B3nEn-Matlab-De-Codificacion-De/3052631.html],
consultado el [10-11-2013]
MATLAB CENTRAL “Ascii to binary”, Disponible en:
[http://www.mathworks.com/matlabcentral/answers/7245],consultado
el [10-11-2013].
´
KIOSKEA “La compresiOn de datos”, Disponible
en:[http://es.kioskea.net/contents/714-la-compresion-dedatos], consultado el [10-11-2013].
´
KIOSKEA “La compresiOn RLE”, Disponible en
[http://es.kioskea.net/contents/713-la-compresion-rle],
consultado el [11-11-2013]
SLIDESAHRE, “C´ digos de Huffman” Disponible en
o
[http://www.slideshare.net/gugaslide/codigo-de-huffmanpresentation], consultado el [11-11-2013]

Más contenido relacionado

La actualidad más candente

Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canal
arquitectura5
 
Lecture 18 channel capacity
Lecture 18 channel capacityLecture 18 channel capacity
Lecture 18 channel capacity
nica2009
 
Teorema del muestro y PCM
Teorema del muestro y PCMTeorema del muestro y PCM
Teorema del muestro y PCM
Joaquin Vicioso
 
Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1
Enrique Zrt
 
MUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALESMUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALES
Linda Yesenia
 
Lecture 3 codificación fuente
Lecture 3 codificación fuenteLecture 3 codificación fuente
Lecture 3 codificación fuente
nica2009
 

La actualidad más candente (20)

Fm 2014 1
Fm 2014 1Fm 2014 1
Fm 2014 1
 
Modulación AM - PM - FM
Modulación AM - PM - FMModulación AM - PM - FM
Modulación AM - PM - FM
 
Capacidad de un canal
Capacidad de un canalCapacidad de un canal
Capacidad de un canal
 
Pcm
PcmPcm
Pcm
 
Compresion de Datos - Telecomunicaciones III
Compresion de Datos - Telecomunicaciones IIICompresion de Datos - Telecomunicaciones III
Compresion de Datos - Telecomunicaciones III
 
Codigo de transmision
Codigo de transmisionCodigo de transmision
Codigo de transmision
 
Analizador de Espectro
Analizador de Espectro Analizador de Espectro
Analizador de Espectro
 
Muestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLabMuestreo y cuantificación de una señal analógica con MatLab
Muestreo y cuantificación de una señal analógica con MatLab
 
Modulacion fsk
Modulacion fskModulacion fsk
Modulacion fsk
 
Lecture 18 channel capacity
Lecture 18 channel capacityLecture 18 channel capacity
Lecture 18 channel capacity
 
Antenas rombicas y cuadradas
Antenas rombicas y cuadradasAntenas rombicas y cuadradas
Antenas rombicas y cuadradas
 
Teorema del muestro y PCM
Teorema del muestro y PCMTeorema del muestro y PCM
Teorema del muestro y PCM
 
Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1Archivo 2 introduccion_a_las_telecomunicaciones_1
Archivo 2 introduccion_a_las_telecomunicaciones_1
 
MUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALESMUESTREO Y RECONSTRUCCION DE SEÑALES
MUESTREO Y RECONSTRUCCION DE SEÑALES
 
Códigos
Códigos Códigos
Códigos
 
Modulación en frecuencia
Modulación en frecuenciaModulación en frecuencia
Modulación en frecuencia
 
Pulse code modulation (PCM)
Pulse code modulation (PCM)Pulse code modulation (PCM)
Pulse code modulation (PCM)
 
Modulación comunicaciones
Modulación comunicacionesModulación comunicaciones
Modulación comunicaciones
 
Lecture 3 codificación fuente
Lecture 3 codificación fuenteLecture 3 codificación fuente
Lecture 3 codificación fuente
 
Modos direccionamiento
Modos direccionamientoModos direccionamiento
Modos direccionamiento
 

Destacado

Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlab
Vitoto96
 
Inteligencia artificial y prcesamiento digital de imagenes
Inteligencia artificial y prcesamiento digital de imagenesInteligencia artificial y prcesamiento digital de imagenes
Inteligencia artificial y prcesamiento digital de imagenes
miltonpaladines
 
La formulacion de un problema en un Proyecto de Investigacion
 La formulacion de un problema en un Proyecto de Investigacion La formulacion de un problema en un Proyecto de Investigacion
La formulacion de un problema en un Proyecto de Investigacion
carmencordones2013
 

Destacado (13)

CODIGO DE HUFFMAN
CODIGO DE HUFFMANCODIGO DE HUFFMAN
CODIGO DE HUFFMAN
 
Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlab
 
Inteligencia artificial y prcesamiento digital de imagenes
Inteligencia artificial y prcesamiento digital de imagenesInteligencia artificial y prcesamiento digital de imagenes
Inteligencia artificial y prcesamiento digital de imagenes
 
Grafos 9.2 2016
Grafos 9.2 2016Grafos 9.2 2016
Grafos 9.2 2016
 
Algoritimo de Huffman
Algoritimo de HuffmanAlgoritimo de Huffman
Algoritimo de Huffman
 
Código de Huffman
Código de HuffmanCódigo de Huffman
Código de Huffman
 
Sistema 4G
Sistema 4GSistema 4G
Sistema 4G
 
Entropía y código de Huffman del mismo texto en diferentes idiomas.
Entropía y código de Huffman del mismo texto en diferentes idiomas.Entropía y código de Huffman del mismo texto en diferentes idiomas.
Entropía y código de Huffman del mismo texto en diferentes idiomas.
 
Arbol De Huffman
Arbol De HuffmanArbol De Huffman
Arbol De Huffman
 
6.2 Propagacion de oonda en linea de transmision
6.2 Propagacion de oonda en linea de transmision6.2 Propagacion de oonda en linea de transmision
6.2 Propagacion de oonda en linea de transmision
 
3.PCM Digitalizacion de señal analogica
3.PCM Digitalizacion de señal analogica3.PCM Digitalizacion de señal analogica
3.PCM Digitalizacion de señal analogica
 
La formulacion de un problema en un Proyecto de Investigacion
 La formulacion de un problema en un Proyecto de Investigacion La formulacion de un problema en un Proyecto de Investigacion
La formulacion de un problema en un Proyecto de Investigacion
 
Líneas de transmisión
Líneas de transmisiónLíneas de transmisión
Líneas de transmisión
 

Similar a Codificacion HUFFMAN en matlab

13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
José M. Padilla
 
Métodos y técnicas de encriptación
Métodos y técnicas de encriptaciónMétodos y técnicas de encriptación
Métodos y técnicas de encriptación
lacandymamy
 

Similar a Codificacion HUFFMAN en matlab (20)

CODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptxCODIGO HUFFMAN-1.pptx
CODIGO HUFFMAN-1.pptx
 
Teoría de códigos saira isaac
Teoría de códigos   saira isaacTeoría de códigos   saira isaac
Teoría de códigos saira isaac
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Trabajo maxi unidad i
Trabajo maxi unidad iTrabajo maxi unidad i
Trabajo maxi unidad i
 
13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes13 PHP. Un Ejemplo Con Constantes
13 PHP. Un Ejemplo Con Constantes
 
El lenguaje php
El lenguaje phpEl lenguaje php
El lenguaje php
 
P01 secuencial
P01 secuencialP01 secuencial
P01 secuencial
 
Compresion de archivos
Compresion de archivosCompresion de archivos
Compresion de archivos
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Algoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-ToledoAlgoritmos compresión Cubi-Romero-Toledo
Algoritmos compresión Cubi-Romero-Toledo
 
Php curso03
Php   curso03Php   curso03
Php curso03
 
COMPRESION DE DATOS.pptx
COMPRESION DE DATOS.pptxCOMPRESION DE DATOS.pptx
COMPRESION DE DATOS.pptx
 
Estructuras de decisión o selectivas
Estructuras de decisión o selectivasEstructuras de decisión o selectivas
Estructuras de decisión o selectivas
 
Estructura .COM
Estructura .COMEstructura .COM
Estructura .COM
 
6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx6 Codificación de fuente.ppsx
6 Codificación de fuente.ppsx
 
Métodos y técnicas de encriptación
Métodos y técnicas de encriptaciónMétodos y técnicas de encriptación
Métodos y técnicas de encriptación
 
Ensayo de php
Ensayo de phpEnsayo de php
Ensayo de php
 

Más de Cristian Aguirre Esparza

Más de Cristian Aguirre Esparza (20)

EJEMPLO
EJEMPLOEJEMPLO
EJEMPLO
 
AVL HARDWARE
AVL HARDWAREAVL HARDWARE
AVL HARDWARE
 
Funciones de Convolución
Funciones de ConvoluciónFunciones de Convolución
Funciones de Convolución
 
Amplificador con transistor BJT (Microondas)
Amplificador con transistor BJT (Microondas)Amplificador con transistor BJT (Microondas)
Amplificador con transistor BJT (Microondas)
 
Unidad de Control
Unidad de ControlUnidad de Control
Unidad de Control
 
Hpcs conf poster
Hpcs conf posterHpcs conf poster
Hpcs conf poster
 
FILTRO IRR MATLAB
FILTRO IRR MATLABFILTRO IRR MATLAB
FILTRO IRR MATLAB
 
Que afecta a una comunicacion en hf
Que afecta a una comunicacion en hfQue afecta a una comunicacion en hf
Que afecta a una comunicacion en hf
 
AMPLIFICADOR DE AUDIO
AMPLIFICADOR DE AUDIOAMPLIFICADOR DE AUDIO
AMPLIFICADOR DE AUDIO
 
INVESTIGACIÓN CIELO DE LOJA
INVESTIGACIÓN CIELO DE LOJAINVESTIGACIÓN CIELO DE LOJA
INVESTIGACIÓN CIELO DE LOJA
 
Entorno Natural Del Cantón Loja
Entorno Natural Del Cantón LojaEntorno Natural Del Cantón Loja
Entorno Natural Del Cantón Loja
 
Generación de Computadores
Generación de ComputadoresGeneración de Computadores
Generación de Computadores
 
Funciones del Procesador
Funciones del ProcesadorFunciones del Procesador
Funciones del Procesador
 
BECHMAKING
BECHMAKINGBECHMAKING
BECHMAKING
 
Arquitectura RISC-CISC
Arquitectura RISC-CISCArquitectura RISC-CISC
Arquitectura RISC-CISC
 
Acceso Directo de Memoria
Acceso Directo de MemoriaAcceso Directo de Memoria
Acceso Directo de Memoria
 
Loja pionera de la generacion electrica
Loja pionera de la generacion electricaLoja pionera de la generacion electrica
Loja pionera de la generacion electrica
 
Motor electrico
Motor electricoMotor electrico
Motor electrico
 
Lcc cristian_aguirre_esparza
Lcc cristian_aguirre_esparzaLcc cristian_aguirre_esparza
Lcc cristian_aguirre_esparza
 
Cristian aguirre
Cristian aguirreCristian aguirre
Cristian aguirre
 

Último

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
2024020140
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Último (20)

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptxNIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
NIA_300_PLANEACION_DE_UNA_AUDITORIA_DE_E.pptx
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
microsoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamtemicrosoft word manuales para todos tipos de estudiamte
microsoft word manuales para todos tipos de estudiamte
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 

Codificacion HUFFMAN en matlab

  • 1. ´ ˜ DISENO Y PROGRAMACION DE UN CODEC HUFFMAN Cristian Aguirre Esparza cbaguirre@utpl.edu.ec Edwin Castillo eacastillo4@utpl.edu.ec Abstract—A medida que la necesidad de los usuarios de enviar y recibir informaci´ n cada ves es mas extensa, surgio la necesidad o de comprimir dicha informaci´ n de tal manera que esta sea o posible enviarla y recibirla sin ocasionar perdidas pero a su ves en un numero menor de datos, de esta manera facilitar en mucho las comunicaciones. En base a esto la practica a desarrollarse, ˜ es el de disenar y programar un c´ digo HUFFMAN ya sea o para audio, video o texto, y utilizando otro c´ digo sin perdidas o comprobar el funcionamiento del c´ digo HUFFMAN. En nuestro o caso hemos elejido texto, ya que consideramos que de los tres campos, con texto se nos facilitaria ver y entender la operaci´ n y o el funcionamiento del c´ digo, que es el objetivo de esta pr´ ctica. o a Keywords—Comprensi´ n, matlab, texto, huffman, RLZ. o ´ I. INTRODUCCION E N ciencias de la computaci´ n y teor´a de la informaci´ n, o ı o la codificaci´ n Huffman es un algoritmo usado para o compresi´ n de datos. El t´ rmino se refiere al uso de una tabla o e de c´ digos de longitud variable para codificar un determinado o s´mbolo (como puede ser un caracter en un archivo), donde la ı tabla ha sido rellenada de una manera espec´fica bas´ ndose en ı a la probabilidad estimada de aparici´ n de cada posible valor o de dicho s´mbolo. Fue desarrollado por David A. Huffman ı mientras era estudiante de doctorado en el MIT, y publicado en “A Method for the Construction of Minimum-Redundancy Codes”. Para poder utilizar el algoritmo de Huffman es necesario conocer de antemano las frecuencias de aparici´ n o de cada s´mbolo, y su eficiencia depende de lo pr´ ximas ı o a las frecuencias reales que sean las estimadas. Algunas implementaciones del algoritmo de Huffman son adaptativas, actualizando las frecuencias de cada s´mbolo conforme ı recorre el texto. [1] II. OBJETIVOS 1) 2) 3) 4) Dise˜ ar un codec Huffman en base a la teor´a revisada. n ı Programar el codec Huffman. Realizar pruebas de funcionamiento del codec. Validar el codec Huffman (comparar con otro codec de compresi´ n con/sin p´ rdidas). o e ´ III. MARCO TEORICO ´ A. COMPRESION DE DATOS (TEXTO) La compresi´ n es un caso particular de la codificaci´ n, o o cuya caracter´stica principal es que el c´ digo resultante tiene ı o menor tama˜ o que el original. En otras palabras la compresi´ n n o de datos es la reducci´ n del volumen de datos tratables o para representar una determinada informaci´ n empleando una o menor cantidad de espacio. La compresi´ n se basa fundao mentalmente en buscar repeticiones en series de datos para despu´ s almacenar solo el dato junto al n´ mero de veces que se e u repite. As´, por ejemplo, si en un fichero aparece una secuencia ı como “AAAAAA”, ocupando 6 bytes se podr´a almacenar ı simplemente ”6A” que ocupa solo 2 bytes. En realidad, el proceso es mucho m´ s complejo, ya que a raramente se consigue encontrar patrones de repetici´ n tan o exactos (salvo en algunas im´ genes). Se utilizan algoritmos a de compresi´ n. o Por un lado, algunos buscan series largas que luego codifican en formas m´ s breves, por otro lado, algunos algoritmos, a como el algoritmo de Huffman que es el que se utilizara en esta pr´ ctica, examinan los caracteres m´ s repetidos para a a luego codificar de forma m´ s corta los que m´ s se repiten. a a Otros, como el LZW, construyen un diccionario con los patrones encontrados, a los cuales se hace referencia de manera posterior, y por ultimo, la compresi´ n RLE o Run-length o encoding es una forma muy simple de compresi´ n de datos en o la que secuencias de datos con el mismo valor consecutivas son almacenadas como un unico valor m´ s su recuento. ´ a ´ ´ B. TECNICA DE CODIFICACION HUFFMAN La codificaci´ n Huffman usa un m´ todo espec´fico para o e ı elegir la representaci´ n de cada s´mbolo, que da lugar a un o ı c´ digo prefijo (es decir, la cadena de bits que representa a o un s´mbolo en particular nunca es prefijo de la cadena de ı bits de un s´mbolo distinto) que representa los caracteres m´ s ı a comunes usando las cadenas de bits m´ s cortas, y viceversa. a Huffman fue capaz de dise˜ ar el m´ todo de compresi´ n m´ s n e o a eficiente de este tipo: ninguna representaci´ n alternativa de o un conjunto de s´mbolos de entrada produce una salida media ı m´ s peque˜ a cuando las frecuencias de los s´mbolos coinciden a n ı
  • 2. con las usadas para crear el c´ digo. Posteriormente se encontr´ o o un m´ todo para llevar esto a cabo en un tiempo lineal si las e probabilidades de los s´mbolos de entrada (tambi´ n conocidas ı e como “pesos”) est´ n ordenadas. El codificador Huffman crea a una estructura arb´ rea ordenada con todos los s´mbolos y o ı la frecuencia con que aparecen. Las ramas se construyen en forma recursiva comenzando con los s´mbolos menos ı frecuentes. Para un grupo de s´mbolos con una distribuci´ n de probaı o bilidad uniforme y un n´ mero de miembros que es potencia de u dos, la codificaci´ n Huffman es equivalente a una codificaci´ n o o en bloque binaria, por ejemplo, la codificaci´ n ASCII. La o codificaci´ n Huffman es un m´ todo para crear c´ digos prefijo o e o tan extendido que el t´ rmino “codificaci´ n Huffman” es ame o pliamente usado como sin´ nimo de “c´ digo prefijo”, incluso o o cuando dicho c´ digo no se ha producido con el algoritmo de o Huffman. Aunque la codificaci´ n de Huffman es optima para una o ´ codificaci´ n s´mbolo a s´mbolo dada una distribuci´ n de o ı ı o probabilidad, su optimalidad a veces puede verse accidentalmente exagerada. Por ejemplo, la codificaci´ n aritm´ tica y la o e codificaci´ n LZW normalmente ofrecen mayor capacidad de o compresi´ n. Estos dos m´ todos pueden agrupar un n´ mero o e u arbitrario de s´mbolos para una codificaci´ n m´ s eficiente, y ı o a en general se adaptan a las estad´sticas de entrada reales. Este ı ultimo es util cuando las probabilidades no se conocen de ´ ´ forma precisa o var´an significativamente dentro del flujo de ı datos. ´ ´ C. TECNICA DE CODIFICACION RLE La compresi´ n RLE o Run-length encoding es una forma o muy simple de compresi’on de datos en la que secuencias de datos con el mismo valor consecutivas son almacenadas como un unico valor m´ s su recuento. Esto es m´ s util en datos que ´ a a ´ contienen muchas de estas “secuencias”; por ejemplo, gr´ ficos a sencillos con areas de color plano, como iconos y logotipos. ´ Por ejemplo, considera una pantalla que contiene texto en negro sobre un fondo blanco. Habr´a muchas secuencias de ı este tipo con p´xeles blancos en los m´ rgenes vac´os, y otras ı a ı secuencias de p´xeles negros en la zona del texto. Supongamos ı una ´nica l´nea (o scanline), con N representando las zonas en ı ı negro y B las de blanco: “BBBBBBBBBBBBNBBBBBBBBBBBBNNNBBBB BBBBBBBBBBBBBBBBBBBBNBBBBBBBBBBBBBB” Si aplicamos la codificaci´ n run-length a esta l´nea, obo ı tendr´amos lo siguiente: ı “12B1N12B3N24B1N14B” Interpretado esto como 12 letras B, 1 letra N , 12 letras B, 3 letras N, etc. El c´ digo run-length representa el original de o 67 caracteres en tan s´ lo 16. Esto quiere decir que la l´nea o ı original pesa 67 bytes y la cadena codificada pesa s´ lo 16 o bytes. ´ ˜ IV. DISENO Y PROGRAMACION DEL CODEC HUFFMAN Procedemos a realizar la compresi´ n, codificaci´ n y deo o codificaci´ n de un archivo de texto, que fue previamente o almacenado en la carpeta del programa para evitar errores. La realizaci´ n del c´ digo se lo lleva a cabo en el software o o Matlab, en donde programamos la compresi´ n y codificaci´ n o o en un scrip, con el fin de generar un resultado expl´cito del ı comportamiento del sistema. A. Etapa de almacenamiento Primeramente el mensaje a codificar se lo almacena en un .txt con nombre mensaje.txt de manera que el usuario unicamente debera ingresar en este su mensaje a codificar y el programa accede a este txt para su codificaci´ n. o B. Etapa de asignaci´ n o El programa luego de ingresar al archivo txt procede a “asignar” a cada letra su respectivo c´ digo “ASCII” y lo o almacena en un string de tal manera que se nos facilite trabajar con n´ meros que representara cada letra. u C. Etapa de verificaci´ n o En esta etapa lo que realizamos es la comprobaci´ n de o cada caracter, de tal manera que vayamos almacenando el numero de veces que se repite cada caracter y de esta manera obtener la probabilidad del mismo, de esta manera sabremos la ocurrencia de cada uno, todas estas probabilidad se van almacenando en otro nuevo string. D. Etapa de compresi´ n o Hay dos funciones importantes que se encuentran incluidas en Matlab, hablamos de la funci´ n ¡huffmamndict¿ que nos o permite crear el diccionario d´ nde la primera columna de listas o del dict son los valores de los s´mbolos y la segunda columna ı corresponde a las palabras c´ digo de cada s´mbolo. La funci´ n o ı o del huffmandict genera un c´ digo diccionario Huffman que o corresponde a una fuente con un modelo de probabilidad conocido. Las entradas requeridas son los s´mbolos, que ı corresponde a los distintos valores se˜ alados que el mensaje n produce. Y tenemos tambien la funci´ n ¡huffmanenco¿, la o que nos permite codificar el mensaje con el diccionario anteriormente obtenido , y la funci´ n ¡huffmandeco¿ la que o nos permite decodificar el mensaje para asi comprobar con el mesanje asignado en un principio. E. C´ digo en la herramienta MATLAB o %PRACTICA HUFFMAN CODE clc clear all % LEER ARCHIVO k=1;
  • 3. fid = fopen(“Mensaje.txt”); % abrir el archivo cadena = fscanf(fid,“%c”); % archivo guardado matriz cadena cadena %presenta el mensaje a codificar mensaje=double(cadena) %Presenta el mensaje en codigo ASCII aux=b(j); b(j)=b(j+1); b(j+1)=aux; aux=c(j); c(j)=c(j+1); c(j+1)=aux; end end end for i=32:255 %225 caracteres ASCII datos=char(i); %char convierte el numero ASCCI a caracter total=length(strfind(cadena,datos)); % formando una matriz con la posicion donde % fue encontrado, leghth calcula el tama˜ o de la matriz n for i=1:n fprintf (’%c ⁀ c(i)) ’, fprintf (’%f , b(i)) i=i+1; end x=length(cadena); probabilidad=total/length(cadena); % probablidad if(total = 0) % s´ el total a sido diferente de cero (X,1) ı bi=fliplr(b); nh=n ; for i=1:nh-1 ph=bi(i)+bi(i+1); end fprintf(’MENSAJE A CODIFICAR”); fprintf(’salto de linea’); L(k) = datos; % Almacena el mensaje n=length(L); V(k) = total; % Almacena las veces que se repite la letra en el texto P(k) = probabilidad; % Almacena las probabilidades de cada letra X(k) = cellstr(datos); %fprintf (“%c ⁀’’, datos) % fprintf (“%f ”,probabilidad) ⁀ fprintf(“Caracter: %c aparece :%d veces ”,datos,total); ⁀ ”,probabilidad); %fprintf(“con probabilidad%f k=k+1; end end fprintf(“Tama˜ o n del texto de: %d caracteres”,length(cadena));%tama˜ o total del txt n fprintf(“salto de linea”); % ORDENAR DE MAYOR A MENOR DEPENDIENDO SU PROBABILIDAD b=P; c=L; fprintf (“Simbolos de la fuente”) simbolos = double(c) ⁀ fprintf(“FUENTE ORDENADA”); fprintf(“salto de linea”); for i=1:n for j=1:n-i if b(j) < b(j+1) matriz=[]; for i=1:n matriz =[matriz, b(i)]; i=i+1; end while (length(matriz)¿2); suma = matriz(length(matriz)) + matriz(length(matriz) - 1) ; matriz( length(matriz) - 1 ) = suma; matriz( length(matriz) ) = []; matriz=sort(matriz, “descend”) end fprintf(“DICCIONARIO”) dict = huffmandict(simbolos,b) %Asigna el diccionario fprintf(“MENSAJE CODIFICADO”) hcode =huffmanenco (mensaje,dict) %Codifica el mensaje dhsig = huffmandeco(hcode,dict) %Decodifica el mensaje fprintf(“MENSAJE DECODIFICADO”) mensajedeco = char(dhsig) tamano1=(length(cadena))*8 tamano2=length(hcode) fprintf(“Tama˜ o del archivo original: %d bits” ,tamano1) n fprintf(“Tama˜ o del archivo comprimido: %d bits”,tamano2) n F. C´ digo de comparaci´ n en la herramienta MATLAB o o %CODIGO RLE clc; clear; st = “AABCDEABCDFGHTREFTFFDVD”
  • 4. codigo = “”; while length(st) codigo = [codigo st(1)]; st = st(2:end); count = 1; while st & (codigo(end) == st(1)) st = st(2:end); count = count + 1; end codigo = [codigo num2str(count)]; end Ncod=length(codigo) Nor=length(st) Tcrun=(Ncod/Nor)*100; codigo VI. CONCLUSIONES 1) Se pudo observar y entender mas a fondo el procedimiento de la codificaci´ n Huffman. o 2) Se logr´ crear un algoritmo pr´ pio basado en la codifio o caci´ n Huffman con la ayuda de la herramienta matlab. o 3) Se realiz´ multiples pruebas de funcionamiento del codec o para verificar su validad. 4) Se valido el codec Huffman comparando el tama˜ o de n los archivos tanto el original como el comprimido. 5) Se valido el codec Huffman comparandolo con el c´ digo o RLE 6) La compresi´ Huffman en matlab es sumamente compleja o por lo que ayudarse en las funciones propias de matlab facilito mucho la tarea. 7) Al decodificar tanto utilizando Huffman como RLE se pudo obtener el mensaje original sin error alguno, por lo que se comprob´ tambien la codificaci´ n sin p´ rdidas. o o e ´ V. VALIDACION Para la validaci´ n se procedio a comprimir un determinado o texto para luego comprobar el tama˜ o en bits del mensaje n original con el mensaje codificado en Huffman y a su ves con el c´ digo RLE y de esta manera determinar que codificaci´ n o o ser´a la mas adecuada y la mas eficiente. ı La relaci´ n de compresion se define por el cociente entre o el tama˜ o original del archivo que queremos comprimir y el n tama˜ o del archivo comprimido. n RC = To Tc (1) El texto a comprimir tiene un tama˜ o de 3416 bits. El n texto comprimido con Huffman tiene un tama˜ o de 1975 bits. n El texto comprimido con RLE tiene un tama˜ o de 6784 bits. n HUFFMAN 3416 1975 RC = 1.73 : 1 RC = RLE RC = 3416 6784 VII. RECOMENDACIONES 1) En la programaci´ n se debe tener mucho cuidado en la o asignaci´ n del codigo Huffman ya que se es propenso a o cometer errores en esta etapa. 2) Tener clara la idea sobre la codificaci´ n Huffman de esta o manera sabemos hacia donde deseamos llegar con nuestro algoritmo. 3) Tener cuidado en el momento que se asigna la probabilidad a cada caracter. 4) Si es posible utilizar las funciones propias de matlab, utilizarlas facilitan en mucho el trabajo. 1) (2) 2) (3) 3) RC = 0.503 : 1 4) Podemos observar que la t´ cnica de codificaci´ n Huffman e o tiene una relaci´ n de compresi´ n mayor a la codificaci´ n o o o RLE, demas de esto comparando el tama˜ o de cada t´ cnica n e de codificaci´ n, se puede observar claramente que la t´ cnica o e Huffman es la mas eficiente. As´ mismo obtenemos el factor ı de compresi´ n del c´ digo Huffman. o o 1 RC ∗ 100% 1 FC = 1.73 ∗ 100% F C = 59% FC = (4) 5) VIII. REFERENCIAS ´ CODIFICACION “Codificaci´ n o Huffman con Matlab”, Disponible en linea en: [http://www.buenastareas.com/ensayos/Simulaci%C3%B3nEn-Matlab-De-Codificacion-De/3052631.html], consultado el [10-11-2013] MATLAB CENTRAL “Ascii to binary”, Disponible en: [http://www.mathworks.com/matlabcentral/answers/7245],consultado el [10-11-2013]. ´ KIOSKEA “La compresiOn de datos”, Disponible en:[http://es.kioskea.net/contents/714-la-compresion-dedatos], consultado el [10-11-2013]. ´ KIOSKEA “La compresiOn RLE”, Disponible en [http://es.kioskea.net/contents/713-la-compresion-rle], consultado el [11-11-2013] SLIDESAHRE, “C´ digos de Huffman” Disponible en o [http://www.slideshare.net/gugaslide/codigo-de-huffmanpresentation], consultado el [11-11-2013]