partie 2 :DeCompression :
Décodage Huffman1 pour un bloc de pixels en RVB
function Matrice3=decodhuff_rvb(code_huffman,Y_dico,CB_dico,CR_dico)
% Récupérer la matrice de pixels après la décompression HUFFMAN1 (couleurs)
%Récupérer la qualité
qualite=CR_dico{end};
x=1;
%Récupérer les chaînes Y CB et CR
for i=1:length(code_huffman)
if strcmp(code_huffman{i},'y')==1
Y=code_huffman(1:i);
x=1+i;
end % end if
if strcmp(code_huffman{i},'c')==1
CB=code_huffman(x:i);
x=1+i;
end % end if
if strcmp(code_huffman{i},'r')==1
CR=code_huffman(x:i);
end % end if
end % end for
Y=Y(1:end-1);CB=CB(1:end-1);CR=CR(1:end-1);
%Répérer chaque ligne de code
x=1;t=1;
for i=1:length(Y)
if strcmp(Y{i},'e')==1
eval([ 'y' num2str(x) '=Y(t:i);']);
t=i+1;x=x+1;
end % end if
end % end for
x=1;t=1;
for i=1:length(CB)
if strcmp(CB{i},'e')==1
eval([ 'cb' num2str(x) '=CB(t:i);']);
t=i+1;x=x+1;
end % end if
end % end for
x=1;t=1;
for i=1:length(CR)
if strcmp(CR{i},'e')==1
eval([ 'cr' num2str(x) '=CR(t:i);']);
t=i+1;x=x+1;
end % end if
end % end for
%Répérer chaque ligne du dictionnaire
x=1;t=1;f=1;oo=1;
for i=1:length(Y_dico)
if strcmp(Y_dico{1,i},'#')==1
for f=t:i
variable{1,f}=Y_dico{1,f};
variable{2,f}=Y_dico{2,f};
end % end for
variable=enlever_vide (variable);
eval([ 'w' num2str(x) '=variable;']);
t=i+1;x=x+1; clear variable;
end % end if
end % end for
x=1;t=1;f=1;oo=1;
for i=1:length(CB_dico)
if strcmp(CB_dico{1,i},'#')==1
for f=t:i
variable{1,f}=CB_dico{1,f};
variable{2,f}=CB_dico{2,f};
end % end for
variable=enlever_vide (variable);
eval([ 'q' num2str(x) '=variable;']);
t=i+1;x=x+1; clear variable;
end % end if
end % end for
x=1;t=1;f=1;oo=1;
for i=1:length(CR_dico)
if strcmp(CR_dico{1,i},'#')==1
for f=t:i
variable{1,f}=CR_dico{1,f};
variable{2,f}=CR_dico{2,f};
end % end for
variable=enlever_vide (variable);
eval([ 's' num2str(x) '=variable;']);
t=i+1;x=x+1; clear variable;
end % end if
end % end for
save fichiers_mat/vect;
%Récupérer les blocs de pixels
x=x-1;load fichiers_mat/vect;i=1;
while i<x
code_huff_y=eval([ 'y' num2str(i)]);
code_huff_cb=eval([ 'cb' num2str(i)]);
code_huff_cr=eval([ 'cr' num2str(i)]);
dico_y=eval([ 'w' num2str(i)]);
dico_cb=eval([ 'q' num2str(i)]);
dico_cr=eval([ 's' num2str(i)]);
[r,v,b]=traitement_huff_rvb_inverse(code_huff_y,code_huff_cb,code_huff_cr,dico_y,dico_cb,dico_cr,qualite);
eval([ 'r' num2str(i) '=r;']);
eval([ 'v' num2str(i) '=v;']);
eval([ 'b' num2str(i) '=b;']);
i=i+1;
end % end while
%Recoller les blocs
load fichiers_mat/dim;load fichiers_mat/matrices;
G=xx;P=nn/8;
RR=ret_bloc ('r',G,P);
VV=ret_bloc ('v',G,P);
BB=ret_bloc ('b',G,P);
R=eval(['[' RR ']']);
V=eval(['[' VV ']']);
B=eval(['[' BB ']']);
%Redimensionner l'image
load fichiers_mat/indices;
R=decomp_block (R,indL,indC);
V=decomp_block (V,indL,indC);
B=decomp_block (B,indL,indC);
Matrice3(:,:,1)=R;Matrice3(:,:,2)=V;Matrice3(:,:,3)=B;