Limiar adaptativo para segmentação hepática usando Matlab

11

Preciso segmentar o fígado a partir de uma imagem de TC abdominal usando o Adaptive Thresholding. Mas eu separo todo o primeiro plano do fundo. Eu preciso apenas da parte do fígado do primeiro plano separada. Verifique o arquivo pdf em http://www.ijcaonline.org/casct/number1/SPE34T.pdf . Preciso de uma saída semelhante à mostrada na Figura 6.

Anexo minha codificação aqui. Por favor, me ajude.

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

Imagem original Após a segmentação

Meu código modificado para 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
fonte
é necessário usar limiar adaptativo?
vini
blogs.mathworks.com/steve/2006/06/02/cell-segmentation encontrado este u poderia experimentá-lo
vini
Sim, preciso usar apenas o limiar adaptável. Caso contrário, você pode me sugerir outro bom método de segmentação (que não seja região em crescimento e FCM)?
Gomathi 12/03/2012
www4.comp.polyu.edu.hk/~cslzhang/code.htm Eu achei que você pode procurar o código de K. Zhang, H. Song e L. Zhang, "Contornos ativos conduzidos pela energia de ajuste de imagem local" reconhecimento, vol. . 43, Issue 4, pp 1199-1206, Abril de 2010. Funcionou bem o suficiente para esta imagem
vini
Muito obrigado. Eu consegui a saída. Alterei os valores dos parâmetros e fiz operações morfológicas. Obrigado a todos.
Gomathi 13/03/12

Respostas:

6

Eu vi o link do artigo (de SS Kumar) que você referiu e o link onde você obteve o código (HIPR) são dois algoritmos diferentes - mesmo que ambos pareçam Adaptive Thresholding

Primeiro eu gostaria de lhe dizer a diferença.

No método HIPR, uma suposição geral é essencialmente imagem de nível de 2 classes - ou seja, primeiro plano e plano de fundo. Em qualquer limiar de 2 classes, espera-se 2 picos ou regiões no histograma da imagem, especificamente plano de fundo versus terreno, texto versus papel branco. Se você de alguma forma encontrou um ponto de vale ideal no histograma - obtém uma divisão mais limpa. Aqui está como o histograma pode parecer:
insira a descrição da imagem aqui

No entanto, esse ponto do vale pode estar mudando um pouco ao redor do local. Existem bons exemplos de variações de iluminação aqui. Portanto, esse ponto ótimo de vale existe em todo lugar, mas varia ligeiramente em termos espaciais; portanto, um limite universal falharia. Portanto, o ponto do vale (limite) é calculado em todas as regiões locais.

O método do artigo de SS Kumar e, mais especificamente, a classe de imagens com as quais você está lidando, é multi-classe (vários objetos, cada um com diferentes faixas e faixas de intensidade). Nesse caso, os histogramas são multimodais, ou seja, possuem muitos picos e vales e, presumivelmente, cada pico corresponde a um objeto diferente, mas pode ser ainda mais complexo.

O histograma pode ficar assim: (esta é a mesma imagem que no papel). insira a descrição da imagem aqui

Nesse caso, a abordagem de 2 classes acima simplesmente falhará porque não existe um bom vale. É por isso que a sua primeira imagem que você postou parece com pontos preto / branco por toda parte.

O significado do limiar adaptativo aqui implica que você precisa identificar o pico correto e a faixa de escala de cinza que cobre a maior parte das intensidades da alavanca e outros objetos estão em contrastes acentuados, o que permite

O que você deveria fazer?

Primeiro, se for obrigatório usar o limiar adaptativo, encontre o histograma e veja qual faixa de intensidade e, para um limiar da esquerda ou da direita, são os limites de intensidade que os pixels devem ser descartados.

Como alternativa, você pode usar o Crescimento da região ou o algoritmo de divisão e mesclagem. Consulte esta pergunta para obter mais informações: Quais métodos de segmentação podem ser usados ​​para imagens simples?

Dipan Mehta
fonte
Muito obrigado. Essa foi uma resposta muito informativa, senhor.
Gomathi 19/03/12