partie 2 :DeCompression :

 

Décodage HUFFMAN1 pour un bloc de pixels en RVB

function [r,v,b]=traitement_huff_rvb_inverse(code_huff_y,code_huff_cb,code_huff_cr,dico_y,dico_cb,dico_cr,qualite)

% Entrer le code HUFFMAN1 de Y,CB et CR et retourne les vecteur RVB pour un

%bloc 8x8

%Enlever le 'e' qui marque la fin

code_huff_y=code_huff_y(1:end-1);

code_huff_cb=code_huff_cb(1:end-1);

code_huff_cr=code_huff_cr(1:end-1);

%Décodage HUFFMAN1

codey=traitement_huffman_inverse (code_huff_y,dico_y);

codecb=traitement_huffman_inverse (code_huff_cb,dico_cb);

codecr=traitement_huffman_inverse (code_huff_cr,dico_cr);

%Passer des strings vers int

codey=denormaliser_type (codey);

codecb=denormaliser_type (codecb);

codecr=denormaliser_type (codecr);

%Transformer les vecteurs en cell arrays

codey=cell2mat(codey);

codecb=cell2mat(codecb);

codecr=cell2mat(codecr);

%Décodage RLE

y=decodage_rle (codey);

cb=decodage_rle (codecb);

cr=decodage_rle (codecr);

%Zigzag inverse

yquan=zigzaginv (y);

cbquan=zigzaginv (cb);

crquan=zigzaginv (cr); 

%Quantification inverse

ydct=quantificationinverse (yquan,qualite,0);

cbdct=quantificationinverse (cbquan,qualite,1);

crdct=quantificationinverse (crquan,qualite,1);

%DCT inverse

y=dct2diminv (ydct);

cb=dct2diminv (cbdct);

cr=dct2diminv (crdct); 

y=y+128;cb=cb+128;cr=cr+128;

%Transformation de couleurs inverse

[r,v,b]=torvb (y,cb,cr);