SlideShare une entreprise Scribd logo
1  sur  3
Télécharger pour lire hors ligne
Master GE Compression d’images TP1
COMPRESSION JPEG
Objectif
L’objectif du TP est la réalisation des étapes du codeur JPEG sous Matlab. On demande de
programmer les différents blocs pour réaliser une compression de l’image.
Principale étape de compression
Le principe de base de la compression JPEG consiste à effectuer sur chaque bloc LxL de l’image
(L=8 pour la norme JPEG) les opérations représentées sur le schéma suivant :
1) Ecrire une fonction, que l’on appellera "coder.m" qui regroupe les étapes suivantes :
 calculer la DCT d’une image Img (pour cela on utilisera la
fonction Matlab "dct2.m").
 calculer les indices de quantification sur les blocs
transformés de taille LxL.
 retourner l’ensemble des blocs transformés indicés (dans une matrice de mêmes
dimensions que l’image originale).
La syntaxe d’appel de cette fonction devra être : [ImgTr] = coder(Img,L,Q).
Pour les tests, on écrira un programme principal qui utilise cette fonction, et on prendra une
matrice de quantification standard donnée par :
2) Ecrire la fonction de décodage : [ImgRec] =decoder(ImgTr,L,Q) qui :
 pour chaque bloc d’indices (pixels transformés), multiplie
ceux-ci par les pas de quantification correspondants
(multiplication de matrices point à point) pour obtenir le
bloc transformé quantifié,
 puis on calcule la DCT inverse (idct2.m).
3) Ecrire la fonction [D]=distimage(Img,Imgrec) qui calcule la distorsion moyenne (écart
quadratique moyen) entre l’image originale et l’image reconstituée.
4) On demande de tester ces fonctions sur une image pour différentes matrices de
quantification Q :
 avec une quantification optimale utilisant la matrice de ‘pas’ définie dans le standard
JPEG.
Q_Stand=
[16 11 10 16 24 40 51 61;
12 12 14 19 26 58 60 55;
14 13 16 24 40 57 69 56;
14 17 22 29 51 87 80 62;
18 22 37 56 68 109 103 77;
24 35 55 64 81 104 113 92;
49 64 78 87 103 121 120 101;
72 92 95 98 112 100 103 99]
Master GE Compression d’images TP1
 avec une quantification uniforme : Q= q*ones(L,L) où q=5.
 avec des versions dégradées de ces matrices (c'est-à-dire avec des pas de
quantification multipliés par un facteur 2p
, à essayer pour p = 1 (réduction d’un bit
par pixel a priori) ou p= 2 (réduction de 2 bits par pixel).
5) Calculer et tracer l’histogramme des indices de quantification obtenus.
Interpréter cet histogramme en mettant l’accent sur les points suivants :
 estimation du nombre de bits nécessaires (sans faire appel à une technique de codage
sans pertes) pour transmettre à priori les indices de quantification (pixels
transformés).
 remarque sur le nombre de valeurs nulles.
Les autres étapes de la compression JPEG
Le schéma complet d’une chaine de codage –décodage JPEG peut être représenté comme suit :
1) Lecture en zigzag et Run Length Coding
Chacun des blocs DCT quantifiés obtenus est lu en zigzag, de manière à regrouper les
coefficients non nuls.
La fonction donnée ci-après permet d’effectuer un zigzag sur les indices d’une matrice carrée
M de NxN éléments, pour l’utiliser on écrit R = M(zigzag(N)).
function ind = zigzag(N);
K = 2;
M = N-1;
ind = zeros(1,N*N);
for i=[1:M];
ind(K:K+i) = [(1+M*rem(i,2)), (-1)^i*M*ones(1,i)];
K = K+i+1;
end
for i=[M-1:-1:0]
ind(K:K+i) = [(N-M*rem(i,2)), (-1)^i*M*ones(1,i)];
K = K+i+1;
end
ind = cumsum(ind)+1;
return
Master GE Compression d’images TP1
a. expliquer les étapes de cette fonction
b. introduire cette fonction dans le programme de compression
c. écrire une fonction pour réaliser le codage RLC (de type {longueur plage nulle, valeur})
d. appliquer le codage RLC sur les coefficients calculés par la fonction coder( )
2) Codage sans pertes – Codage de Huffman
Le programme ci-contre permet de faire un codage de Huffman des coefficients Im_dctq
a. Expliquer les étapes de cette fonction.
b. Introduire cette fonction dans le programme de codage complet.
c. Faire des expérimentations sur des images pour vérifier l’effet de la compression
JPEG.
temp=1
temp2=0
[row, col] = size(Im_dctq);
pixel_count = row*col;
symbol = reshape(Im_dctq,[1,row*col]);
symbol1 = unique(symbol);
len = length(symbol1);
for i = 1:len
k = Im_dctq==symbol1(i);
count(temp) = sum(k(:));
prob_pix(temp) = double(count(temp)/pixel_count);
temp2 = temp2 + prob_pix(temp);
prob_cum(temp) = temp2;
temp = temp+1;
end
[dict,avg_len] = huffmandict(symbol1,prob_pix);

