Soglia adattativa per la segmentazione del fegato con Matlab


11

Ho bisogno di segmentare il fegato da un'immagine TC addominale usando Soglia adattativa. Ma ottengo l'intero primo piano separato solo dallo sfondo. Mi serve solo la parte del fegato in primo piano separata. Guarda il file pdf in http://www.ijcaonline.org/casct/number1/SPE34T.pdf Ho bisogno di un output simile a quello mostrato nella Figura 6.

Allego la mia codifica qui. Per favore, aiutatemi.

%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 (xgl99@mails.tsinghua.edu.cn)
%  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);

Immagine originale Dopo la segmentazione

Il mio codice modificato per 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');

è necessario utilizzare la soglia adattativa?
vini


Sì, devo utilizzare solo la soglia adattativa. In caso contrario, mi puoi suggerire qualche altro metodo di segmentazione buono (diverso dalla regione in crescita e FCM)?
Gomathi,

www4.comp.polyu.edu.hk/~cslzhang/code.htm ho scoperto che puoi cercare il codice per K. Zhang, H. Song e L. Zhang, "Contorni attivi guidati dall'energia di adattamento dell'immagine locale", Pattern riconoscimento, vol. 43, numero 4, pagg. 1199-1206, aprile 2010. Ha funzionato abbastanza bene per questa immagine
vini

Grazie mille. Ho ottenuto l'output. Ho modificato i valori dei parametri e fatto operazioni morfologiche. Grazie a tutti.
Gomathi,

Risposte:


6

Ho visto il link dell'articolo (di SS Kumar) che hai citato e il link in cui hai ottenuto il codice (HIPR) sono due algoritmi diversi, anche se entrambi suona come Soglia adattativa

Per prima cosa vorrei dirti la differenza.

Nel metodo HIPR, un presupposto generale è essenzialmente un'immagine di livello di classe 2, ovvero primo piano e sfondo. In qualsiasi soglia di 2 classi, ci si aspetta 2 picchi o regioni all'interno dell'istogramma dell'immagine, in particolare sfondo vs. forground, testo vs. white paper. Se in qualche modo hai trovato un punto a valle ottimale nell'istogramma, otterrai la divisione più pulita. Ecco come può apparire l'istogramma:
inserisci qui la descrizione dell'immagine

Tuttavia, questo punto della valle potrebbe spostarsi leggermente attorno a livello locale. Ci sono buoni esempi di variazioni di illuminazione fornite lì. Quindi, questo punto valle ottimale esiste ovunque ma varia leggermente spazialmente, quindi una soglia universale fallirebbe. Quindi, il punto valle (soglia) viene calcolato su ogni regione locale.

Il metodo di SS Kumar e, più precisamente, la classe di immagini con cui hai a che fare, è multi-classe (più oggetti ciascuno con banda e diffusione diverse di intensità). In questi casi, gli istogrammi sono multimodali, cioè ha molti picchi e valli e presumibilmente ogni picco corrisponde a un oggetto diverso, ma può essere ancora più complesso.

L'istogramma potrebbe apparire così: (questa è la stessa immagine della carta). inserisci qui la descrizione dell'immagine

In questo caso, l'approccio di classe 2 sopra fallirà semplicemente perché non esiste una buona valle. Ecco perché la tua prima immagine che hai pubblicato sembra punti bianchi / neri tutt'intorno.

Il significato di Soglia adattiva qui, implica che è necessario identificare il picco corretto e la banda della scala dei grigi che copre la maggior parte delle intensità della leva e altri oggetti sono in netto contrasto che consente

Cosa dovresti fare

Innanzitutto, se è obbligatorio utilizzare la soglia adattiva, trova l'istogramma e vedi quale intervallo di intensità e quindi per una soglia di sinistra o di destra sono i limiti di intensità di cui i pixel devono essere scartati.

In alternativa è possibile utilizzare l'algoritmo di espansione della regione o dividere e unire. Fare riferimento a questa domanda per alcune informazioni: quali metodi di segmentazione possono essere usati per immagini semplici?


Grazie mille. Questa è stata una risposta molto istruttiva signore.
Gomathi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.