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);
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');
matlab
image-processing
computer-vision
Gomathi
fuente
fuente
Respuestas:
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:
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).
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?
fuente