Contenu connexe

Tendances

chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signauxBAKKOURY Jamila
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Samir Tabib
 
SE1 - CM Composants - De la diode à l'ADI
SE1 - CM Composants - De la diode à l'ADISE1 - CM Composants - De la diode à l'ADI
SE1 - CM Composants - De la diode à l'ADIPierre Maréchal
 
Eclairage publique
Eclairage publiqueEclairage publique
Eclairage publiqueSami Sahli
 
Les réseaux de neurones
Les réseaux de neuronesLes réseaux de neurones
Les réseaux de neuronesMariam Amchayd
 
Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires sarah Benmerzouk
 
CM2 - Conversion Anlogique Numérique
CM2 - Conversion Anlogique NumériqueCM2 - Conversion Anlogique Numérique
CM2 - Conversion Anlogique NumériquePierre Maréchal
 
cours1_courtellemont.ppt
cours1_courtellemont.pptcours1_courtellemont.ppt
cours1_courtellemont.pptTITANIUMALFREDO
 
Tp n6 les compteurs
Tp n6 les compteursTp n6 les compteurs
Tp n6 les compteursHatem Jebali
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]Assia Mounir
 
Examens électronique analogique
Examens électronique analogiqueExamens électronique analogique
Examens électronique analogiqueSalah-Eddine MAAFI
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industrielsHafsaELMessaoudi
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'imagesAbdelouahed Abdou
 
Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Soumia Elyakote HERMA
 
utilisation de MATLAB dans l'asservissement.pdf
utilisation de MATLAB dans l'asservissement.pdfutilisation de MATLAB dans l'asservissement.pdf
utilisation de MATLAB dans l'asservissement.pdfAnesKebbab
 
Réseaux des neurones
Réseaux des neuronesRéseaux des neurones
Réseaux des neuronesMed Zaibi
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2badr zaimi
 

Tendances (20)

Langage vhdl
Langage vhdlLangage vhdl
Langage vhdl
 
chap3 numerisation_des_signaux
chap3 numerisation_des_signauxchap3 numerisation_des_signaux
chap3 numerisation_des_signaux
 
Traitement de signal -chapitre 1
Traitement de signal -chapitre 1Traitement de signal -chapitre 1
Traitement de signal -chapitre 1
 
SE1 - CM Composants - De la diode à l'ADI
SE1 - CM Composants - De la diode à l'ADISE1 - CM Composants - De la diode à l'ADI
SE1 - CM Composants - De la diode à l'ADI
 
Traitement de signal
Traitement de signalTraitement de signal
Traitement de signal
 
Eclairage publique
Eclairage publiqueEclairage publique
Eclairage publique
 
Les réseaux de neurones
Les réseaux de neuronesLes réseaux de neurones
Les réseaux de neurones
 
Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires
 
CM2 - Conversion Anlogique Numérique
CM2 - Conversion Anlogique NumériqueCM2 - Conversion Anlogique Numérique
CM2 - Conversion Anlogique Numérique
 
cours1_courtellemont.ppt
cours1_courtellemont.pptcours1_courtellemont.ppt
cours1_courtellemont.ppt
 
Tp n6 les compteurs
Tp n6 les compteursTp n6 les compteurs
Tp n6 les compteurs
 
Digital Signal Processor ( DSP ) [French]
Digital Signal Processor ( DSP )  [French]Digital Signal Processor ( DSP )  [French]
Digital Signal Processor ( DSP ) [French]
 
Examens électronique analogique
Examens électronique analogiqueExamens électronique analogique
Examens électronique analogique
 
Automates programmables industriels
Automates programmables industrielsAutomates programmables industriels
Automates programmables industriels
 
L'algorithme du Recuit simule
L'algorithme du Recuit simuleL'algorithme du Recuit simule
L'algorithme du Recuit simule
 
Introduction au traitement d'images
Introduction au traitement d'imagesIntroduction au traitement d'images
Introduction au traitement d'images
 
Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)Exposé réseaux des neurones (NN) - (RN)
Exposé réseaux des neurones (NN) - (RN)
 
utilisation de MATLAB dans l'asservissement.pdf
utilisation de MATLAB dans l'asservissement.pdfutilisation de MATLAB dans l'asservissement.pdf
utilisation de MATLAB dans l'asservissement.pdf
 
Réseaux des neurones
Réseaux des neuronesRéseaux des neurones
Réseaux des neurones
 
