partie 1 : Compression :

 

Codage en Huffman1 pour une image en RVB

function [code_huffman,Y_dico,CB_dico,CR_dico]=testhuff_rvb(file,qualite)

% Compression HUFFMAN1 pour les images en couleurs 

%Découpage en blocs 8x8

decoupage (file);

load fichiers_mat/matrices

x=1;

while x<=t/64

    eval(['Z(:,:,1)' '=R' num2str(x) ';']); % ROUGE

    eval(['Z(:,:,2)' '=V' num2str(x) ';'] ); % VERT

    eval(['Z(:,:,3)' '=B' num2str(x) ';']); % BLEU

    eval(['matrice',num2str(x),'=Z;'])

    x=x+1; 

end % end while

save fichiers_mat/matrices

%Appliquer le codage HUFFMAN1 sur chaque bloc

load fichiers_mat/matrices;

x=1;

while x<=t/64

      eval(['Z' '=matrice' num2str(x) ';']);

      [code_huff_y,code_huff_cb,code_huff_cr,dico_y,dico_cb,dico_cr]=traitement_huff_rvb (Z,qualite);

      eval(['y' num2str(x) '=code_huff_y;']);

      eval(['b' num2str(x) '=code_huff_cb;']);

      eval(['r' num2str(x) '=code_huff_cr;']);

      eval(['w' num2str(x) '=dico_y;']);

      eval(['q' num2str(x) '=dico_cb;']);

      eval(['s' num2str(x) '=dico_cr;']);

      x=x+1; 

end % end while

save fichiers_mat/mat_y;

 %Recoller le code et le dictionnaire (code à part et dictionnaire à part)

code_y=obt_chaine (t/64,'y',1,0);

code_cb=obt_chaine (t/64,'b',1,0);

code_cr=obt_chaine (t/64,'r',1,0);

dicoo_y=obt_chaine (t/64,'w',1,0);

dicoo_cb=obt_chaine (t/64,'q',1,0);

dicoo_cr=obt_chaine (t/64,'s',1,0);

load fichiers_mat/mat_y;

Y_code=eval(['[' code_y ']']);

CB_code=eval(['[' code_cb ']']);

CR_code=eval(['[' code_cr ']']);

Y_dico=eval(['[' dicoo_y ']']);

CB_dico=eval(['[' dicoo_cb ']']);

CR_dico=eval(['[' dicoo_cr ']']); 

code_huffman=[Y_code 'y' CB_code 'c' CR_code 'r'];

CR_dico{2,length(CR_dico)}=qualite;

save fichiers_mat/codehuffman;