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;