Automatique systémes linéaires et non linéaires 2
Automatique   systémes linéaires et non linéaires 2Automatique   systémes linéaires et non linéaires 2
Automatique systémes linéaires et non linéaires 2
 

Similaire à Tp1 20206

Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesEL-Hachemi Guerrout
 
cours-gratuit.com--CoursMatlab-id4508 (1).pdf
cours-gratuit.com--CoursMatlab-id4508 (1).pdfcours-gratuit.com--CoursMatlab-id4508 (1).pdf
cours-gratuit.com--CoursMatlab-id4508 (1).pdfNarjiss Hach
 
Lecture 3: Visualization and Programming
Lecture 3: Visualization and ProgrammingLecture 3: Visualization and Programming
Lecture 3: Visualization and ProgrammingSmee Kaem Chann
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)abdellah12
 
Tp circuits electriques( avec logiciel "CADENCE PSD")
Tp circuits electriques( avec logiciel "CADENCE PSD") Tp circuits electriques( avec logiciel "CADENCE PSD")
Tp circuits electriques( avec logiciel "CADENCE PSD") YassineLamgammah
 
examen en DSP 2023.pdf
examen en DSP 2023.pdfexamen en DSP 2023.pdf
examen en DSP 2023.pdfkamouf
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfMbarkiIsraa
 
Report on GPU complex type usage
Report on GPU complex type usageReport on GPU complex type usage
Report on GPU complex type usageCaner Candan
 
Veuillez remplacer votre téléphone portable .pdf
Veuillez remplacer votre téléphone portable .pdfVeuillez remplacer votre téléphone portable .pdf
Veuillez remplacer votre téléphone portable .pdfssuser9b5869
 
Cours analyse-num source1
Cours analyse-num source1Cours analyse-num source1
Cours analyse-num source1Lacina Zina
 
Td2 decrypted
Td2 decryptedTd2 decrypted
Td2 decryptedMed Mmed
 

Similaire à Tp1 20206 (20)

Performances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicalesPerformances dans la segmentation d’images médicales
Performances dans la segmentation d’images médicales
 
cours-gratuit.com--CoursMatlab-id4508 (1).pdf
cours-gratuit.com--CoursMatlab-id4508 (1).pdfcours-gratuit.com--CoursMatlab-id4508 (1).pdf
cours-gratuit.com--CoursMatlab-id4508 (1).pdf
 
Chapitre9-1.pdf
Chapitre9-1.pdfChapitre9-1.pdf
Chapitre9-1.pdf
 
Lecture 3: Visualization and Programming
Lecture 3: Visualization and ProgrammingLecture 3: Visualization and Programming
Lecture 3: Visualization and Programming
 
Ch8 correction exercices (1)
Ch8 correction exercices (1)Ch8 correction exercices (1)
Ch8 correction exercices (1)
 
Bitmaps
BitmapsBitmaps
Bitmaps
 
Tp circuits electriques( avec logiciel "CADENCE PSD")
Tp circuits electriques( avec logiciel "CADENCE PSD") Tp circuits electriques( avec logiciel "CADENCE PSD")
Tp circuits electriques( avec logiciel "CADENCE PSD")
 
examen en DSP 2023.pdf
examen en DSP 2023.pdfexamen en DSP 2023.pdf
examen en DSP 2023.pdf
 
Compression JPEG
Compression JPEGCompression JPEG
Compression JPEG
 
04 cours matrices_suites
04 cours matrices_suites04 cours matrices_suites
04 cours matrices_suites
 
Pfa2
Pfa2 Pfa2
Pfa2
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Chap 4 déterminant
Chap 4 déterminantChap 4 déterminant
Chap 4 déterminant
 
Report on GPU complex type usage
Report on GPU complex type usageReport on GPU complex type usage
Report on GPU complex type usage
 
transparents-Algo-complexite.pdf
transparents-Algo-complexite.pdftransparents-Algo-complexite.pdf
transparents-Algo-complexite.pdf
 
Veuillez remplacer votre téléphone portable .pdf
Veuillez remplacer votre téléphone portable .pdfVeuillez remplacer votre téléphone portable .pdf
Veuillez remplacer votre téléphone portable .pdf
 
Matlab by Prof.Keang Sè Pouv
Matlab by Prof.Keang Sè PouvMatlab by Prof.Keang Sè Pouv
Matlab by Prof.Keang Sè Pouv
 
Cours analyse-num source1
Cours analyse-num source1Cours analyse-num source1
Cours analyse-num source1
 
Td2 decrypted
Td2 decryptedTd2 decrypted
Td2 decrypted
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 

