Vous êtes sur la page 1sur 22

Introduction gnrale

Avec la parole, limage constitue lun des moyens les plus importants quutilise lhomme
pour communiquer avec autrui. Cest un moyen de communication universel dont la richesse
du contenu permet aux tres humains de tout ge et de toute culture de se comprendre.
Cest aussi le moyen le plus efficace pour communiquer, chacun peut analyser limage sa
manire, pour en dgager une impression et den extraire des informations prcises.
De ce fait, le traitement dimages est lensemble des mthodes et techniques oprant sur
celles-ci, dans le but de rendre cette opration possible, plus simple, plus efficace et plus
agrable, damliorer laspect visuel de limage et den extraire des informations juges
pertinentes.
Dans ce cadre sinscrit ce projet qui porte sur le dveloppement dune application permettant
dintgrer sous une seule interface graphique des outils de traitement et de manipulation
dimages. Cette application sera dveloppe sous Matlab laide du toolbox GUIDE .

Dfinition de limage :

1)

Limage est une reprsentation dune personne ou dun objet par la peinture, la sculpture, le
dessin, la photographie, le film, etc. Cest aussi un ensemble structur dinformations qui,
aprs affichage sur lcran, ont une signification pour lil humain.
Reprsentation des images numriques :
une image numrique est une matrice de pixels reprs par leur coordonnes (x,y).
S'il s'agit d'une image couleur, un pixel est cod par 3 composantes (r,g,b) (chacune comprise
au sens large entre 0 et 255), reprsentant respectivement les "doses" de rouge, vert et bleu
qui caractrisent la couleur du pixel. S'il s'agit d'une image en niveau de gris, il est cod par 1
composante comprise au sens large entre 0 et 255, reprsentant la luminosit du pixel.

Traitements dimage :

2)

Pour manipuler une image, on travaille sur un tableau d'entiers qui contient les composantes
de chaque pixel. Les traitements s'appliquent toujours aux images en niveau gris et parfois
aussi sur des images couleur. Nous allons distinguer plusieurs types de traitements dans ce
projet.

2.1) Changement de format de limage sous Matlab :


L'il humain possde des rcepteurs pour les trois couleurs primaire rouge, vert et
bleu. Ainsi, tous les espaces couleur ont trois dimensions. Il ya plusieurs espaces de couleurs
disponibles, les plus connus tant RVB (Rouge-Vert-Bleu), HSV (Hue-Saturation-Valeur) et
NTSC.

Conversion en intensit RGB :

Cette conversion est ralise en appliquant le script suivant:


I = imread('fleur.jpg');
I = double(I)/255.0;
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
J=rgb2ntsc(I);
figure(1);subplot(1,5,1);imshow(I);title('avant');
subplot(1,5,2);imshow(R);title('R');
subplot(1,5,3);imshow(G);title('G');
subplot(1,5,4);imshow(B);title('B');

La figure I-1 montre le rsultat de la conversion:

Figure I-1 : Rsultats de la conversion en RGB

Conversion de RGB vers NTSC

NTSC est l'espace de couleur utilis pour la diffusion de la tlvision aux tats-Unis, et le
seul espace entre les ci-dessus ceux qui sont mentionns qui ralise une sparation complte
entre la luminance et la chrominance de l'information. NTSC a cette proprit, car lorsquelle
a t introduite, il fallait sparer les informations utilises par les rcepteurs de tlvision
monochrome de celui supplmentaires utilises par les rcepteurs couleur. Les composantes
de l'espace colorimtrique NTSC sont Y (la composante de luminance), I (la composante
cyan-orange), et Q (la composante verte-mauve).
Le code Matlab qui suit permet de raliser cette conversion :
I = imread('fleur.jpg');
I = double(I)/255.0
R = I(:,:,1);
J=rgb2ntsc(I);
figure(1);subplot(1,2,1);imshow(I);title('avant traitement');
subplot(1,2,2);imshow(J);title('apres traitement');

Le rsultat est visualisable sur la figure I-2 :

