14

TP traitement Image

  • Upload
    ensa

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

LA NORMEJPEG

COMPRESSIONETUDE DE

REALISER PAROMAR BARMAKI

YACINE A. AMKASSOU PR. FATANI

ENCADRE PAR

2013-2014

COMPTE RENDU DE TRAVAUX PRATIQUESLA NORME JPEG DE COMPRESION DES IMAGES FIXES SOUS MATLAB

2014-2013

UNIVERSITÉ HASSAN 1ER SETTATECOLE NATIONALE DES SCIENCES APPLIQUÉES

KHOURIBGA

3ÉMÉ ANNÉE CYCLE INGÉNIEUR GÉNIE ÉLECTRIQUE

LA NORMEJPEG

COMPRESSION

ETUDE DE

Universite HASSAN I

ENSA Khouribga

La norme JPEG de compression desimages fixes

Realise par :Yacine AbdessalamAMKASSOUOmar BARMAKI

Encadrant :Pr. Imad F.Eddine FATANI

8 janvier 2014

Table des matieres

1 Introduction 21.1 Traitement d’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 La norme JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2 Preparation 3

3 La transformee en cosinus Discrete 33.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2 Proprietes de base de la DCT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.3 Calcul de la DCT via une FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.4 La DCT a deux dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.5 Description du noyau de la transformee bidimensionnelle . . . . . . . . . . . . . 7

4 Traitement de l’image par bloc 8

5 La quantification, clef de lma compression 85.1 Etude de la quantification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

6 Conclusion 12

1

1 Introduction

1.1 Traitement d’image

Le traitement d’images est une discipline de l’informatique et des mathematiques appliqueesqui etudie les images numeriques et leurs transformations, dans le but d’ameliorer leur qualiteou d’en extraire de l’information. Il s’agit d’un sous-ensemble du traitement du signal dedie auximages et aux donnees derivees comme la video (par opposition aux parties du traitement dusignal consacrees a d’autres types de donnees : son et autres signaux monodimensionnels notam-ment), tout en operant dans le domaine numerique (par opposition aux techniques analogiquesde traitement du signal, comme la photographie ou la television traditionnelles).

Dans le contexte de la vision artificielle, le traitement d’images se place apres les etapesd’acquisition et de numerisation, assurant les transformations d’images et la partie de calculpermettant d’aller vers une interpretation des images traitees. Cette phase d’interpretation estd’ailleurs de plus en plus integree dans le traitement d’images, en faisant appel notamment al’intelligence artificielle pour manipuler des connaissances, principalement sur les informationsdont on dispose a propos de ce que representent les images traitees (connaissance du domaine).

Le traitement d’images commence a etre etudie dans les annees 1920 pour la transmis-sion d’images par le cable sous-marin allant de New York a Londres. Harry G. Bartholomewet Maynard D. McFarlane effectuent la premiere numerisation d’image avec compression dedonnees pour envoyer des fax de Londres a New York. Le temps de transfert passe ainsi de plusd’une semaine a moins de trois heures. Il n’y a pas vraiment d’evolution par la suite jusqu’a laperiode d’apres-guerre1. Le traitement du signal prend de l’importance vers la fin de la SecondeGuerre mondiale avec l’arrivee du radar. La prospection petroliere participe aussi beaucoup audeveloppement des techniques de traitement du signal.

Le veritable essor du traitement d’images n’a lieu que dans les annees 1960 quand les ordi-nateurs commencent a etre suffisamment puissants pour travailler sur des images. Peu apres,la redecouverte de la transformee de Fourier rapide (FFT) revolutionne le domaine, en ren-dant possible les manipulations du contenu frequentiel des signaux sur ordinateur. Cependant,l’essentiel des recherches porte encore, a cette epoque, sur l’amelioration des images et leurcompression.

1.2 La norme JPEG

La norme JPEG est une norme qui definit le format d’enregistrement et l’algorithme dedecodage pour une representation numerique compressee d’une image fixe. JPEG est l’acronymede Joint Photographic Experts Group. Il s’agit d’un comite d’experts qui edite des normesde compression pour l’image fixe. La norme communement appelee JPEG, de son vrai nomISO/CEI 10918-1 — UIT-T Recommendation T.81, est le resultat de l’evolution de travaux quiont debute dans les annees 1978 a 1980 avec les premiers essais en laboratoire de compressiond’images. JPEG definit deux classes de processus de compression :

– avec pertes ou compression irreversible. C’est le JPEG classique . Il permet des taux decompression de 3 a 100.

