partie 2 :DeCompression :

 

Décodage RLE pour une image en RVB

function Matrice3=decodrle_rvb(coderle)

%Décodage RLE pour RVB

%Récupérer la qualité

load fichiers_mat/coderle;

qualite=coderle(end);

qualite=cell2mat(qualite);

if ischar(qualite)==1

qualite=str2num(qualite);

end % end if

G=coderle(1:end-1);

%Récupérer les codes de Y,CB et CR

x=1;

for i=1:length(coderle)

   if strcmp(coderle{i},'y')==1

    Y=coderle(1:i);

    x=1+i;

   end % end if

   if strcmp(coderle{i},'c')==1

   CB=coderle(x:i);

   x=1+i;

   end % end if

   if strcmp(coderle{i},'r')==1

   CR=coderle(x:i);

   end % end if

end % end for

Y=Y(1:end-1);CB=CB(1:end-1);CR=CR(1:end-1);

%Récupérer le code de chaque bloc

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

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

save fichiers_mat/vect;

%Décodage du code de chaque bloc

x=x-1; load fichiers_mat/vect; i=1;

while i<x

    a=eval([ 'y' num2str(i)]);

    b=eval([ 'cb' num2str(i)]);

    c=eval([ 'cr' num2str(i)]);

   [r,v,b]=traitement_rle_inverse (a,b,c,qualite);

    eval([ 'r' num2str(i) '=r;']);

    eval([ 'v' num2str(i) '=v;']);

    eval([ 'b' num2str(i) '=b;']);

i=i+1;

end % end while

load fichiers_mat/dim;

%Recoller les blocs

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

load fichiers_mat/indices;

%Redimensionner l'image

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;