Sie sind auf Seite 1von 2

clear all;close all;clc;

imagen=imread('imagen.jpg');%Se lee la imagen


imagengris=rgb2gray(imagen);%Se convierte la imagen a escala de grises
imshow(imagengris);
title('Imagen Original')
figure
[m,n]=size(imagengris);%Tamaño de la imagen en pixeles
Total=m*n;%Total de pixeles de la imagen
%Variables usadas para calcular la probabilidad
cnt=1;
sigma=0;
%Calculando la probabilidad acumulada.
for i=0:255
k=imagengris==i;
count(cnt)=sum(k(:));
% matriz de probabilidad es obteniendo las probabilidades
prob(cnt)=count(cnt)/Total;
sigma=sigma+prob(cnt);
cumpro(cnt)=sigma;
cnt=cnt+1;
end;
%Simbolos para una imagen
simbolos=[0:255];
%Diccionario de código de Huffman
dict=huffmandict(simbolos,prob);
%Función que convierte la matriz en vector
vector_size = 1;
for p = 1:m
for q = 1:n
nuevovec(vector_size) = imagengris(p,q);
vector_size = vector_size+1;
end
end
%Codificacion de Huffman
hcode = huffmanenco(nuevovec,dict);
%Decodificacion de Huffman
dhsig1 = huffmandeco(hcode,dict);
%Se convierte dhsig1(double) a dhsig (uint8)
dhsig = uint8(dhsig1);
%Conversion de vector a matriz
dec_fila=sqrt(length(dhsig));
dec_columna=dec_fila;
%Variables que se utilizaran para converir vectores a matriz
arr_fila = 1;
arr_columna = 1;
vec_si = 1;
for x = 1:m
for y = 1:n
back(x,y)=dhsig(vec_si);
arr_columna = arr_columna+1;
vec_si = vec_si + 1;
end
arr_fila = arr_fila+1;
end
%conversión de imagen de escala de grises a rgb
[deco, map] = gray2ind(back,256);
RGB = ind2rgb(deco,map);
imwrite(RGB,'decoded.JPG');
imwrite(imagengris,'imagengray.JPG');
imshow(RGB)
title('Imagen Descomprimida')

Das könnte Ihnen auch gefallen