Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

dice

Coeficiente de similitud de Sørensen-Dice para segmentación de imágenes

Descripción

ejemplo

similarity = dice(BW1,BW2) calcula el coeficiente de similitud de Sørensen-Dice entre imágenes binarias BW1 y BW2.

ejemplo

similarity = dice(L1,L2) calcula el índice de Dice para cada etiqueta en imágenes de etiqueta L1 y L2.

similarity = dice(C1,C2) calcula el índice de Dice para cada categoría en imágenes categóricas C1 y C2.

Ejemplos

contraer todo

Lea una imagen con un objeto que desee segmentar. Convierta la imagen a escala de grises y muestre el resultado.

A = imread('hands1.jpg');
I = im2gray(A);
figure
imshow(I)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

Use contornos activos (serpientes) para segmentar la mano.

mask = false(size(I));
mask(25:end-25,25:end-25) = true;
BW = activecontour(I, mask, 300);

Lea la segmentación de validación (ground truth).

BW_groundTruth = imread('hands1-mask.png');

Calcule el índice de Dice de la segmentación de contornos activos frente a la validación.

similarity = dice(BW, BW_groundTruth);

Muestre las máscaras unas sobre otras. Los colores indican diferencias entre las máscaras.

figure
imshowpair(BW, BW_groundTruth)
title(['Dice Index = ' num2str(similarity)])

Figure contains an axes object. The axes object with title Dice Index = 0.83828 contains an object of type image.

En este ejemplo se muestra cómo segmentar una imagen en múltiples regiones. Después, el ejemplo calcula el coeficiente de similitud de Dice para cada región.

Lea una imagen con varias regiones que desee segmentar.

RGB = imread('yellowlily.jpg');

Cree garabatos para tres regiones que distingan las características típicas de su color. La primera región clasifica la flor amarilla. La segunda región clasifica el tallo y las hojas verdes. La última región clasifica la tierra marrón en dos zonas separadas de la imagen. Las regiones están especificadas por un vector de 4 elementos cuyos elementos indican las coordenadas x e y de la esquina superior izquierda de la ROI, con el ancho de la ROI y la altura de la ROI.

region1 = [350 700 425 120]; % [x y w h] format
BW1 = false(size(RGB,1),size(RGB,2));
BW1(region1(2):region1(2)+region1(4),region1(1):region1(1)+region1(3)) = true;

region2 = [800 1124 120 230];
BW2 = false(size(RGB,1),size(RGB,2));
BW2(region2(2):region2(2)+region2(4),region2(1):region2(1)+region2(3)) = true;

region3 = [20 1320 480 200; 1010 290 180 240]; 
BW3 = false(size(RGB,1),size(RGB,2));    
BW3(region3(1,2):region3(1,2)+region3(1,4),region3(1,1):region3(1,1)+region3(1,3)) = true;
BW3(region3(2,2):region3(2,2)+region3(2,4),region3(2,1):region3(2,1)+region3(2,3)) = true;

Muestre las regiones de valor inicial sobre la imagen.

imshow(RGB)
hold on
visboundaries(BW1,'Color','r');
visboundaries(BW2,'Color','g');
visboundaries(BW3,'Color','b');
title('Seed Regions')

Figure contains an axes object. The axes object with title Seed Regions contains 7 objects of type line, image.

Segmente la imagen en tres regiones mediante segmentación geodésica basada en el color.

L = imseggeodesic(RGB,BW1,BW2,BW3,'AdaptiveChannelWeighting',true);

Cargue una segmentación de validación de la imagen.

L_groundTruth = double(imread('yellowlily-segmented.png'));

Compare visualmente los resultados de la segmentación con la validación.

figure
montage({label2rgb(L),label2rgb(L_groundTruth)})
title('Comparison of Segmentation Results (Left) and Ground Truth (Right)')

Figure contains an axes object. The axes object with title Comparison of Segmentation Results (Left) and Ground Truth (Right) contains an object of type image.

Calcule el índice de similitud de Dice para cada región segmentada. El índice de similitud de Dice es claramente más pequeño en la segunda región. Este resultado es consistente con la comparación visual de los resultados de la segmentación, que por error clasifican la tierra en la esquina derecha de abajo de la imagen como hojas.

similarity = dice(L, L_groundTruth)
similarity = 3×1

    0.9396
    0.7247
    0.9139

Argumentos de entrada

contraer todo

Primera imagen binaria, especificada como arreglo lógico de cualquier dimensión.

Tipos de datos: logical

Segunda imagen binaria, especificada como arreglo lógico del mismo tamaño que BW1.

Tipos de datos: logical

Primera imagen de etiqueta, especificada como arreglo de enteros no negativos, de cualquier dimensión.

Tipos de datos: double

Segunda imagen de etiqueta, especificada como arreglo de enteros no negativos del mismo tamaño que L1.

Tipos de datos: double

Primera imagen categórica, especificada como arreglo categorical de cualquier dimensión.

Tipos de datos: category

Segunda imagen categórica, especificada como arreglo categorical del mismo tamaño que C1.

Tipos de datos: category

Argumentos de salida

contraer todo

Coeficiente de similitud de Dice, devuelto como escalar numérico o vector numérico con valores en el intervalo [0, 1]. Un valor de similarity de 1 significa que las segmentaciones en las dos imágenes coinciden perfectamente. Si los arreglos de entrada son:

  • imágenes binarias, similarity es un escalar.

  • imágenes de etiqueta, similarity es un vector, donde el primer coeficiente es el índice de Dice para la etiqueta 1, el segundo coeficiente es el índice de Dice para la etiqueta 2; y así sucesivamente.

  • imágenes categóricas, similarity es un vector, donde el primer coeficiente es el índice de Dice para la primera categoría, el segundo coeficiente es el índice de Dice para la segunda categoría; y así sucesivamente.

Tipos de datos: double

Más acerca de

contraer todo

Coeficiente de similitud de Dice

El coeficiente de similitud de Dice de dos conjuntos A y B se expresa así:

dice(A,B) = 2 * | intersection(A,B) | / ( | A | + | B | )

donde |A| representa el conjunto cardinal A. El índice de Dice también puede expresarse en términos de verdaderos positivos (TP), falsos positivos (FP) y falsos negativos (FN) como:

dice(A,B) = 2 * TP / ( 2 * TP + FP + FN)

El índice de Dice está relacionado con el índice Jaccard según:

dice(A,B) = 2 * jaccard(A,B) / (1 + jaccard(A,B) )

Historial de versiones

Introducido en R2017b

Consulte también

|