Figure I-2 : Rsultats de la conversion en NTSC

Conversion avec la reprsentation HSV

HSV est un terme anglais qui signifie (hue, saturation, value) ou encore en franais TSV
(teinte, saturation, valeur).Il sagit dun espace colorimtrique, dfini en fonction de ses trois
composantes :
On code la teinte suivant l'angle qui lui correspond sur le cercle des couleurs (0 ou
360 : rouge ;60 : jaune ;120 : vert ;180 : cyan ;240 : bleu ;300 ). La saturation est
lintensit de la couleur et elle varie entre 0 et 100 %. Plus la saturation d'une couleur est
faible, plus l'image sera grise et plus elle apparaitra fade, il est courant de dfinir la
dsaturation comme l'inverse de la saturation. Enfin la valeur est la brillance de la
couleur et elle varie entre 0 et 100%. Plus la valeur d'une couleur est faible, plus la couleur est
sombre.
Le modle TSV a t cr en 1978 par Alvy Ray Smith. C'est une transformation nonlinaire de l'espace de couleur RVB, et peut tre utilis en progression colorique.
Le code suivant dvelopp sous Matlab permet de raliser cette reprsentation :
I = imread('fleur.jpg');
[x,map]=rgb2ind(I,128);
imview(x,map);
maphsv=rgb2hsv(map);
[H,S,V]=ind2rgb(x,maphsv);
figure(1);subplot(1,4,1);imshow(x,map);title('image couleur');
subplot(1,4,2);imshow(H);title('H');
subplot(1,4,3);imshow(S);title('S');
subplot(1,4,4);imshow(V);title('V');

On peut visualiser le rsultat sur la figure I-3:

Figure I-3 : Rsultats de la conversion en HSV

2.2) Filtrage dimages :


Pour amliorer la qualit visuelle de limage, on doit liminer les effets des bruits (parasites)
en lui faisant subir un traitement appel filtrage.
Le filtrage consiste modifier la distribution frquentielle des composantes dun signal selon
des spcifications donnes. Le systme linaire utilis est appel filtre numrique.
La section qui suit va exposer quelques codes permettant de raliser lopration de filtrage :

Rduction de bruit avec un filtre linaire :

Le filtrage de limage I par le filtre h est une image F dont les luminances sont donnes par :

F ( x, y) h(a, b) I ( x a, y b)
a ,b

Le code suivant permet de raliser le filtrage de limage :


I=imread('fleur.jpg'); //Lecture de limage
J=rgb2gray(I);
J=double(J)/255.0;
h=-ones(3,3); // Definition de h
h(2,2)=8;
F=filter2(h,J); // Filtrer F
//visualization des resultat
figure(2 );subplot(1,2,1);imshow(I);title('image originale');
subplot(1,2,2);imshow(F);title('image filtre');

On peut jouer sur lintensit du filtre et on peut remarquer que limage est plus nette lorsque
la valeur de lintensit est plus importante. Le rsultat est visualis sur la figure II-1

Figure II-1 : Filtrage linaire

Synthse dun filtre par chantillonnage de frquence


On a :

H ( w1 , w2 )

h(n1 , n2 )e j ( w1n1 w2n2 )

n1 , n2

Le principe consiste indiquer les valeurs souhaites de H(w1,w2) sur une grille (w1, w2) et
en dduire le filtre h(n1 ,n2).
Il est galement possible de raliser le filtrage dans le domaine frquentiel. Pour cela, on
multiplie la transforme de Fourier de limage par le conjugu de la rponse frquentielle du
filtre.
Soit I limage source, F limage filtre, h le filtre, et I, F, H, les transformes de Fourier. On a
donc

F ( x, y) ( g * I )( x, y) F (u, v) G(u, v) I (u, v)


ou g ( x, y) h( x, y) ou G( x, y) H * (u, v)

La transforme de Fourier discrte est donne par :

I (u, v) I ( x, y)e j 2 (ux/ N uy / M )


x, y

Le code correspondant est le suivant :


