34 1 612KB
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('cell.tif'); 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 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)
5