Adaptive Thresholding für die Lebersegmentierung mit Matlab

11

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);

Original Bild Nach der Segmentierung

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');
Gomathi
quelle
Ist es notwendig, adaptives Schwellenwertverfahren zu verwenden?
Vini
blogs.mathworks.com/steve/2006/06/02/cell-segmentation fand dies u konnte es ausprobieren
vini
Ja, ich muss nur adaptive Schwellenwerte verwenden. Wenn nicht, können Sie mir eine andere gute Segmentierungsmethode vorschlagen (außer Regionswachstum und FCM)?
Gomathi
www4.comp.polyu.edu.hk/~cslzhang/code.htm Ich fand, dass Sie den Code für K. Zhang, H. Song und L. Zhang, Muster „Aktive Konturen, angetrieben durch lokale Bildanpassungsenergie“, nachschlagen können Anerkennung, vol. 43, Ausgabe 4, S. 1199-1206, April 2010. Es funktionierte gut genug für dieses Bild
vini
Ich danke dir sehr. Ich habe die Ausgabe bekommen. Ich habe die Parameterwerte geändert und morphologische Operationen durchgeführt. Vielen Dank an alle.
Gomathi

Antworten:

6

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:
Geben Sie hier die Bildbeschreibung ein

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). Geben Sie hier die Bildbeschreibung ein

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?

Dipan Mehta
quelle
Ich danke dir sehr. Das war eine sehr informative Antwort, Sir.
Gomathi