I=imread('fleur.jpg');
I1=fft2(I);
h= zeros(9,9);
h(4:6,4:6)=ones(3,3);
H1=fsamp2(h);
G = filter2(H1,I);
G1=ifft2(G);
figure(1);subplot(1,2,1);imshow(G1);title('frequentiel');
subplot(1,2,2);imshow (G);title('impulsionnel');

Rduction de bruit avec le filtre mdian :

Lorsquune image comporte des pixels aberrants (par exemple un seul pixel blanc au milieu
d'une zone noire ou des pixels isols rpartis alatoirement dans l'image qui dgradent la
qualit de l'image), on dit quelle est bruite .
Un simple lissage de l'image permet de rduire le bruit car l'effet des pixels aberrants est
amoindri grce au moyennage avec ses pixels voisins. Cependant, le lissage entrane une
rduction de piqu dans limage.
La

mthode

base

sur

le

filtre

mdian

ne

prsente

pas

cet

inconvnient.

Elle est particulirement adapte lorsque le bruit est constitu de points isols ou de lignes
fines. Cependant, elle n'est applicable qu'aux images en niveaux de gris, contrairement au
lissage.
Le code de ce filtrage est le suivant :

i=imread('fleur.jpg');
i=rgb2gray(i);
j=imnoise(i,'salt & pepper',0.02);
s= strel('disk',1);
k=imopen(j,s);
n=imclose(k,s);
f=imclose(j,s);
p=imopen(n,s);
figure(1);subplot(1,5,1);imshow(j);
subplot(1,5,2);imshow(k);
subplot(1,5,3);imshow(f);
subplot(1,5,4);imshow(n);
subplot(1,5,5);imshow(p);

La figure II-2 montre le rsultat:

Figure II-2 : les tapes de filtrage par filtre median

2.3) Dtection de contours :


Le but de la dtection de contours est de reprer les points d'une image numrique qui
correspondent un changement brutal de l'intensit lumineuse. La dtection des contours
d'une image rduit de manire significative la quantit de donnes et limine les informations
qu'on peut juger moins pertinentes, tout en prservant les proprits structurelles importantes
de l'image. Il existe un grand nombre de mthodes de dtection de l'image.
Dans ce qui suit quelques mthodes seront exposes :

filtre de Prewitt :

La matrice qui correspond au filtrage horizontal, faisant ressortir essentiellement les contours
verticaux, selon l'oprateur de Prewitt, s'crit hx = [-1 0 1] tandis que la matrice verticale
hy est sa transpose. Les deux convolutions avec le tableau de valeurs initiales crent deux
tableaux Gxet Gy l'origine du tableau G sur lequel on peut localiser les maximums.
Afin de raliser ce filtre sous Matlab on applique le code suivant :
I=imread('fleur.jpg');
J=rgb2gray (I);
J=double(J)/255.0;
seuil=0.8;

H=fspecial('prewitt');
V=-H';
Gh=filter2(H,J);
Gv=filter2(V,J);
G=sqrt(Gh.*Gh + Gv.*Gv);
Gs=(G>seuil);
figure(1);imshow(Gh);
figure(2);imshow(Gv);
figure(3);imshow(G);
figure(4);imshow(Gs);

On visualise le rsultat sur la figure III-1 :

Figure III-1 : Application du filtre de Prewitt

le filtre de Sobel :

Le principe de ce filtre est que l'oprateur calcule le gradient de l'intensit de chaque pixel.
Ceci indique la direction de la plus forte variation du clair au sombre, ainsi que le taux de
changement dans cette direction. On connat alors les points de changement soudain de
luminosit, correspondant probablement des bords, ainsi que l'orientation de ces bords.
L'oprateur utilise des matrices de convolution. La matrice (gnralement de taille 33) subit
une convolution avec l'image pour calculer des approximations des drives horizontale et
verticale. Soit

l'image source,

et

deux images qui en chaque point contiennent

des approximations respectivement de la drive horizontale et verticale de chaque point. Ces


images sont calcules comme suit:

