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
|
% Traitement des images : bourgeonnements
close all;
im = 'anneau_aortique2.tif';
i = imread(im);
figure(1); imagesc(i); colormap(gray);
title('Image originale');
figure(2); hist(double(i(:)),128); title('Histogramme');
% Filtrage médian pour réduire le bruit
%i = medfilt2(i);
%% Détection de l'artère
seuil1=40;
ia = ones(size(i,1),size(i,2),'uint16');
ia(find(i>seuil1))=0;
figure(3); imagesc(ia); colormap(gray);
title('Détection des objets bruts par simple seuillage');
% Lissage des frontières et remplissage des trous
iac=bwmorph(ia,'fill');
iac=bwmorph(ia,'erode',4);
iac=bwmorph(iac,'dilate',4);
title('Filtrage de la forme des objets');
% Recherche des composants de l'image (objets)
L = bwlabel(iac,8);
rgb = label2rgb(L);
figure(4); imagesc(rgb);
% Contour de l'artère
[gy,gx]=gradient(double(iac));
ind=find(gx.^2+gy.^2>0);
y=rem(ind,size(iac,1)); x=fix(ind/size(iac,1));
figure(3); hold on; plot(x,y,'g.'); hold off
%figure(1);
%hold on; plot(x,y,'g.'); hold off
%pause;
% Suppression de l'artère et amélioration contraste
seuil2=200;
%Appliquer les mesures seulement à l'intérieur de l'image
iac2=iac(0.15*end:0.85*end,0.15*end:0.85*end); %iac2=centre de iac
i2=i(0.15*end:0.85*end,0.15*end:0.85*end);
A=find(iac2==1);
B=find(i2>seuil2);
%i2 = i;
i2(A)=seuil2; i2(B)=seuil2;
figure(5);imagesc(i2);colormap(gray);
i(0.15*end:0.85*end,0.15*end:0.85*end)=i2;
i3=i;
whos
i3(0.15*end:0.85*end,0.15*end:0.85*end)=i2;
figure(6);imagesc(i3);colormap(gray); |
Partager