Académique Documents
Professionnel Documents
Culture Documents
ENSA Khouribga
Réalisé par :
Yacine Abdessalam Encadrant :
AMKASSOU Pr. Imad F.Eddine FATANI
Omar BARMAKI
8 janvier 2014
Table des matières
1 Introduction 2
1.1 Traitement d’image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 La norme JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2 Préparation 3
6 Conclusion 12
1
1 Introduction
1.1 Traitement d’image
Le traitement d’images est une discipline de l’informatique et des mathématiques appliquées
qui étudie les images numériques et leurs transformations, dans le but d’améliorer leur qualité
ou d’en extraire de l’information. Il s’agit d’un sous-ensemble du traitement du signal dédié aux
images et aux données dérivées comme la vidéo (par opposition aux parties du traitement du
signal consacrées à d’autres types de données : son et autres signaux monodimensionnels notam-
ment), tout en opérant dans le domaine numérique (par opposition aux techniques analogiques
de traitement du signal, comme la photographie ou la télévision traditionnelles).
Dans le contexte de la vision artificielle, le traitement d’images se place après les étapes
d’acquisition et de numérisation, assurant les transformations d’images et la partie de calcul
permettant d’aller vers une interprétation des images traitées. Cette phase d’interprétation est
d’ailleurs de plus en plus intégrée dans le traitement d’images, en faisant appel notamment à
l’intelligence artificielle pour manipuler des connaissances, principalement sur les informations
dont on dispose à propos de ce que représentent les images traitées (connaissance du domaine).
Le traitement d’images commence à être étudié dans les années 1920 pour la transmis-
sion d’images par le câble sous-marin allant de New York à Londres. Harry G. Bartholomew
et Maynard D. McFarlane effectuent la première numérisation d’image avec compression de
données pour envoyer des fax de Londres à New York. Le temps de transfert passe ainsi de plus
d’une semaine à moins de trois heures. Il n’y a pas vraiment d’évolution par la suite jusqu’à la
période d’après-guerre1. Le traitement du signal prend de l’importance vers la fin de la Seconde
Guerre mondiale avec l’arrivée du radar. La prospection pétrolière participe aussi beaucoup au
développement des techniques de traitement du signal.
Le véritable essor du traitement d’images n’a lieu que dans les années 1960 quand les ordi-
nateurs commencent à être suffisamment puissants pour travailler sur des images. Peu après,
la redécouverte de la transformée de Fourier rapide (FFT) révolutionne le domaine, en ren-
dant possible les manipulations du contenu fréquentiel des signaux sur ordinateur. Cependant,
l’essentiel des recherches porte encore, à cette époque, sur l’amélioration des images et leur
compression.
2
Cet algorithme est très populaire, en particulier sur Internet où la compression d’un fichier
permet de réduire le coût en bande passante. Il est de plus possible d’enregistrer une image
dans le format JPEG avec la majeure partie des appareils photos numériques et téléphones
portables. Cependant, les pertes se produisant lors de la compression ”classique” font qu’il
est moins utilisé dans certains domaines comme l’imagerie médicale, où la restitution fidèle de
l’image initiale est plus importante.
2 Préparation
1. Le procssus de codage/décodage JPEG :
3
noyau est une exponentielle complexe et qui crée donc des coefficients complexes. On peut ce-
pendant exprimer la DCT en fonction de la DFT, qui est alors appliquée sur le signal symétrisé.
La variante la plus courante de la transformée en cosinus discret est la DCT type-II, souvent
simplement appelée la DCT . Son inverse, qui correspond au type-III est souvent simplement
appelée IDCT . Il existe quatre types de DCT , qui peuvent tous se mettre sous forme :
X
X[k] = x[n]Φkn (1)
n
où les fonctions de base Φkn sont définies à partir de fonctions cosinus. Dans le cadre de la
compression vidéo, on utilise la DCT de type II de la forme suivante :
1
r
2 k(n + )π
Φkn = ck cos
2 n, k = 0, 1, 2, ..., N − 1
(2)
N N
L’équation (1) définit une transformation matricielle Φ = [Φkn ], d’un vecteur temporel x[n]
en un vecteur de même longueur X[k]. Dans la suite du TP, on prendra N=8.
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 résultat
end
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 à 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
5
de prendre la partie réelle et la multiplier par Ck et racine(2/N).
Le code MATLAB :
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
N −1 N −1
2 XX πk 1 πl 1
x(n, m) = Ck Cl X(k, l)cos (n + ) cos (m + )
N k=0 l=0 N 2 l 2
1
avec : 0 ≤ n, m, k, l ≤ N − 1 et Ck = √ si k = 0, 1 sinon
2
Comme plusieurs transformées 2D, la DCT-II est séparable, ce qui implique qu’on peut
l’implémenter à partir de la DCT à une dimension. Elle s’écrit alors sous la forme matricielle :
[X] = [Φ][x][Φ]t
1. La propriété utilisée 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 unidimensionnel
cas impair. C’est à dire que si la fonction rem retourne 1 (cas impair,n/2 non entier), on
double le nombre d’échantillons pour avoir n pair. On a la matrice originale de 1 à N et
la matrice flippée (inversée) de N+1 à 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, ainsi
que du signal transformée :
7
4 Traitement de l’image par bloc
L’image est découpées en blocs de tailles 8x8 pixels pour appliquer à chacun d’entre eux
une DCT. L’instruction blkproc permet de découper une images en plusieurs blocs de taille [M
N] et d’appliquer une fonction à chacun de ces blocs, ici on utilisera la fonction dct2.
Le résultat :
L’image étant très uniforme dans les noirs, on observe des pics ≪ blancs ≫ pour les basses
fréquences de chaque bloc.
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 atténue les hautes fréquences d’un rapport 7 par rapport aux basses fréquences.
L’oeil étant moins sensible aux hautes fréquences.
2. Il s’agit de charger une image(LENA.MAT), de lui appliquer toutes les étapes de la
compression (DCT, quantification directe, puis inverse, et DCT inverse. Les opérations
sont écrites 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. Cette
matrice peut être multipliée par un facteur c dans la ligne de commande pour visualiser
les pertes dûes 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)’);
d =LENA-Ima;
9
Où
m−1 n−1
1 XX
EQM = kI0 (i, j) − Ir (i, j)k2
mn i=0 j=0
90
80
70
60
50
40
30
20
10
0
40 35 30 25 20 15
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);
%à la réception
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, très couramment utilisé pour le codage des images bitmap et des pho-
tos, est un format de compression très efficace. La perte de qualité d’image occasionnée par
l’algorithme de compression peut être maı̂trisée car le taux de compression des fichiers .jpeg
est réglable. Le format JFIF, plus connu sous le nom de format JPEG, est complémentaire des
formats GIF et PNG pour la publication d’images sur le Web : il sauvegarde plus d’informations
couleur 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 une
perte de qualité visible quand on utilise un taux de compression élevé ou sur certains types
d’images. Ainsi, le format .jpeg convient bien aux photos mais pas aux images comportant peu
de couleurs ou aux figures géométriques (pour lesquelles le format GIF est plus adapté).
Le principal avantage de ce format est le taux de compression réglable qui permet à l’utili-
sateur de trouver un compromis entre le taux de compression et la qualité de l’image.
12