En chaque point, les approximations des gradients horizontaux et verticaux peuvent tre
combines comme suit pour obtenir une approximation de la norme du gradient:

On implmente alors le script suivant :


I=imread('fleur.jpg');
J=rgb2gray (I);
J=double(J)/255.0;
seuil=0.8;
H=fspecial('sobel');
V=-H';
Gh=filter2(H,J);
Gv=filter2(V,J);
G=sqrt(Gh.*Gh + Gv.*Gv);
Gs1=(G>seuil*4/3);
figure(1);imshow(Gh);
figure(2);imshow(Gv);
figure(3);imshow(G);
figure(4);imshow(Gs1);

La figure III-2 montre le rsultat suivant :

Figure III-2 : Application du filtre de Sobel

filtre de robert :

Les filtres de Roberts sont une approche discrte de la drive de pas 1 d'une fonction: le
gradient de cette fonction.
Si I(x,y) reprsente un pixel dans une image, alors les amplitudes des gradients en x et en y
peuvent s'crire respectivement:
Gx = I(x+1,y) - I(x,y),
Gy = I(x,y+1) - I(x,y).
Cela revient a convoluer l'image avec les deux filtres Rx = [-1 1] et Ry = transpose ([-1 1]).
L'amplitude du gradient peut tre alors calcule de plusieurs faons:
G1(x,y) = sqrt(Gx^2 + Gy^2),
G2(x,y)= max(abs(Gx),abs(Gy))
ou G3(x,y) = abs(Gx) + abs(Gy).
Et la direction du gradient est donnee par:
D(x,y) = Arctan(Gy/Gx).
Or le bruit peut aussi tre une brusque variation locale des niveaux de gris : ces filtres sont
donc trs sensibles au bruit car ils accentuent, par drivation, le bruit prsent dans l'image. De
plus, ces filtres donneront un contour pais si celui-ci est un contour de type "rampe".
Le code utilis est le suivant :
I=imread('fleur.jpg);
J=rgb2gray (I);
J=double(J)/255.0;
seuil=0.8;
a=[1 0;0 -1];
b=[0 1;-1 0];
Ga=filter2(a,J);
Gb=filter2(b,J);
G=sqrt(Ga.*Ga + Gb.*Gb);
Gs1=(G>seuil*1/3);
figure(1);imshow(Ga);
figure(2);imshow(Gb);
figure(3);imshow(G);
figure(4);imshow(Gs1);

La figure III-3 montre les rsultats de dtection de contours avec ce filtre :

Figure III-3 : Application du filtre de Robert

2.4)

Rduction de bruit par un filtre morphologique

En morphologie mathmatique, filtrer, cest conserver limage en supprimant certaines


structures gomtriques (en gnral implicitement dfinies par un ou plusieurs lments
structurants).
Le filtre morphologique simplifie limage en lui prservant la structure, mais il perd en
gnral de linformation. Le filtre morphologique est stable et possde une classe dinvariance
connue.
Le code correspondant ce filtre est le suivant :

h=imread ('fleur.jpg');
s= strel('square',15) ;
i=imerode(h,s);
j=imdilate(h,s);
figure(1); subplot(1,3,1); imshow(h);
subplot(1,3,2); imshow(i);
subplot(1,3,3); imshow(j);

On visualise la figure IV-1

Figure IV-1 : application du filtre morphologique

2.5) Ligne de partage des eaux :


Dans cette section on va essayer dappliquer un algorithme de ligne de partage des eaux
limage dorigine.
En traitement d'images, la segmentation par ligne de partage des eaux (ou watershed en
anglais) dsigne une famille de mthodes de segmentation d'image issues de la morphologie
mathmatique qui considrent une image niveaux de gris comme un relief topographique,
dont on simule linondation.

Dfinitions :

minimum local : cest le point ou plateau do on ne peut pas atteindre un point plus
bas sans tre oblig de remonter.

bassin versant : cest la zone dinfluence dun minimum local. Une goutte deau
scoulant dans le bassin versant arrive au minimum local

