Ich muss die Leber mithilfe des adaptiven Schwellenwerts aus einem abdominalen CT-Bild segmentieren. Aber ich bekomme den gesamten Vordergrund allein vom Hintergrund getrennt. Ich brauche nur den Leberteil des Vordergrunds getrennt. Überprüfen Sie die PDF-Datei unter http://www.ijcaonline.org/casct/number1/SPE34T.pdf. Ich benötige eine Ausgabe ähnlich der in Abbildung 6 gezeigten.
Ich füge hier meine Codierung hinzu. Bitte helfen Sie mir.
%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);
Mein geänderter Code für 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');
matlab
image-processing
computer-vision
Gomathi
quelle
quelle
Antworten:
Ich habe gesehen, dass der Link des Papiers (von SS Kumar), auf den Sie verwiesen haben, und der Link, über den Sie den Code (HIPR) erhalten haben, zwei verschiedene Algorithmen sind - obwohl beide wie Adaptive Thresholding klingen
Zuerst möchte ich Ihnen den Unterschied erklären.
Bei der HIPR-Methode ist eine allgemeine Annahme im Wesentlichen ein Bild auf 2 Klassenebenen - dh Vordergrund und Hintergrund. Bei jedem Schwellenwert für 2 Klassen werden 2 Peaks oder Bereiche innerhalb des Bildhistogramms erwartet, insbesondere Hintergrund vs. Vordergrund, Text vs. Weißbuch. Wenn Sie im Histogramm irgendwie einen optimalen Talpunkt gefunden haben, erhalten Sie die sauberste Unterteilung. So könnte das Histogramm aussehen:
Dieser Talpunkt kann sich jedoch lokal leicht verschieben. Dort finden Sie gute Beispiele für Beleuchtungsvarianten. Daher existiert dieser optimale Talpunkt überall, variiert jedoch räumlich geringfügig, sodass eine universelle Schwelle versagen würde. Daher wird der Talpunkt (Schwellenwert) für jede lokale Region berechnet.
Die Papiermethode von SS Kumar und insbesondere die Klasse der Bilder, mit denen Sie sich befassen, sind mehrere Klassen (mehrere Objekte mit jeweils unterschiedlichem Intensitätsband und unterschiedlicher Streuung). In diesen Fällen sind Histogramme multimodal, dh sie haben viele Spitzen und Täler, und vermutlich entspricht jede Spitze einem anderen Objekt, kann jedoch noch komplexer sein.
Das Histogramm könnte folgendermaßen aussehen: (Dies ist das gleiche Bild wie auf Papier).
In diesem Fall schlägt der oben genannte 2-Klassen-Ansatz einfach fehl, weil es kein gutes Tal gibt. Aus diesem Grund sieht Ihr erstes Bild, das Sie gepostet haben, rundum wie schwarz / weiße Punkte aus.
Die Bedeutung von Adaptive Thresholding bedeutet hier, dass Sie den richtigen Peak identifizieren müssen und das Graustufenband, das die meisten Intensitäten des Hebels abdeckt, und andere Objekte in starken Kontrasten stehen, die dies zulassen
Was sollte man tun?
Wenn die Verwendung der adaptiven Schwellenwertbildung obligatorisch ist, suchen Sie zunächst das Histogramm und sehen Sie, welcher Intensitätsbereich und dann für einen Schwellenwert von links oder rechts die Intensitätsgrenzen sind, welche Pixel verworfen werden sollen.
Alternativ können Sie den Algorithmus "Region Growing" oder "Split and Merge" verwenden. In dieser Frage finden Sie einige Informationen: Welche Segmentierungsmethoden können für einfache Bilder verwendet werden?
quelle