Adaptacyjne wartości progowe dla segmentacji wątroby za pomocą Matlaba

11

Muszę segmentować wątrobę z obrazu TK jamy brzusznej za pomocą progu adaptacyjnego. Ale cały plan oddzielam od samego tła. Potrzebuję tylko oddzielonej części wątroby z pierwszego planu. Sprawdź plik pdf w http://www.ijcaonline.org/casct/number1/SPE34T.pdf Potrzebuję danych wyjściowych podobnych do tych pokazanych na rysunku 6.

Załączam tutaj kodowanie. Prosimy mi pomóc.

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

Oryginalny obraz Po segmentacji

Mój zmodyfikowany kod dla 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
źródło
czy konieczne jest zastosowanie progowania adaptacyjnego?
vini,
blogs.mathworks.com/steve/2006/06/02/cell-segmentation stwierdził, że możesz to wypróbować
vini
Tak, muszę używać tylko progowania adaptacyjnego. Jeśli nie, czy możesz zasugerować mi inną dobrą metodę segmentacji (inną niż rozwój regionu i FCM)?
Gomathi,
www4.comp.polyu.edu.hk/~cslzhang/code.htm znalazłem, że możesz wyszukać kod K. Zhanga, H. Songa i L. Zhanga, „Aktywne kontury napędzane energią lokalnego dopasowania obrazu” uznanie, vol. 43, wydanie 4, s. 1199-1206, kwiecień 2010 r. Działa wystarczająco dobrze dla tego obrazu
vini
Dziękuję bardzo. Mam wyjście. Zmieniłem wartości parametrów i wykonałem operacje morfologiczne. Dziękuje wszystkim.
Gomathi

Odpowiedzi:

6

Widziałem link do referatu (SS Kumar), o którym wspominałeś, oraz link, do którego dostałeś kod (HIPR), to dwa różne algorytmy - mimo że oba brzmią jak Adaptacyjny próg

Najpierw chciałbym powiedzieć różnicę.

W metodzie HIPR ogólnym założeniem jest zasadniczo obraz na poziomie 2 klas - tj. Pierwszy plan i tło. W przypadku 2 progów klasowych, oczekuje się 2 pików lub obszarów na histogramie obrazu, w szczególności tła vs. forground, tekstu vs. białego papieru. Jeśli jakoś znalazłeś optymalny punkt doliny na histogramie - masz najczystszy podział. Oto jak może wyglądać histogram:
wprowadź opis zdjęcia tutaj

Jednak ten punkt doliny może nieznacznie przesuwać się po okolicy. Podano tam dobre przykłady wariantów oświetlenia. W związku z tym ten optymalny punkt doliny istnieje wszędzie, ale nieznacznie różni się przestrzennie, dlatego uniwersalny próg zawiodłby. Dlatego punkt doliny (próg) jest obliczany dla każdego regionu lokalnego.

Metoda papierowa SS Kumara, a dokładniej klasa obrazów, z którymi mamy do czynienia, jest wieloklasowa (wiele obiektów o różnym zakresie intensywności i rozpiętości). W takich przypadkach histogramy są multimodalne, tj. Ma wiele pików i dolin i przypuszczalnie każdy pik odpowiada innemu obiektowi, ale może być jeszcze bardziej złożony.

Histogram może wyglądać tak: (to ten sam obraz, co na papierze). wprowadź opis zdjęcia tutaj

W tym przypadku powyższe podejście do 2 klas po prostu zawiedzie, ponieważ nie ma jednej dobrej doliny. Dlatego twój pierwszy opublikowany obraz wygląda jak czarne / białe kropki dookoła.

Znaczenie progu adaptacyjnego oznacza tutaj, że musisz zidentyfikować prawidłowy pik i pas skali szarości, który pokrywa większość intensywności dźwigni, a inne obiekty są w wyraźnych kontrastach, co pozwala

Co powinieneś zrobić?

Po pierwsze, jeśli obowiązkowe jest zastosowanie progowania adaptacyjnego, znajdź histogram i sprawdź, jaki zakres intensywności, a następnie dla progu w lewo lub w prawo to granice intensywności, które piksele należy odrzucić.

Alternatywnie możesz użyć algorytmu powiększania regionu lub algorytmu podziału i scalania. Więcej informacji można znaleźć w tym pytaniu: Jakie metody segmentacji można zastosować w przypadku prostych obrazów?

Dipan Mehta
źródło
Dziękuję bardzo. To była bardzo pouczająca odpowiedź, proszę pana.
Gomathi