partie : Compression :

 

Traitement Huffman1 pour un bloc de pixels en RVB

function [code_huff_y,code_huff_cb,code_huff_cr,dico_y,dico_cb,dico_cr]=traitement_huff_rvb(matrice3,qualite)

% Codage HUFFMAN1 pour un bloc 8x8 RVB 

%Récuper rouge,vert,blue

R=matrice3(:,:,1);V=matrice3(:,:,2);B=matrice3(:,:,3);

%Transformation en YCBCR

[Y,CB,CR]=toycbcr (R,V,B);

%Application de la DCT

Y=double(Y)-128; CB=double(CB)-128; CR=double(CR)-128;

Ydct=dct2dim (Y);CBdct=dct2dim (CB);CRdct=dct2dim (CR); 

%Quantification

Yquantifie=quantification (Ydct,qualite,0);

CBquantifie=quantification (CBdct,qualite,1);

CRquantifie=quantification (CRdct,qualite,1);

%Zigzag

Yzig=zigzag (Yquantifie);

CBzig=zigzag (CBquantifie);

CRzig=zigzag (CRquantifie);

%Encodage rle

yrle=encodage_rle (Yzig);

CBrle=encodage_rle (CBzig);

CRrle=encodage_rle (CRzig);

%Transformer le code RLE en cell aray

clear fichiers_mat/codey;clear fichiers_mat/codecb;clear fichiers_mat/codecr;

clear fichiers_mat/dico_y;clear fichiers_mat/dico_cb;clear fichiers_mat/dico_cr;

for i=1:length(yrle)

    codey{i}= yrle(i);

end % end for

for i=1:length(CBrle)

    codecb{i}= CBrle(i);

end % end for

for i=1:length(CRrle)

    codecr{i}= CRrle(i);

end % end for

%Codage HUFFMAN1 pour chaque les matrices Y,CB et CR

[code_huff_y,dico_y]=traitement_huffman (codey); %Y

code_huff_y=[code_huff_y 'e'];

dico_y{1,end+1}='#';

dico_y{2,end}='#';

[code_huff_cb,dico_cb]=traitement_huffman (codecb); %CB

code_huff_cb=[code_huff_cb 'e'];

dico_cb{1,end+1}='#';

dico_cb{2,end}='#';

[code_huff_cr,dico_cr]=traitement_huffman (codecr); %CR

code_huff_cr=[code_huff_cr 'e'];

dico_cr{1,end+1}='#';

dico_cr{2,end}='#';