ligne de partage des eaux : Cest la ligne sparant 2 bassins versants (de cette ligne,
une goutte deau peut scouler vers au moins 2 minima locaux distincts

Principe :

Technique de limmersion
-

On perce chaque minimum local de la surface.

On inonde la surface partir des minima locaux, leau montant vitesse constante et
uniforme dans les bassins versants.

Quand les eaux issues de 2 minima diffrents se rencontrent, on monte une digue pour
quelles ne se mlangent pas.

A la fin de limmersion, lensemble des digues constituent la ligne de partage des eaux

Algorithme :

On commence par gnrer limage du

module du gradient c'est--dire les crtes

correspondantes aux contours :


rgb = imread('fleur.jpg');
I = rgb2gray(rgb);
hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');
Ix = imfilter(double(I), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
figure, imshow(gradmag,[]), title('Module du gradient')

On obtient alors la figure suivante:

Figure V-1 : Module du gradient

Puis on procde une valuation de la dtection de contours par la LPE et cela en dtectant
les contours ferms et faisant de la sur-segmentation :
L = watershed(gradmag);
Lrgb = label2rgb(L);
figure, imshow(Lrgb), title('Rgions dtectes par la LPE');

Figure V-2 : Rgions dtectes par la LPE : sur-segmentation

Lapplication dune dilatation et dune rosion nous servent dtecter les maximas rgionaux
dans limage :

se = strel('disk', 20);
Io = imopen(I, se);
figure, imshow(Io), title('ouverture')
Ie = imerode(I, se);
Iobr = imreconstruct(Ie, I);
figure, imshow(Iobr), title('Ouverture par reconstruction(erosion)')
Ioc = imclose(Io, se);
figure, imshow(Ioc), title('Ouverture-Fermeture')
Iobrd = imdilate(Iobr, se);
Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));
Iobrcbr = imcomplement(Iobrcbr);
figure, imshow(Iobrcbr), title('Ouverture-Fermeture par reconstruction
(dilatation)')
fgm = imregionalmax(Iobrcbr);
figure, imshow(fgm), title('les maxima rgionaux')

Figure V-3 : Les maxima rgionaux

On procde ensuite la superposition des maximas rgionaux sur limage dorigine puis on
refait les mmes oprations de dilatation et drosion. Ces diffrentes oprations nous
permettent de dtection les rgions dans limage et on les spare en utilisant des lignes
appeles des lignes de partage des eaux.

I2 = I;
I2(fgm) = 255;
figure, imshow(I2), title(' maxima regional superpos sur l''image
d''origine')
se2 = strel(ones(5,5));
fgm2 = imclose(fgm, se2);
fgm3 = imerode(fgm2, se2);
fgm4 = bwareaopen(fgm3, 20);
I3 = I;
I3(fgm4) = 255;
figure, imshow(I3)
title('maxima regional modifi superpos sur l''image d''origine')
bw = im2bw(Iobrcbr, graythresh(Iobrcbr));
figure, imshow(bw), title('Ouverture-Fermeture par reconstruction
Seuille')
D = bwdist(bw);
DL = watershed(D);
bgm = DL == 0;
figure, imshow(bgm), title('Lignes de partage des eaux')

Figure V-4 : Lignes de partage des eaux

On sintresse prsent ce quon appelle marqueurs qui existent dans les objets recherchs
dans limages qui sont dans notre cas les bords de limage
gradmag2 = imimposemin(gradmag, bgm | fgm4);
L = watershed(gradmag2);
I4 = I;
I4(imdilate(L == 0, ones(3, 3)) | bgm | fgm4) = 255;
figure, imshow(I4)
title('marqueurs et contours superposs sur l''image d''origine')

Figure V-5 : Superposition des marqueurs et lignes de partages sur limage

On obtient enfin la matrice correspondante lapplication de ces contours et marqueurs et qui


nous dfinisse les diffrentes rgions de limage comme si il sagissait dune carte
topographique :
Lrgb = label2rgb(L, 'jet', 'w', 'shuffle');
figure, imshow(Lrgb)
title('matrice des lignes de partages des eaux colore')
figure, imshow(I), hold on
himage = imshow(Lrgb);
set(himage, 'AlphaData', 0.3);
title('superposition transparente sur l''image d''origine');

Figure V-6 : Matrice colore des rgions applique sur limage dorigine

3) Ralisation dune interface graphique sous la boite outil


GUIDE de Matlab :
3.1) Pourquoi a-t-on choisi Matlab ?
MATLAB permet le travail interactif soit en mode commande, soit en mode programmation,
tout en ayant toujours la possibilit de faire des visualisations graphiques. Il possde les
particularits suivantes :
-

Puissance de calcul

la continuit parmi les valeurs entires, relles et complexes

ltendue de gamme des nombres et leurs prcisions

la comprhension de la bibliothque mathmatique

linclusion des fonctions dinterface graphique et des utilitaires dans

loutil graphique
-

La possibilit de liaison avec les autres langages classiques de

programmations
Pour linterface graphique, des reprsentations scientifiques et mme artistiques des objets
peuvent tre cres sur lcran en utilisant les expressions mathmatiques ou bien directement
en utilisant un outil graphique. En effet, pour la conception de notre simulateur nous avons
choisi la boite outil GUIDE sous MATLAB.

3.2 Prsentation de la boite outil GUIDE :


GUIDE ou Graphical User Interface Developpement Environnement est un outil graphique
sous MATLAB qui fournit un ensemble d'outils pour crer des interfaces graphiques de faon
intuitive. Lutilisateur dispose de plusieurs outils graphiques prdfinis comme les boutons,
les menus qui lui permettent de crer une interface graphique qui communique avec un
programme informatique.

3.3 Prsentation de lapplication :


La page daccueil de loutil est la suivante :

Figure VI-1 : Page daccueil de lapplication

Le Bouton a propos donne des informations sur le projet :

Figure VI-6 : Informations sur le projet

En excutant le bouton entrer depuis le menu de dmarrage linterface suivante apparat :

2
1

La zone 1) offre plusieurs outils pour effectuer lopration de filtrage sur une image.
La zone 2) sintresse au changement du format dimage.
La zone 3) offre la possibilit dutiliser plusieurs filtres pour effectuer la dtection de contours
de limage concerne.
En appuyant sur le bouton plus dapplication , une autre fentre souvre nous offrant la
possibilit soit dappliquer un filtre morphologique soit de dapplique lalgorithme de lignes
de partage des eaux.

