Main Content

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.

jaccard

Coeficiente de similitud de Jaccard para la segmentación de imágenes

Descripción

ejemplo

similarity = jaccard(BW1,BW2) calcula la intersección de imágenes binarias y se divide por la unión de y , también conocido como el índice Jaccard.BW1BW2BW1BW2 Las imágenes pueden ser imágenes binarias, imágenes de etiquetas o imágenes categóricas.

ejemplo

similarity = jaccard(L1,L2) calcula el índice Jaccard para cada etiqueta en imágenes de etiquetas y .L1L2

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

Ejemplos

contraer todo

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

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

Utilice el método de contornos activos (serpientes) para segmentar la mano.

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

Leer en el suelo la verdad contra la cual comparar la segmentación.

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

Calcular el índice Jaccard de esta segmentación.

similarity = jaccard(BW, BW_groundTruth);

Muestre las máscaras una encima de la otra. Los colores indican diferencias en las máscaras.

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

En este ejemplo se muestra cómo segmentar una imagen en varias regiones. A continuación, el ejemplo calcula el coeficiente de similitud de Jaccard para cada región.

Lea una imagen con varias regiones para segmentar.

RGB = imread('yellowlily.jpg');

Cree garabatos para tres regiones que distingan sus características de color típicas. La primera región clasifica la flor amarilla. La segunda región clasifica el tallo verde y las hojas. La última región clasifica la suciedad marrón en dos parches separados de la imagen. Las regiones se especifican mediante un vector de 4 elementos, cuyos elementos indican la coordenada x e y de la esquina superior izquierda del ROI, la anchura del ROI y la altura del 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 a la semilla en la parte superior de 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 utilizando la segmentación de color geodésica basada en la distancia.

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

Cargue una segmentación de la verdad del suelo de la imagen.

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

Compare visualmente los resultados de segmentación con la verdad del suelo.

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

Calcular el índice de similitud Jaccard (IoU) 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 notablemente más pequeño para la segunda región. Este resultado es coherente con la comparación visual de los resultados de segmentación, que clasifica erróneamente la suciedad en la esquina inferior derecha de la imagen como hojas.

Argumentos de entrada

contraer todo

Primera imagen binaria, especificada como una matriz lógica de cualquier dimensión.

Tipos de datos: logical

Segunda imagen binaria, especificada como una matriz lógica del mismo tamaño que .BW1

Tipos de datos: logical

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

Tipos de datos: double

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

Tipos de datos: double

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

Tipos de datos: category

Segunda imagen categórica, especificada como una matriz del mismo tamaño que .categoricalC1

Tipos de datos: category

Argumentos de salida

contraer todo

Coeficiente de similitud Jaccard, devuelto como un vector escalar numérico o numérico con valores en el rango [0, 1]. A de 1 significa que las segmentaciones en las dos imágenes son una combinación perfecta.similarity Si las matrices de entrada son:

  • imágenes binarias, es un escalar.similarity

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

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

Tipos de datos: double

Más acerca de

contraer todo

Coeficiente de similitud de Jaccard

El coeficiente de similitud Jaccard de dos conjuntos y (también conocido como intersección sobre la unión o IoU) se expresa como:UnB

jaccard(A,B) = | intersection(A,B) | / | union(A,B) |

en el caso de la representa el cardenal de set .UnUn El índice Jaccard también se puede expresar en términos de verdaderos positivos ( ), falsos positivos ( ) y falsos negativos ( ) como:TPFPFN

jaccard(A,B) = TP / (TP + FP + FN)

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

jaccard(A,B) = dice(A,B) / (2 - dice(A,B) )

Consulte también

|

Introducido en R2017b