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;