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')