1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| clc
%charger une image dcm
IM = fileparts(mfilename('fullpath'));
[filename,pathname]=uigetfile({'*.*','All Files' },'Choisir le fichier dicom ');
%lire fichier dicom
[A,map]= dicomread(strcat(pathname,filename));
% %ajuster les couleurs
I=imadjust(A);
figure,imshow(I)
%convertion en double precision
I=double(I)/255;
%getpts permet de choisir un ensemble de points sur l'image a laide de la souris.
%Coordonnées des points sélectionnés sont retournés dans X et Y
[y,x]=getpts;
%arrondit a un entier
y1=round(x);
x1=round(y);
%taille de l'image
[M,N]=size(I);
stack=[y1,x1];
suit=1;
%matrice de zeros de M*N
Y=zeros(M,N);
Y(y1,x1)=1;
count=1;
threshold=0.05555;
sum=I(y1,x1);
adaptM=stack(1,1);
adaptN=stack(1,2);
greyvalue=I(adaptM,adaptN);
while suit>0
adaptM=stack(1,1);
adaptN=stack(1,2);
for u=-1:1
for v=-1:1
if adaptM+u<(M+1) && adaptN+u>0 && adaptN+v<(N+1) && adaptN+v>0
if abs(I(adaptM+u,adaptN+v)-greyvalue)<=threshold && Y(adaptM+u,adaptN+v)==0
suit=suit+1;
stack(suit,1)=(adaptM+u);
stack(suit,2)=(adaptN+v);
Y(adaptM+u,adaptN+v)=1;
count=count+1;
sum=sum+I(adaptM+u,adaptN+v);
end
end
end
end
greyvalue=sum/count;
stack=stack(2:1:suit,:);
suit=suit-1;
end
figure,imshow(Y) |
Partager