Figure VI-3 : fentre permettant dappliquer des algorithmes de traitement dimages

Conclusion

La reprsentation des images fixes est un des lments essentiels des applications
multimdias, comme dans la plupart des systmes de communication.
La manipulation des images pose cependant des problmes beaucoup plus complexes que
celle du texte. En effet, limage est un objet deux dimensions, cens reprsenter un espace
trois dimensions, ce qui a deux consquences majeures puisque le volume des donnes
traiter est beaucoup plus important et la structure de ces donnes est nettement plus complexe.
Il en rsulte que la manipulation, le stockage et la reprsentation de ces donnes se heurtent
certaines limitations.
Grce au traitement dimage, ces contraintes sont leves ou contournes. En effet, ce domaine
cherche dtecter la prsence de certaines formes, certains contours ou certaines textures
dun modle connu, cest le problme de la dtection.
Un autre aspect de traitement dimage concerne lanalyse et la comprhension de limage
dans le but den extraire des informations utiles. Il cherche aussi parfois comprimer limage,
afin de gagner en vitesse lors de la transmission de linformation, et en capacit de stockage,
tout en dgradant le moins possible les images considres.
Durant ce projet, jai eu loccasion de se rapprocher du monde de traitement dimages en
concevant un outil graphique qui peut tre utilis comme un laboratoire de traitement
dimages et cela en offrant la possibilit deffectuer des oprations de filtrage, de dtections
de contours et en mettant en place un programme qui permet de dtecter toutes les rgions
de limage en se basant sur le principe des lignes de partage des eaux.

Vous aimerez peut-être aussi