J'ai besoin de segmenter le foie à partir d'une image CT abdominale en utilisant le seuil adaptatif. Mais j'obtiens tout le premier plan séparé de l'arrière-plan seul. J'ai seulement besoin de séparer la partie hépatique du premier plan. Consultez le fichier pdf à http://www.ijcaonline.org/casct/number1/SPE34T.pdf J'ai besoin d'une sortie similaire à celle illustrée à la figure 6.
J'attache mon codage ici. Veuillez m'aider.
%testadaptivethresh.m
clear;close all;
im1=imread('nfliver2.jpg');
bwim1=adaptivethreshold(im1,11,0.03,0);
figure,imshow(im1);
figure,imshow(bwim1);
imwrite(bwim1,'at2.jpg');
function bw=adaptivethreshold(IM,ws,C,tm)
%ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the
%foreground from the background with nonuniform illumination.
% bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local
% threshold mean-C or median-C to the image IM.
% ws is the local window size.
% tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.
%
% Contributed by Guanglei Xiong ([email protected])
% at Tsinghua University, Beijing, China.
%
% For more information, please see
% http://homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm
if (nargin<3)
error('You must provide the image IM, the window size ws, and C.');
elseif (nargin==3)
tm=0;
elseif (tm~=0 && tm~=1)
error('tm must be 0 or 1.');
end
IM=mat2gray(IM);
if tm==0
mIM=imfilter(IM,fspecial('average',ws),'replicate');
else
mIM=medfilt2(IM,[ws ws]);
end
sIM=mIM-IM-C;
bw=im2bw(sIM,0);
bw=imcomplement(bw);
Mon code modifié pour testadaptivethresh.m
clear;
im=imread('nfliver7.gif');
figure,imshow(im)
bwim1=adaptivethreshold(im,300,-0.15,0);
bw=bwareaopen(bwim1,3000);
se=strel('diamond',4);
er=imerode(bw,se);
bw1=bwareaopen(er,3000);
er1=imerode(bw1,se);
bw2=bwareaopen(er1,1000);
fi=imfill(bw2,'holes');
figure,imshow(fi)
op=uint8(fi);
seg=im.*op;
figure,imshow(seg)
imwrite(seg,'sliver7.jpg');
Réponses:
J'ai vu le lien du document (de SS Kumar) que vous avez mentionné et le lien où vous avez obtenu le code (HIPR) sont deux algorithmes différents - même si les deux sons comme Adaptive Thresholding
J'aimerais d'abord vous faire la différence.
Dans la méthode HIPR, une hypothèse générale est essentiellement une image de niveau 2 - c'est-à-dire l'avant-plan et l'arrière-plan. Dans n'importe quel seuil de 2 classes, on s'attend à 2 pics ou régions dans l'histogramme d'image, en particulier l'arrière-plan par rapport au fond, le texte par rapport au papier blanc. Si vous en quelque sorte trouvé un point de la vallée optimale dans l'histogramme - vous obtenez plus propre division. Voici à quoi l'histogramme peut ressembler:
Cependant, ce point de vallée peut se déplacer légèrement autour du local. On y trouve de bons exemples de variations d'éclairage. Par conséquent, ce point de vallée optimal existe partout mais varie légèrement dans l'espace, donc un seuil universel échouerait. Par conséquent, le point de vallée (seuil) est calculé sur chaque région locale.
La méthode de l'article de SS Kumar et plus précisément la classe d'images que vous traitez est multi-classe (plusieurs objets ayant chacun une bande d'intensité et une répartition différentes). Dans ce cas, les histogrammes sont multimodaux, c'est-à-dire qu'ils comportent de nombreux pics et vallées et que chaque pic correspond probablement à un objet différent, mais il peut être encore plus complexe.
L'histogramme pourrait ressembler à ceci: (c'est la même image que dans le papier).
Dans ce cas, l'approche de classe 2 ci-dessus échouera simplement parce qu'il n'y a pas une seule bonne vallée. C'est pourquoi votre première image que vous avez publiée ressemble à des points noirs / blancs tout autour.
La signification du seuil adaptatif ici, implique que vous devez identifier le pic correct et que la bande d'échelle de gris qui couvre la plupart des intensités du levier et que d'autres objets sont en contraste frappant ce qui permet
Que devrais tu faire?
Tout d'abord, s'il est obligatoire d'utiliser le seuillage adaptatif, recherchez l'histogramme et voyez quelle plage d'intensité puis pour un seuil de gauche ou de droite sont les limites d'intensité dont les pixels doivent être jetés.
Vous pouvez également utiliser l'algorithme de croissance de région ou de fractionnement et de fusion. Référez-vous à cette question pour quelques informations: Quelles méthodes de segmentation peuvent être utilisées pour des images simples?
la source