partie 1 : Compression :

 

Codage Huffman2 pour une image en RVB

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

%Codage HUFFMAN2 pour RVB

%Découpage en blocs

decoupage (file);

load fichiers_mat/matrices;

%Récupérer rouge,vert et bleu

x=1;

while x<=t/64

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

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

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

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

x=x+1; 

end %end while

save fichiers_mat/matrices;

%Application 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_huff2_rvb (Z,qualite);

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

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

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

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

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

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

x=x+1; 

end % end while

save fichiers_mat/mat_y

%Recoller les codes pour former un seul code

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 ']']); % code

Y_dico=eval(['[' dicoo_y ']']); CB_dico=eval(['[' dicoo_cb ']']); CR_dico=eval(['[' dicoo_cr ']']); % dico

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

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