dice
Coeficiente de similitud de Sørensen-Dice para segmentación de imágenes
Descripción
calcula el coeficiente de similitud de Sørensen-Dice entre imágenes binarias similarity
= dice(BW1
,BW2
)BW1
y BW2
.
calcula el índice de Dice para cada etiqueta en imágenes de etiqueta similarity
= dice(L1
,L2
)L1
y L2
.
calcula el índice de Dice para cada categoría en imágenes categóricas similarity
= dice(C1
,C2
)C1
y C2
.
Ejemplos
Calcular el coeficiente de similitud de Dice para segmentación binaria
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')
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)])
Calcular el coeficiente de similitud de Dice para segmentación multirregión
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')
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)')
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
BW1
— Primera imagen binaria
Arreglo lógico
Primera imagen binaria, especificada como arreglo lógico de cualquier dimensión.
Tipos de datos: logical
BW2
— Segunda imagen binaria
Arreglo lógico
Segunda imagen binaria, especificada como arreglo lógico del mismo tamaño que BW1
.
Tipos de datos: logical
L1
— Primera imagen de etiqueta
arreglo de enteros no negativos
Primera imagen de etiqueta, especificada como arreglo de enteros no negativos, de cualquier dimensión.
Tipos de datos: double
L2
— Segunda imagen de etiqueta
arreglo de enteros no negativos
Segunda imagen de etiqueta, especificada como arreglo de enteros no negativos del mismo tamaño que L1
.
Tipos de datos: double
C1
— Primera imagen categórica
arreglo categorical
Primera imagen categórica, especificada como arreglo categorical
de cualquier dimensión.
Tipos de datos: category
C2
— Segunda imagen categórica
arreglo categorical
Segunda imagen categórica, especificada como arreglo categorical
del mismo tamaño que C1
.
Tipos de datos: category
Argumentos de salida
similarity
— Coeficiente de similitud de Dice
Escalar numérico | Vector numérico
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
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
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)