– sans pertes ou compression reversible. Il n’y a pas de pertes d’information et il est doncpossible de revenir aux valeurs originales de l’image. Les gains en termes de compressionsont alors plus modestes, avec un taux de compression de l’ordre de 2 a 8. Cette partiefait l’objet d’une norme specifique appelee JPEG-LS.

2

Cet algorithme est tres populaire, en particulier sur Internet ou la compression d’un fichierpermet de reduire le cout en bande passante. Il est de plus possible d’enregistrer une imagedans le format JPEG avec la majeure partie des appareils photos numeriques et telephonesportables. Cependant, les pertes se produisant lors de la compression ”classique” font qu’ilest moins utilise dans certains domaines comme l’imagerie medicale, ou la restitution fidele del’image initiale est plus importante.

2 Preparation

1. Le procssus de codage/decodage JPEG :

– 8x8 : Decoupage de l’image original sous forme numerique ;– Transformee en cosinus discrete (DCT) : on l’utilise pour la decorrelation des donees

et pour la concetration de l’energie dans les basses frequencs.– La quantification (Q) : Pour eliminer les hautes frequences.– Zig-Zag : Pour la mise en serie des donnees.– Codage : Codage de maniere optimale.

2. Dans la pratique, une certaine perte d’informations reste cependant possible en raisondes erreurs d’arrondis introduites en cours de calcul lorsqu’on fait la quantification.

3. la quantification ramene beaucoup de coefficients a 0 (surtout en bas a droite dans lamatrice, la ou se trouvent les hautes frequences). Seules quelques informations essentielles(concentrees dans le coin en haut a gauche) sont gardees pour representer le bloc. Laredondance des donnees contenues dans le bloc augmente ainsi fortement, ce qui peut etreexploite par un algorithme de compression : au moment de coder le resultat dans le fichier,la longue suite de zeros necessitera tres peu de place. Cependant, si la quantification esttrop forte (= taux de compression trop eleve), il y aura trop peu de coefficients non nulspour representer fidelement le bloc. Le probleme apparaıtra lors du decodage necessairepour l’affichage de l’image : a l’ecran la division en blocs deviendra visible, et l’imageaura un aspect � pixellise �.

3 La transformee en cosinus Discrete

3.1 Introduction

La transformee en cosinus discrete ou TCD (de l’anglais : DCT ou Discrete Cosine Trans-form) est une transformation proche de la transformee de Fourier discrete (DFT). Le noyau deprojection est un cosinus et cree donc des coefficients reels, contrairement a la DFT, dont le

3

noyau est une exponentielle complexe et qui cree donc des coefficients complexes. On peut ce-pendant exprimer la DCT en fonction de la DFT, qui est alors appliquee sur le signal symetrise.La variante la plus courante de la transformee en cosinus discret est la DCT type-II, souventsimplement appelee la DCT . Son inverse, qui correspond au type-III est souvent simplementappelee IDCT . Il existe quatre types de DCT , qui peuvent tous se mettre sous forme :

X[k] =∑n

x[n]Φkn (1)

ou les fonctions de base Φkn sont definies a partir de fonctions cosinus. Dans le cadre de lacompression video, on utilise la DCT de type II de la forme suivante :

Φkn =

√2

N

ck cos

k(n+1

2)π

N

n, k = 0, 1, 2, ..., N − 1 (2)

L’equation (1) definit une transformation matricielle Φ = [Φkn], d’un vecteur temporel x[n]en un vecteur de meme longueur X[k]. Dans la suite du TP, on prendra N=8.

3.2 Proprietes de base de la DCT

1. Le code MATLAB pour implementer la DCT sous la forme d’un produit matrice-vecteur :

function [X]= dct8(x)

N=length(x); % Dans notre cas N=8

phi=zeros(N,N);

X=zeros(N,1); % Initialisation de la matrice

A=sqrt(2/N); % Coefficient de la transformee

for i=0:N-1

if i==0

c=1/sqrt(2);

else

c=1;

end

for j=0:N-1

phi(i+1,j+1) = c*cos((i*pi)/N*(j+(1/2))); % calcul de noyau

end

end

X= A*phi*x; % Le resultat

end

2. Le code MATLAB de la DCT inverse (iDCT) :

function [x]= dct8inv(X)

N=length(X);

4

phi=zeros(N,N);

x=zeros(N,1);

A=sqrt(2/N);

for i=0:N-1

if i==0

c=1/sqrt(2);

else

c=1;

end

for j=0:N-1

phi(i+1,j+1)=c*cos((i*pi)/N*(j+(1/2)));

end

end

x= A*phi’*X;

end

3. Si on applique a un vecteur x quelconque la DCT et son inverse on trouve le vecteur x.Exemple par MATLAB :

x =

1

5

6

>> X = dct(x)

X =

6.9282

