Umbral adaptativo para la segmentación del hígado con Matlab

11

Necesito segmentar el hígado a partir de una imagen de TC abdominal usando Umbral adaptativo Pero obtengo todo el primer plano separado del fondo solo. Solo necesito la parte del hígado del primer plano separada. Consulte el archivo pdf en http://www.ijcaonline.org/casct/number1/SPE34T.pdf Necesito una salida similar a la que se muestra en la Figura 6.

Adjunto mi codificación aquí. Amablemente ayúdame.

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

Imagen original Después de la segmentación

Mi 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
fuente
¿Es necesario utilizar un umbral adaptativo?
vini
Sí, solo necesito usar un umbral adaptativo. Si no es así, ¿puede sugerirme algún otro buen método de segmentación (aparte del crecimiento regional y FCM)?
Gomathi
www4.comp.polyu.edu.hk/~cslzhang/code.htm encontré esto, puede buscar el código para K. Zhang, H. Song y L. Zhang, "Contornos activos impulsados ​​por la energía de ajuste de imagen local", Patrón reconocimiento, vol. 43, número 4, págs. 1199-1206, abril de 2010. Funcionó lo suficientemente bien para esta imagen
vini
Muchas gracias. Tengo la salida. Cambié los valores de los parámetros e hice operaciones morfológicas. Gracias a todos.
Gomathi

Respuestas:

6

Vi el enlace del documento (de SS Kumar) al que se refirió y el enlace donde obtuvo el código (HIPR) son dos algoritmos diferentes, a pesar de que ambos suenan como Umbral adaptativo

Primero me gustaría decirte la diferencia.

En el método HIPR, una suposición general es esencialmente una imagen de nivel de 2 clases, es decir, primer plano y fondo. En cualquier umbral de 2 clases, se esperan 2 picos o regiones dentro del histograma de la imagen, específicamente fondo frente a fondo, texto frente a papel blanco. Si de alguna manera encontraste un punto de valle óptimo en el histograma, obtienes una división más limpia. Así es como puede verse el histograma:
ingrese la descripción de la imagen aquí

Sin embargo, este punto del valle puede estar cambiando ligeramente a nivel local. Hay buenos ejemplos de variaciones de iluminación dados allí. Por lo tanto, este punto de valle óptimo existe en todas partes, pero varía ligeramente espacialmente, por lo tanto, un umbral universal fallaría. Por lo tanto, el punto del valle (umbral) se calcula en cada región local.

El método de papel de SS Kumar y, más específicamente, la clase de imágenes con las que está tratando, es multiclase (múltiples objetos, cada uno con diferente banda de intensidad y extensión). En estos casos, los histogramas son multimodales, es decir, tiene muchos picos y valles y, presumiblemente, cada pico corresponde a un objeto diferente, aunque puede ser aún más complejo.

El histograma podría verse así: (esta es la misma imagen que en papel). ingrese la descripción de la imagen aquí

En este caso, el enfoque de 2 clases anterior simplemente fallará porque no hay un buen valle. Es por eso que su primera imagen que publicó parece puntos en blanco y negro por todas partes.

El significado de Umbral adaptativo aquí, implica que debe identificar el pico correcto y la banda de escala de grises que cubre la mayoría de las intensidades de la palanca y otros objetos están en contrastes que permiten

Que deberias hacer

Primero, si es obligatorio usar un umbral adaptativo, encuentre el histograma y vea qué rango de intensidad y luego para un umbral de izquierda o derecha son los límites de intensidad que los píxeles deben descartarse.

Alternativamente, puede usar el crecimiento regional o el algoritmo de división y fusión. Consulte esta pregunta para obtener información: ¿Qué métodos de segmentación se pueden usar para imágenes simples?

Dipan Mehta
fuente
Muchas gracias. Esa fue una respuesta muy informativa, señor.
Gomathi