Tp1 20206

  • 1. Master GE Compression d’images TP1 COMPRESSION JPEG Objectif L’objectif du TP est la réalisation des étapes du codeur JPEG sous Matlab. On demande de programmer les différents blocs pour réaliser une compression de l’image. Principale étape de compression Le principe de base de la compression JPEG consiste à effectuer sur chaque bloc LxL de l’image (L=8 pour la norme JPEG) les opérations représentées sur le schéma suivant : 1) Ecrire une fonction, que l’on appellera "coder.m" qui regroupe les étapes suivantes :  calculer la DCT d’une image Img (pour cela on utilisera la fonction Matlab "dct2.m").  calculer les indices de quantification sur les blocs transformés de taille LxL.  retourner l’ensemble des blocs transformés indicés (dans une matrice de mêmes dimensions que l’image originale). La syntaxe d’appel de cette fonction devra être : [ImgTr] = coder(Img,L,Q). Pour les tests, on écrira un programme principal qui utilise cette fonction, et on prendra une matrice de quantification standard donnée par : 2) Ecrire la fonction de décodage : [ImgRec] =decoder(ImgTr,L,Q) qui :  pour chaque bloc d’indices (pixels transformés), multiplie ceux-ci par les pas de quantification correspondants (multiplication de matrices point à point) pour obtenir le bloc transformé quantifié,  puis on calcule la DCT inverse (idct2.m). 3) Ecrire la fonction [D]=distimage(Img,Imgrec) qui calcule la distorsion moyenne (écart quadratique moyen) entre l’image originale et l’image reconstituée. 4) On demande de tester ces fonctions sur une image pour différentes matrices de quantification Q :  avec une quantification optimale utilisant la matrice de ‘pas’ définie dans le standard JPEG. Q_Stand= [16 11 10 16 24 40 51 61; 12 12 14 19 26 58 60 55; 14 13 16 24 40 57 69 56; 14 17 22 29 51 87 80 62; 18 22 37 56 68 109 103 77; 24 35 55 64 81 104 113 92; 49 64 78 87 103 121 120 101; 72 92 95 98 112 100 103 99]
  • 2. Master GE Compression d’images TP1  avec une quantification uniforme : Q= q*ones(L,L) où q=5.  avec des versions dégradées de ces matrices (c'est-à-dire avec des pas de quantification multipliés par un facteur 2p , à essayer pour p = 1 (réduction d’un bit par pixel a priori) ou p= 2 (réduction de 2 bits par pixel). 5) Calculer et tracer l’histogramme des indices de quantification obtenus. Interpréter cet histogramme en mettant l’accent sur les points suivants :  estimation du nombre de bits nécessaires (sans faire appel à une technique de codage sans pertes) pour transmettre à priori les indices de quantification (pixels transformés).  remarque sur le nombre de valeurs nulles. Les autres étapes de la compression JPEG Le schéma complet d’une chaine de codage –décodage JPEG peut être représenté comme suit : 1) Lecture en zigzag et Run Length Coding Chacun des blocs DCT quantifiés obtenus est lu en zigzag, de manière à regrouper les coefficients non nuls. La fonction donnée ci-après permet d’effectuer un zigzag sur les indices d’une matrice carrée M de NxN éléments, pour l’utiliser on écrit R = M(zigzag(N)). function ind = zigzag(N); K = 2; M = N-1; ind = zeros(1,N*N); for i=[1:M]; ind(K:K+i) = [(1+M*rem(i,2)), (-1)^i*M*ones(1,i)]; K = K+i+1; end for i=[M-1:-1:0] ind(K:K+i) = [(N-M*rem(i,2)), (-1)^i*M*ones(1,i)]; K = K+i+1; end ind = cumsum(ind)+1; return
  • 3. Master GE Compression d’images TP1 a. expliquer les étapes de cette fonction b. introduire cette fonction dans le programme de compression c. écrire une fonction pour réaliser le codage RLC (de type {longueur plage nulle, valeur}) d. appliquer le codage RLC sur les coefficients calculés par la fonction coder( ) 2) Codage sans pertes – Codage de Huffman Le programme ci-contre permet de faire un codage de Huffman des coefficients Im_dctq a. Expliquer les étapes de cette fonction. b. Introduire cette fonction dans le programme de codage complet. c. Faire des expérimentations sur des images pour vérifier l’effet de la compression JPEG. temp=1 temp2=0 [row, col] = size(Im_dctq); pixel_count = row*col; symbol = reshape(Im_dctq,[1,row*col]); symbol1 = unique(symbol); len = length(symbol1); for i = 1:len k = Im_dctq==symbol1(i); count(temp) = sum(k(:)); prob_pix(temp) = double(count(temp)/pixel_count); temp2 = temp2 + prob_pix(temp); prob_cum(temp) = temp2; temp = temp+1; end [dict,avg_len] = huffmandict(symbol1,prob_pix);