-3.5355

-1.2247

>> idct(X)

ans =

1.0000

5.0000

6.0000

3.3 Calcul de la DCT via une FFT

La il s’agit d’appliquer la fonction fft de Matlab sur 2N echantillons (echantillons (0 a N)+ zeros (N+1 a 2N)), de multiplier les N premiers echantillons par exp(-i*2*pi*k/(4*N), puis

5

de prendre la partie reelle et la multiplier par Ck et racine(2/N).Le code MATLAB :

function [X] = dctfft(x)

N=length(x);

X=zeros(N,1);

A=sqrt(2/N);

x=[x;zeros(N,1)];

W=zeros(N,1);

F=fft(x)

for n=1:N

W(n,1)=exp(-1i*(n-1)*pi/(2*N));

end

FF=F(1:N,1).*W

for i=1:N

if i==1

c=1/sqrt(2);

else

c=1;

end

X(i,1)=c*A*real(FF(i,1));

end

end

3.4 La DCT a deux dimensions

La DCT-II a deux dimensions est une extension modifiee de la transformation unidimen-sionnelle :

X(k, l) =2CkCl

N

N−1∑n=0

N−1∑m=0

x(n,m)cos

[πk

N(n+

1

2)

]cos

[πl

l(m+

1

2)

]

x(n,m) =2

N

N−1∑k=0

N−1∑l=0

CkClX(k, l)cos

[πk

N(n+

1

2)

]cos

[πl

l(m+

1

2)

]

avec : 0 ≤ n,m, k, l ≤ N − 1 et Ck =1√2

si k = 0, 1 sinon

Comme plusieurs transformees 2D, la DCT-II est separable, ce qui implique qu’on peutl’implementer a partir de la DCT a une dimension. Elle s’ecrit alors sous la forme matricielle :

[X] = [Φ][x][Φ]t

1. La propriete utilisee dans la fonction dct2.m est que l’on applique deux DCT unidimen-sionnelle, une suivant les lignes, puis suivant les colonnes.

6

2. Dans la fonction dct8.m, on retrouve le principe de calcul de la DCT unidimensionnelcas impair. C’est a dire que si la fonction rem retourne 1 (cas impair,n/2 non entier), ondouble le nombre d’echantillons pour avoir n pair. On a la matrice originale de 1 a N etla matrice flippee (inversee) de N+1 a 2N.

3. La fonction dct ne fait le calcul que suivant les colonnes, il faut utiliser la fonction dct2.

4. Application de DCT sur le blc sampl1.mat, tracage de mesh 3D du bloc original, ainsique du signal transformee :

On remarque que l’image ne contient principalement que des basses frequences.

3.5 Description du noyau de la transformee bidimensionnelle

On veut retrouver la matrice de transformation (ou noyau)Φ sans calcul, en utilisant lafonction idct2 pour faire ressortir chaque vecteur en fonction de k, l . Pour trouver Φ(k, l), ilfaut que X(0, 0) = 1 et le reste soit a 0, puis que X(1, 0) = 1 et le reste a 0, et ainsi de suite...On rempli une matrice phi de 64 blocs de 8x8 pixels qui correspondent a chaque idct2(X(k, l)).On obtient :

7

4 Traitement de l’image par bloc

L’image est decoupees en blocs de tailles 8x8 pixels pour appliquer a chacun d’entre euxune DCT. L’instruction blkproc permet de decouper une images en plusieurs blocs de taille [MN] et d’appliquer une fonction a chacun de ces blocs, ici on utilisera la fonction dct2.

>> load sampl1.mat

>> x = sampl1;

>> imshow(x,gray(256))

>> y = blkproc(sampl1,[8 8],’dct2’);

>> imshow(y,gray(256))

Le resultat :

L’image etant tres uniforme dans les noirs, on observe des pics � blancs � pour les bassesfrequences de chaque bloc.

5 La quantification, clef de lma compression

La quantification est l’etape de l’algorithme de compression JPEG au cours de laquelle seproduit la majeure partie de la perte d’information (et donc de la qualite visuelle), mais c’estaussi celle qui permet de gagner le plus de place (contrairement a la DCT, qui ne compressepas). La DCT a retourne, pour chaque bloc, une matrice de 8x8 nombres (dans l’hypothese queles blocs de l’image font 8x8 pixels). La quantification consiste a diviser cette matrice par uneautre, appelee matrice de quantification, et qui contient 8x8 coefficients specifiquement choisispar le codeur. Le but est ici d’attenuer les hautes frequences, c’est-a-dire celles auxquelles l’œilhumain est tres peu sensible. Ces frequences ont des amplitudes faibles, et elles sont encore plusattenuees par la quantification ; certains coefficients sont meme souvent ramenes a 0.

5.1 Etude de la quantification

1. On charge la table de quantification matquant.mat

>> load matquant.mat

>> matquant

matquant =

16 11 10 16 24 40 51 61

12 12 14 19 26 58 60 55

14 13 16 24 40 57 69 56

8

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

Cette table attenue les hautes frequences d’un rapport 7 par rapport aux basses frequences.L’oeil etant moins sensible aux hautes frequences.

2. Il s’agit de charger une image(LENA.MAT), de lui appliquer toutes les etapes de lacompression (DCT, quantification directe, puis inverse, et DCT inverse. Les operationssont ecrites dans le fichier codec.m qui fait appel aux fonctions dct2.m, quantifdirecte.m,quantifinverse.m et idct2.m. On utilise la matrice de quantification matquant.mat. Cettematrice peut etre multipliee par un facteur c dans la ligne de commande pour visualiserles pertes dues aux arrondis entre quantification directe et quantification inverse.

Le programme dans le fichier codec.m :

load(’LENA.mat’);

I_dct = blkproc(LENA,[8 8],’dct2(x)’);

I_quant = blkproc(I_dct,[8 8],’round(x./P1)’,A);

I_q_inv = blkproc(I_quant,[8 8],’x.*P1’,A);

Ima = blkproc(I_q_inv,[8 8],’round(idct2(x))’);

d =LENA-Ima;

PSNR = 10* log10 ( 255^2/mse(d))

3. Le programme affiche l’image originale, l’image compressee/decompressee puis l’imaged’erreur qui est defini par la relation :

ε = 128 + 2(original − reconstruite)

On prend un facteur (8) multiplicateur de table de quantification tres important pourbien mettre en evidence le phenomene. On remarque sur l’image d’erreur que les erreursse trouvent surtout sur les contours, donc sur les petits transition, les details, qui sontfaits de hautes frequences. L’arrondi a plus d’influence sur les hautes frequences d’autantplus que les coefficients de la table sont reduits en hautes frequences.

4. Le psnr est donne par la formule :

PSNR = 10 log10

(d2

EQM

)9

Ou

EQM =1

mn

m−1∑i=0

n−1∑j=0

‖I0(i, j)− Ir(i, j)‖2

5. Lorsqu’on change le facteur de qualite on trouve les resultats suivants :

Facteur de qualite PSNR de LENA0.5 13.351 11.152 9.524 7.07

Rmq : Un bon psnr en image est de 30 a 40 dB, on l’obtient pour un facteurqualite de 0,01.

6. La courbe representant l’evolution de PSNR en dB en fonction du facteur de qualite Qpour les differentes images.

0

10

20

30

40

50

60

70

80

90

100

152025303540

Le code MATLAB est le suivant :

load(’bateau.mat’);

load(’MATQUANT.mat’);

dct=blkproc(double(bateau2),[8 8],@dct2);

qjpeg=zeros(1,99);

alpha=zeros(1,99);

PSNR=zeros(1,99);

for i=1:99

qjpeg(i)=i;

if (1<=qjpeg(i)<=50)

alpha(i)=50/qjpeg(i);

else

10

alpha(i)=2-(2*qjpeg(i))/100;

end

quant=blkproc(dct,[8 8],’round(x./P1)’,alpha(i)*Q);

%a la reception

Iquant=blkproc(quant,[8 8],’round(x.*P1)’,alpha(i)*Q);

Idct=blkproc(Iquant,[8 8],@idct2);

%PSNR

PSNR(i)=10*log10((255^2)/mse(double(bateau2)-Idct));

end

plot(qjpeg,PSNR)

11

6 Conclusion

Le format JPEG, tres couramment utilise pour le codage des images bitmap et des pho-tos, est un format de compression tres efficace. La perte de qualite d’image occasionnee parl’algorithme de compression peut etre maıtrisee car le taux de compression des fichiers .jpegest reglable. Le format JFIF, plus connu sous le nom de format JPEG, est complementaire desformats GIF et PNG pour la publication d’images sur le Web : il sauvegarde plus d’informationscouleur que le format GIF et permet de comprimer des photographies ou des images lourdes.

L’algorithme de compression provoque une perte d’information et peut donc entraıner uneperte de qualite visible quand on utilise un taux de compression eleve ou sur certains typesd’images. Ainsi, le format .jpeg convient bien aux photos mais pas aux images comportant peude couleurs ou aux figures geometriques (pour lesquelles le format GIF est plus adapte).

Le principal avantage de ce format est le taux de compression reglable qui permet a l’utili-sateur de trouver un compromis entre le taux de compression et la qualite de l’image.

12