0% ont trouvé ce document utile (0 vote)
60 vues2 pages

Implémentation Compression JPEG sous Matlab

Transféré par

nabila brahimi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues2 pages

Implémentation Compression JPEG sous Matlab

Transféré par

nabila brahimi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UE

 Compression  des  Images  et  des  Sons             2010-­‐2011  


 
 
COMPRESSION  DES  IMAGES  
TP2  :  Compression  JPEG  
 
 
Nous  allons  implémenter  sous  Matlab  les  différentes  étapes  de  la  compression  JPEG  vues  
en   cours.   Notez   qu’à   aucun   moment   nous   ne   stockerons   sur   le   disque   le   fichier   .jpg  
résultant,   mais   que   nous   pourrons   par   contre   visualiser   les   effets   de   la   compression   sur  
l’image.  Nous  travaillerons  dans  un  premier  temps  avec  l’image  lena.tif.  
 
 
1) Charger   l’image   sous   Matlab.   La   première   étape   du   JPEG   consiste   à   travailler  
dans  le  plan  des  luminance  et  chrominances.  Effectuer  cette  conversion  à  l’aide  
de   la   fonction   fournie   rgb2ycbcr().   Vérifier   rapidement   que   notre   œil   n’est  
pas   sensible   à   un   sous   échantillonnage   d’un   facteur   2   de   la   chrominance.   Pour   la  
suite,   utiliser   la   fonction   double()   sur   l’image   en   luminance/chrominance   de  
façon  à  travailler  avec  un  niveau  suffisant  de  précision.  
 
2) Découper  ensuite  l’image  en  blocs  disjoints  de  dimension  8x8  pour  la  luminance,  
et   en   blocs   4x4   pour   les   chrominances,   et   en   calculer   les   transformées   en  
cosinus.   Vérifier   que   la   propriété   de   concentration   de   l’énergie   de   cette  
transformation  est  vérifiée.  
 
3) L’étape   suivante   consiste   à   quantifier   chacun   des   coefficients   de   ces  
transformées.   Construire   deux   matrices   de   quantification   (une   pour   la  
luminance,   une   seconde   pour   les   deux   chrominances),   telles   que   les   éléments  
Q(i,j)  situés  sur  la  ième  ligne  et  jème  colonne  de  ces  matrices  vérifient  :  
Q(i,j)  =  1+F(i+j-­‐1),  où  F  désigne  le  facteur  de  qualité  (F>0).  
 
4) Effectuer  la  quantification  de  chacun  des  blocs.  
Attention  :   La   partie   entière   floor(1.3)=1, floor(0.2)=0 et floor(-
1.4)  vaut  –2  et  non  pas  –1  ;  il  faut  dont  faire  sign(x)*floor(abs(x))  pour  
avoir  le  bon  résultat  
 
5) Effectuer   ensuite   la   déquantification.   Comparer   les   valeurs   déquantifiées  
obtenues  avec  les  «  vraies  »  valeurs  obtenues  après  calcul  des  transformées.  
 
6) Enfin,   afficher   l’image   compressée.   Pour   cela,   il   faudra   interpoler   les   valeurs  
manquantes   des   deux   chrominances   (pour   revenir,   depuis   des   blocs   4x4,   à   des  
blocs   8x8)   avec   la   commande  :   bloc8x8 = kron(bloc4x4,ones(2,2)).  
Utiliser  ensuite  de  manière  successive  les  fonctions  uint8()  et  ycbcr2rgb()
pour  revenir  à  une  image  RGB  codée  sur  8  digits.  
 
7) Visualiser  les  effets  de  la  compression.  Tracer  l’erreur  moyenne  en  fonction  du  
facteur   F.   A   partir   de   quelle   valeur   de   F   percevez   vous   une   différences  entre  
l’image  d’origine  et  sa  version  compressée  ?  
 
8) En  pratique,  la  majorité  des  valeurs  quantifiées  des  transformées  de  chacun  des  
blocs   est   compressée   selon   une   méthode   combinant   RLE   et   Huffman   après  
lecture   en   zig-­‐zag.   Il   est   donc   nécessaire   de   connaître   ici   les   fréquences  
d’apparition   des   différentes   valeurs   quantifiées.   La   fonction  
freq=freq_bloc(blocY, blocCb, blocCr, freq)   actualise   ces  
fréquences  d’apparition  pour  l’ensemble  de  l’image.  Insérer  cette  fonction  dans  
votre   code.   En   déduire   les   probabilités   d’apparition   proba   de   chacune   des  
valeurs  comprises  entre  0  et  255.  
 
9) Utiliser   la   fonction   L=compress(proba)   qui   calcule   pour   vous   les   mots   de  
code   associés   aux   valeurs   quantifiées   des   transformées   ainsi   que   la   longueur  
moyenne  L  des  mots  de  code.  En  déduire  le  taux  de  compression.  
 
D’autres   images   sont   à   votre   disposition.   Tester   votre   code   et   les   effets   de   la  
compression  sur  chacune  des  ces  images.  Conclure  quant  à  l’efficacité  de  la  compression  
JPEG  selon  le  type  d’image.  
 
 
lena.tif paysage.tif

   
symboles.tif logo.tif  

 
 
 
 

Vous aimerez peut-être aussi