Ministère de l’Enseignement Supérieur et de la Recherche
Scientifique
Ecole Nationale d’Electronique et des Télécommunications de Sfax
TP2 :
Outils pratiques et restauration des
images
Elaboré par :
ABDALLAH AYA
Encadré par :
MR. AMRI HEDI
Classe :
2 GII 1
Année universitaire : 2022/2023
ENET’COM Traitement d’images 2ème Année GII 1
Un histogramme est un graphique statistique permettant de représenter la
distribution des intensités des pixels d'une image, c'est-à-dire le nombre de
pixels pour chaque intensité lumineuse. Par convention un histogramme
représente le niveau d'intensité en abscisse en allant du plus foncé (à gauche)
au plus clair (à droite).
Ainsi, l'histogramme d'une image en 256 niveaux de gris sera représenté par un
graphique possédant 256 valeurs en abscisses, et le nombre de pixels de
l'image en ordonnées.
Exercice n=°1 :
1ère chose à faire :
clear all;
clc;
close all;
1) Lire l’image photo00.bmp et
l’afficher :
Im=imread('photo00.bmp'); //lire l’image
figure, imshow(Im) // afficher la photo
Résultat :
ENET’COM Traitement d’images 2ème Année GII 1
2) Nous avons afficher la valeur du pixel (47,1) puis
celle du pixel (11,256) de l’image Im :
x = Im(47,1); // x prend la valeur du pixel (47,1)
y = Im(11,256); // y prend la valeur du pixel
(11,256)
Résultat :
250
200
150
100
50
0
0 50 100 150 200 250 300
200
180
160
140
120
100
80
60
40
20
0
0 50 100 150 200 250 300
ENET’COM Traitement d’images 2ème Année GII 1
3) Nous avons affiché la ligne 4 et
la colonne 4 de l’image Im :
l = Im(4, :);
c = Im(:, 4);
4) Le profil de la ligne 4 et la
colonne 4 de l’image Im :
figure,
plot (Im(4, :))
figure,
plot (Im(:, 4))
5) Voici le scanning de l’image Im
selon le pixel (47,1) :
[nl nc]=size(Im);
Val= Im(47,1)
for i=1:nl
for j=1:nc
if (Im(i,j)==Val)
ImScan(i,j)=1;
else
ImScan(i,j)=0 ;
end
end
end
figure,
imshow(ImScan)
ENET’COM Traitement d’images 2ème Année GII 1
Voici le scanning de l’image Im selon
le pixel (11,256) :
[nl nc]=size(Im);
Val= Im(11,256)
ImgScan2=zeros(nl,nc);
F(:,:)=find(Im==Val);
ImgScan2 (F)=1;
figure,
imshow(ImgScan2)
6+7) Nous avons ici afficher les 4
histogrammes de l’image Im : 1)
Histogramme, 2) Histogramme cumulé,
3) Histogramme normalisé, 4)
Histogramme cumulé normalisé :
h = imhist(Im); // Histogramme
hc = cumsum(h); // Histogramme cumulé
hn = h/(nl * nc); // Histogramme normalisé
hnc= hc/(nl * nc); // Histogramme cumulé normalisé
figure,
subplot(3,2,1:2),imshow(Im), title('Im')
subplot(3,2,3),stem(0: 255, h),title('Him')
subplot(3,2,4),stem(0: 255, hc), title('Himc')
ENET’COM Traitement d’images 2ème Année GII 1
subplot(3,2,5),stem(0: 255, hn),title('Himn')
subplot(3,2,6),stem(0: 255, hnc), title('Himnc')
Résultat :
Im
4
Him x 10 Himc
1000 10
500 5
0 0
0 100 200 300 0 100 200 300
Himn Himnc
0.02 1
0.01 0.5
0 0
0 100 200 300 0 100 200 300
7)
col=imread('col01.jpg'); // Lire l’image ‘col01.jpg’
figure, imshow(col)
ENET’COM Traitement d’images 2ème Année GII 1
R = col(:, :, 1); //Rouge
V = col(:, :, 2); //Vert
B = col(:, :, 3); //Bleu
Hr = imhist(R); //L’histogramme de Rouge
Hv = imhist(V); //L’histogramme de Vert
Hb = imhist(B); //L’histogramme de Bleu
figure,
subplot(3,3,4), stem(Hr, 'r'), title('Hr')
subplot(3,3,5), stem(Hv, 'g'), title('Hv')
subplot(3,3,6), stem(Hb, 'b'), title('Hb')
subplot(3,3,8), stem(Hb, 'b'), hold on ,stem(Hv,
'g'), hold on, stem(Hr, 'r'), title('Hcol')
subplot(3,3,2), imshow(col), title('col')
Résultat :
col
Hr Hv Hb
10000 2000 10000
5000 1000 5000
0 0 0
0 200 400 0 200 400 0 200 400
Hcol
10000
5000
0
0 200 400
ENET’COM Traitement d’images 2ème Année GII 1
9)
P1=imread('photo00.bmp'); //Lire l’image‘photo00.bmp’
figure, imshow(P1)
P2=imread('photo01.bmp'); //Lire l’image‘photo01.bmp’
figure, imshow(P2)
P3=imread('photo02.bmp'); //Lire l’image‘photo02.bmp’
figure, imshow(P3)
Résultat : Voici l’affichage de trois images
respectivement P1, P2 et P3 :
ENET’COM Traitement d’images 2ème Année GII 1
ENET’COM Traitement d’images 2ème Année GII 1
L1 = mean2(double(P1)); //La luminance de l’image
‘photo00.bmp’
L2 = mean2(double(P2)); //La luminance de l’image
‘photo01.bmp’
L3 = mean2(double(P3)); //La luminance de l’image
‘photo02.bmp’
C1 = sqrt(sum(sum((double(P1) - L1).^2))/(nc * nc));
//La Contraste de l’image ‘photo00.bmp’
C2 = sqrt(sum(sum((double(P2) - L2).^2))/(nc * nc));
//La Contraste de l’image ‘photo00.bmp’
C3 = sqrt(sum(sum((double(P3) - L3).^2))/(nc * nc));
//La Contraste de l’image ‘photo00.bmp’
Hp1 = imhist(P1); //L’histogramme de P1
Hp2 = imhist(P2); //L’histogramme de P2
Hp3 = imhist(P3); //L’histogramme de P3
figure,
subplot(3,2,1), imshow(P1), title('Im')
subplot(3,2,2), stem(0: 255, Hp1), title ( [ 'L = '
, num2str(L1), ' C = ' , num2str(C1) ] )
subplot(3,2,3), imshow(P2), title('Him')
subplot(3,2,4), stem(0: 255, Hp2), title ( [ 'L = '
, num2str(L2), ' C = ' , num2str(C2) ] )
subplot(3,2,5), imshow(P3), title('Himn')
subplot(3,2,6), stem(0: 255, Hp3), title ( [ 'L = '
, num2str(L3), ' C = ' , num2str(C3) ] )
ENET’COM Traitement d’images 2ème Année GII 1
Résultat : Voici le résultat obtenu avec la calcul de la
luminance et la contraste de chaque image P1, P2 et P3 :
Im L = 127.4545 C = 65.5852
1000
500
0
0 100 200 300
Him L = 63.9774 C = 32.8023
2000
1000
0
0 100 200 300
4
Himn L= 213.3794 C = 49.9482
x 10
4
0
0 100 200 300
ENET’COM Traitement d’images 2ème Année GII 1
Exercice n=°2 :
La 1ère chose à faire :
clear all;
clc;
close all;
1) Nous avons ici créé et afficher la matrice M qui
affecté à la variable M :
M = [20 150 150 50;
100 20 50 30;
200 50 20 30;
200 200 60 60]
M1 = imadjust(uint8(M))
2)
3) Ici on a fait l’égalisation de
l’histogramme sur 2 ,3,4,5 raies pour
la matrice M.
M2 = histeq(uint8(M), 2) // l’égalisation de
l’histogramme sur 2 raies pour la matrice M.
M3 = histeq(uint8(M), 3) // l’égalisation de
l’histogramme sur 3 raies pour la matrice M.
ENET’COM Traitement d’images 2ème Année GII 1
M4 = histeq(uint8(M), 4) // l’égalisation de
l’histogramme sur 4 raies pour la matrice M.
M5 = histeq(uint8(M), 5) // l’égalisation de
l’histogramme sur 5 raies pour la matrice M.
Résultat :
ENET’COM Traitement d’images 2ème Année GII 1
8) Ici ona lire et afficher les deux images
'image1.bmp' et 'image2.bmp' :
clear all;
clc;
close all;
Im=imread('image1.bmp'); // Lire l’image 'image1.bmp'
figure, imshow(Im) //L’afficher
ImG=imread('image2.bmp'); //Lire l’image 'image2.bmp'
figure, imshow(ImG) //L’afficher
ENET’COM Traitement d’images 2ème Année GII 1
10)
Im4 = histeq(Im,4); // l’égalisation de l’histogramme
sur 4 raies pour l’image Im.
Im8 = histeq(Im,8); // l’égalisation de l’histogramme
sur 8 raies pour l’image Im.
Im16 = histeq(Im,16); // l’égalisation de
l’histogramme sur 16 raies pour l’image Im.
H = imhist(Im); //L’histogramme de Im
H4 = imhist(Im4); //L’histogramme de Im4
H8 = imhist(Im8); //L’histogramme de Im8
H16 = imhist(Im16); //L’histogramme de Im16
figure,
subplot(4,2,1), imshow(Im), title('Im')
subplot(4,2,2), stem(0: 255, H), title('Him')
subplot(4,2,3), imshow(Im4), title('Im4')
subplot(4,2,4), stem(0: 255, H4), title('H4')
subplot(4,2,5), imshow(Im8), title('Im8')
subplot(4,2,6), stem(0: 255, H8), title('H8')
subplot(4,2,7), imshow(Im16), title('Im16')
subplot(4,2,8), stem(0: 255, H16), title('H16')
Résultat : Voici l’affichage de ces dernières :
Im Him
10000
5000
0
0 100 200 300
4
Im4 x 10 H4
2
1
0
0 100 200 300
Im8 H8
10000
5000
0
0 100 200 300
Im16 H16
10000
5000
0
0 100 200 300
ENET’COM Traitement d’images 2ème Année GII 1
On répète la même chose pour l’image en niveau de gris
ImG :
ImG4 = histeq(ImG,4); // l’égalisation de
l’histogramme sur 4 raies pour l’image ImG.
ImG8 = histeq(ImG,8); // l’égalisation de
l’histogramme sur 8 raies pour l’image ImG.
ImG16 = histeq(ImG,16); // l’égalisation de
l’histogramme sur 16 raies pour l’image ImG.
Hg = imhist(ImG); //L’histogramme de ImG
Hg4 = imhist(ImG4); //L’histogramme de ImG4
Hg8 = imhist(ImG8); //L’histogramme de ImG8
Hg16 = imhist(ImG16); //L’histogramme de ImG16
figure,
subplot(4,2,1), imshow(ImG), title('ImG')
subplot(4,2,2), stem(0: 255, Hg), title('HImG')
subplot(4,2,3), imshow(ImG4), title('ImG4')
subplot(4,2,4), stem(0: 255, Hg4), title('H4')
subplot(4,2,5), imshow(ImG8), title('ImG8')
subplot(4,2,6), stem(0: 255, Hg8), title('H8')
subplot(4,2,7), imshow(ImG16), title('ImG16')
subplot(4,2,8), stem(0: 255, Hg16), title('H16')
Résultat : Voici l’affichage pour l’image ImG :
ENET’COM Traitement d’images 2ème Année GII 1
4
ImG x 10 HImG
2
1
0
0 100 200 300
4
ImG4 x 10 H4
5
0
0 100 200 300
4
ImG8 x 10 H8
4
2
0
0 100 200 300
4
ImG16 x 10 H16
2
1
0
0 100 200 300
11) Ici on a affiché l’image Im, son
histogramme, l’image étirée,
l’histogramme de l’image étirée,
l’image égalisée (R=16) et son
histogramme dans une même figure :
Ima = imadjust(Im);
Ha = imhist(Ima);
figure,
subplot(4,2,1), imshow(Im), title('Im')
subplot(4,2,2), stem(0: 255, H), title('Him')
subplot(4,2,5), imshow(Ima), title('Im Etirement')
subplot(4,2,6), stem(0: 255, Ha), title('H4
etirement')
subplot(4,2,3), imshow(Im16), title('Im16
Egalisation')
subplot(4,2,4), stem(0: 255, H16), title('H16
Egalisation')
ENET’COM Traitement d’images 2ème Année GII 1
Résultat : Voici le résultat pour Im
Im Him
8000
6000
4000
2000
0
0 50 100 150 200 250 300
Im16 Egalisation H16 Egalisation
8000
6000
4000
2000
0
0 50 100 150 200 250 300
Im Etirement H4 etirement
8000
6000
4000
2000
0
0 50 100 150 200 250 300
On applique même chose sur l’image ImG :
ImGa = imadjust(ImG);
Hga = imhist(ImGa);
figure,
subplot(4,2,1), imshow(ImG), title('ImG')
subplot(4,2,2), stem(0: 255, Hg), title('Hgim')
subplot(4,2,5), imshow(ImGa), title('ImG Etirement')
subplot(4,2,6), stem(0: 255, Hga), title('Hg4
etirement')
subplot(4,2,3), imshow(ImG16), title('ImG16
Egalisation')
subplot(4,2,4), stem(0: 255, Hg16), title('Hg16
Egalisation')
ENET’COM Traitement d’images 2ème Année GII 1
Résultat : Voici le résultat pour l’image ImG :
ImG Hgim
15000
10000
5000
0
0 50 100 150 200 250 300
ImG16 Egalisation 4 Hg16 Egalisation
x 10
2
1.5
0.5
0
0 50 100 150 200 250 300
ImG Etirement 4 Hg4 etirement
x 10
2
1.5
0.5
0
0 50 100 150 200 250 300