partie 2 :DeCompression :

 

Décompression du fichier pour Huffman1 en mode RVB

function lecture_fichier_huffman_rvb(nom_image,fichier)

%Décompression fichier pour HUFFMAN mode RVB

file=fopen(fichier);

i=1;comp=0;

[A,count]=fread(file,i);

comp=comp+count;

i=2;

while count~=0

[A,count]=fread(file,i);

comp=comp+count; %Nombre d'éléments dans le fichier

    i=i+1;

end % end while

file2=fopen(fichier);

vecteur=char(fread(file2,comp));

vecteur=vecteur'; %stocker les éléments du fichier dans un vecteur

save fichiers_mat/vecteur

%Récupérer chaque ligne du code

load fichiers_mat/vecteur

for i=1:length(vecteur)

   if strcmp(vecteur(i),'_')==1              % code

    code=vecteur(1:i); x=1+i;

   end % end if

   if strcmp(vecteur(i),'(')==1      

    dico_Y_ligne1=vecteur(x:i); x=1+i;       %ligne1 dico Y

   end % end if

   if strcmp(vecteur(i),')')==1

    dico_Y_ligne2=vecteur(x:i); x=1+i;       %ligne2 dico Y

   end % end if

   if strcmp(vecteur(i),'&')==1              %ligne1 dico CB

    dico_CB_ligne1=vecteur(x:i); x=1+i;

   end % end if

   if strcmp(vecteur(i),'~')==1              %ligne2 dico CB

    dico_CB_ligne2=vecteur(x:i); x=1+i;

   end % end if

   if strcmp(vecteur(i),'/')==1              %ligne1 dico CR

     dico_CR_ligne1=vecteur(x:i); x=1+i;

   end % end if

   if strcmp(vecteur(i),'\')==1              %ligne2 dico CR

    dico_CR_ligne2=vecteur(x:i);

   end % end if

end % end for

%Compléter

code=code(1:end-1);

code_cell=tab_to_cell (code); code_cell{end}=code(end-2);code_cell{end+1}=code(end);

dico_Y_l1=tab_to_cell (dico_Y_ligne1); dico_Y_l2=tab_to_cell (dico_Y_ligne2);

dico_CB_l1=tab_to_cell (dico_CB_ligne1); dico_CB_l2=tab_to_cell (dico_CB_ligne2);

dico_CR_l1=tab_to_cell (dico_CR_ligne1); dico_CR_l2=tab_to_cell (dico_CR_ligne2);

dico_Y_l1{end+1}='#'; dico_Y_l2{end+1}='#';

dico_CB_l1{end+1}='#'; dico_CB_l2{end+1}='#';

Y_dico(1,:)=dico_Y_l1; Y_dico(2,:)=dico_Y_l2;

CB_dico(1,:)=dico_CB_l1; CB_dico(2,:)=dico_CB_l2; 

%Extraction de la qualité

dico_CR_ligne2=dico_CR_ligne2(1:end-1);

i=0;k=length(dico_CR_ligne2);

while ~strcmp(dico_CR_ligne2(k),' ')

i=i+1; k=k-1;

end % end while

qualite=dico_CR_ligne2(length(dico_CR_ligne2)-i+1:length(dico_CR_ligne2));

qualite=str2num(qualite);

dico_CR_l2{end+1}=qualite;

dico_CR_l1{end+1}='#';

CR_dico(1,:)=dico_CR_l1; CR_dico(2,:)=dico_CR_l2; 

load fichiers_mat/option

decompression_jpeg (code_cell,nom_image,option,Y_dico,CB_dico,CR_dico);