jaccard
Coeficiente de similitud de Jaccard para segmentación de imágenes
Descripción
calcula la intersección de las imágenes binarias similarity
= jaccard(BW1
,BW2
)BW1
y BW2
dividida entre la unión de BW1
y BW2
, también conocido como el índice de Jaccard. Las imágenes pueden ser imágenes binarias, imágenes de etiquetas o imágenes categóricas.
calcula el índice de Jaccard para cada etiqueta en imágenes de etiqueta similarity
= jaccard(L1
,L2
)L1
y L2
.
calcula el índice de Jaccard para cada categoría en imágenes categóricas similarity
= jaccard(C1
,C2
)C1
y C2
.
Ejemplos
Calcular el coeficiente de similitud de Jaccard para segmentación binaria
Lea una imagen que contenga 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 el método de contornos activos (snakes) para segmentar la mano.
mask = false(size(I)); mask(25:end-25,25:end-25) = true; BW = activecontour(I, mask, 300);
Lea la validación (ground truth) con la que comparar la segmentación.
BW_groundTruth = imread('hands1-mask.png');
Calcule el índice de Jaccard de esta segmentación.
similarity = jaccard(BW, BW_groundTruth);
Muestre las máscaras unas sobre otras. Los colores indican diferencias entre las máscaras.
figure
imshowpair(BW, BW_groundTruth)
title(['Jaccard Index = ' num2str(similarity)])
Calcular el coeficiente de similitud de Jaccard 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 Jaccard 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.
figure 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 imshowpair(label2rgb(L),label2rgb(L_groundTruth),'montage') title('Comparison of Segmentation Results (Left) and Ground Truth (Right)')
Calcule el índice de similitud de Jaccard para cada región segmentada.
similarity = jaccard(L, L_groundTruth)
similarity = 3×1
0.8861
0.5683
0.8414
El índice de similitud de Jaccard 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.
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 Jaccard
Escalar numérico | Vector numérico
Coeficiente de similitud de Jaccard, 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 Jaccard para la etiqueta 1, el segundo coeficiente es el índice de Jaccard para la etiqueta 2; y así sucesivamente.imágenes categóricas,
similarity
es un vector, donde el primer coeficiente es el índice de Jaccard para la primera categoría, el segundo coeficiente es el índice de Jaccard para la segunda categoría; y así sucesivamente.
Tipos de datos: double
Más acerca de
Coeficiente de similitud de Jaccard
El coeficiente de similitud de Jaccard de dos conjuntos A y B (también conocido como intersección sobre unión) se expresa así:
jaccard
(A,B) = | intersection
(A,B) | / | union
(A,B) |
donde |A| representa el conjunto cardinal A. El índice de Jaccard también puede expresarse en términos de verdaderos positivos (TP), falsos positivos (FP) y falsos negativos (FN) como:
jaccard
(A,B) = TP / (TP + FP + FN)
El índice de Jaccard está relacionado con el índice de Dice según:
jaccard
(A,B) = dice
(A,B) / (2 - dice
(A,B) )
Historial de versiones
Introducido en R2017b
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)