Compte Rendu Mini Projet Traitement des Images
Partie I : Détection d’une cellule à l’aide de la segmentation d’images
%Affichage de l'image de base
Im1=imread('[Link]');
figure(1),imshow(Im1)
%Affichage de l'histogramme de
l'image de départ
figure(2),imhist(Im1) 1200
1000
800
600
400
200
0 50 100 150 200 250
Grâce à l’affichage de l’histogramme, nous pouvons choisir une valeur de seuil permettant de
binariser l’image afin de faire ressortir les objets du fond.
1
%réalisation seuillage en fonction
d'un niveau observé dans
l'histogramme
Im2 = im2bw(Im1,85/255);
Im3 = im2bw(Im1);
result=xor(~Im2,Im3);
figure(3),imshow(result)
On réalise une fermeture afin de fermer les objets.
%Réalisation d'une fermeture
FERM1=imdilate(result,strel('disk',6));
FERM2=imerode(FERM1,strel('disk',6));
figure(4), imshow(FERM2)
On vient faire une ouverture afin de supprimer les tâches blanches présentent sur le fond noir.
%Réalisation d'une Ouverture
ER=imerode(FERM2,strel('disk',1));
OUV=imdilate(ER,strel('disk',1));
figure(5), imshow(OUV)
On vient isoler la cellule qui nous intéresse en supprimant la cellule proche du bord.
2
%Nettoyage des bords de l'image
Im3 = imclearborder(OUV);
figure(6), imshow(Im3)
%récupération du périmètre
PERIMETRE = BWPERIM(Im3,8)
figure(7), imshow(PERIMETRE)
Ici on vient superposer l’image de départ avec le périmètre de la cellule voulue.
%Image finale
Im1(PERIMETRE)=255
figure(8), imshow(Im1)
3
Partie II : Segmentation de traits d’une image
On peut observer un bruit impulsionnel sur l’image, il faut donc appliquer un filtre non linéaire (Filtre
Médian)
%Lecture de l'image de base
Im1=imread('Image_MP2.jpg');
figure(1), imshow(Im1)
%Conversion de l'image en niveaux de
gris
Im2 = double(rgb2gray(Im1))/255;
figure(2), imshow(Im2)
%Application d'un filtre médian pour
enlever le bruit impulsionnel
MEDIAN=medfilt2(Im2);
figure(3),imshow(MEDIAN)
4
%Binarisation de l'image et
récupération du contour
[BW, S]=edge(MEDIAN,'canny');
Contour=edge(MEDIAN,'canny', 3*S,
2);
figure(4),imshow(Contour)
%Réalisation d'une fermeture
FERM1=imdilate(Contour,strel('diamon
d',10));
FERM2=imerode(FERM1,strel('diamond',
10));
figure(5), imshow(FERM2)
On ferme les trous qu’il nous reste dans l’image.
I=imfill(~FERM2,'holes');
figure(6), imshow(~I)