Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

imsegfmm

Segmentación de imágenes binarias mediante el método de marcha rápida

Descripción

ejemplo

BW = imsegfmm(W,mask,thresh) Devuelve una imagen segmentada, que se calcula mediante el método de marcha rápida.BW La matriz especifica ponderaciones para cada píxel. es una matriz lógica que especifica las ubicaciones de inicialización. es un escalar no negativo en el intervalo que especifica el nivel de umbral.Wmaskthresh[0 1]

BW = imsegfmm(W,C,R,thresh) Devuelve una imagen segmentada, con ubicaciones de inicialización especificadas por los vectores y que contienen índices de columnas y filas. y debe contener valores que son índices de píxeles válidos en.CRCRW

BW = imsegfmm(W,C,R,P,thresh) Devuelve una imagen segmentada, con ubicaciones de inicialización especificadas por los vectores y, que contienen índices de columna, fila y plano. , y debe contener valores que son índices de píxeles válidos en.CRPCRPW

[BW,D] = imsegfmm(___) Devuelve el mapa de distancia geodésica normalizado calculado mediante el método de marcha rápida. es una versión de umbral de, donde todos los píxeles que tienen valores de distancia geodésica normalizados menores que se consideran píxeles de primer plano y se establecen en. puede ser umbral en diferentes niveles para obtener diferentes resultados de segmentación.DBWDthreshtrueD

Ejemplos

contraer todo

En este ejemplo se muestra cómo segmentar un objeto de una imagen mediante el método de marcha rápida en función de las diferencias en la intensidad de la escala de grises en comparación con las ubicaciones de inicialización.

Leer imagen.

I = imread('cameraman.tif'); imshow(I) title('Original Image')

Cree una máscara y especifique la ubicación de inicialización. También puede utilizar para crear la máscara de forma interactiva.roipoly

mask = false(size(I));  mask(170,70) = true;

Calcule la matriz de pesos en función de las diferencias de intensidad de escala de grises.

W = graydiffweight(I, mask, 'GrayDifferenceCutoff', 25);

Segmenta la imagen usando los pesos.

thresh = 0.01; [BW, D] = imsegfmm(W, mask, thresh); figure imshow(BW) title('Segmented Image')

Puede establecer el umbral de la matriz de distancia geodésica utilizando diferentes umbrales para obtener resultados de segmentación diferentes.D

figure imshow(D) title('Geodesic Distances')

Este ejemplo segmenta el cerebro de los datos de RMN de la cabeza humana.

Cargue los datos de RMN.

load mri V = squeeze(D);

Visualice los datos.

sizeO = size(V); figure; slice(double(V),sizeO(2)/2,sizeO(1)/2,sizeO(3)/2); shading interp, colormap gray; title('Original');

Establezca las ubicaciones de inicialización.

seedR = 75;  seedC = 60;  seedP = 10;

Calcule las ponderaciones según las diferencias de intensidad de escala de grises.

W = graydiffweight(V, seedC, seedR, seedP , 'GrayDifferenceCutoff', 25);

Segmenta la imagen usando los pesos.

thresh = 0.002; BW = imsegfmm(W, seedC, seedR, seedP, thresh);

Visualice la imagen segmentada utilizando una superficie ISO.

figure; p = patch(isosurface(double(BW))); p.FaceColor = 'red'; p.EdgeColor = 'none'; daspect([1 1 27/64]); camlight;  lighting phong;

Argumentos de entrada

contraer todo

Matriz de ponderación, especificada como una matriz numérica no dispersa y no negativa. Utilice las funciones o para calcular esta matriz de pesos.graydiffweightgradientweight Los valores altos para identificar el primer plano (objeto) y los valores bajos identifican el fondo.W

Ejemplo: W = graydiffweight(I, mask,'GrayDifferenceCutoff', 25);

Tipos de datos: single | double | uint8 | int8 | int16 | uint16 | int32 | uint32

Máscara de ubicaciones de inicialización, especificada como una matriz lógica, del mismo tamaño que.W Las ubicaciones donde es verdadero son ubicaciones de semilla.mask Si utilizó para crear la matriz de peso, se recomienda que utilice el mismo valor con el que usó.graydiffweightWmaskimsegfmmgraydiffweight

Ejemplo: mask = false(size(I)); mask(170,70) = true;

Tipos de datos: logical

Nivel de umbral utilizado para obtener la imagen binaria, especificada como un escalar no negativo en el intervalo.[0 1] Los valores bajos suelen dar lugar a grandes regiones de primer plano (true lógico) y los valores altos producen regiones de primer plano pequeñas.BW

Ejemplo: 0.5

Tipos de datos: double

Índice de columna de píxeles de referencia, especificado como un vector numérico.

Ejemplo: [50 75 93]

Tipos de datos: double

Índice de fila de píxeles de referencia, especificado como un vector numérico.

Ejemplo: [48 71 89]

Tipos de datos: double

Índice de plano de los píxeles de referencia, especificado como un vector numérico.

Ejemplo: ]

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen segmentada, devuelta como una matriz lógica del mismo tamaño que.W

Ejemplo:

Tipos de datos: logical

Mapa de distancia geodésica normalizado, devuelto como una matriz del mismo tamaño que.doubleW Si es de clase, es de clase.WsingleDsingle

Sugerencias

  • utiliza operaciones de punto flotante de precisión doble para los cálculos internos para todas las clases excepto la clase.imsegfmmsingle Si es de clase, utiliza operaciones de punto flotante de precisión simple internamente.Wsingleimsegfmm

  • establece píxeles con o valores de ponderación en la imagen de distancia geodésica.imsegfmm0NaNInfD Estos píxeles forman parte del fondo (falso lógico) en la imagen segmentada.BW

Referencias

[1] Sethian, J. A. Level Set Methods and Fast Marching Methods: Evolving Interfaces in Computational Geometry, Fluid Mechanics, Computer Vision, and Materials Science, Cambridge University Press, 2nd Edition, 1999.

Introducido en R2014b