exponenta event banner

игра в кости

Коэффициент подобия Сёренсена-Диса для сегментации изображения

Описание

пример

similarity = dice(BW1,BW2) вычисляет коэффициент подобия Сёренсена-Диса между двоичными изображениями BW1 и BW2.

пример

similarity = dice(L1,L2) вычисляет индекс кости для каждой метки в изображениях меток L1 и L2.

similarity = dice(C1,C2) вычисляет индекс кости для каждой категории в категориальных изображениях C1 и C2.

Примеры

свернуть все

Считывание изображения с объектом в сегмент. Преобразуйте изображение в градации серого и отобразите результат.

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

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

Используйте активные контуры (змеи) для сегментации руки.

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

Прочитайте в наземной сегментации правды.

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

Вычислите индекс Dice для сегментации активных контуров в зависимости от истинности грунта.

similarity = dice(BW, BW_groundTruth);

Отображение масок друг на друге. Цвета указывают на различия в масках.

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

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

В этом примере показано, как сегментировать изображение на несколько областей. Затем в примере вычисляется коэффициент подобия Диса для каждой области.

Считывание изображения с несколькими областями для сегментации.

RGB = imread('yellowlily.jpg');

Создайте писанки для трех областей, отличающих их типичные цветовые характеристики. Первая область классифицирует жёлтый цветок. Вторая область классифицирует зелёный стебель и листья. Последний регион классифицирует коричневую грязь по двум отдельным пятнам изображения. Области задаются 4-элементным вектором, элементы которого обозначают координату x и y верхнего левого угла ROI, ширину ROI и высоту 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;

Отображение начальных областей поверх изображения.

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

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

Сегментируйте изображение на три области с помощью цветовой сегментации на основе геодезических расстояний.

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

Загрузите сегментацию истинности на земле изображения.

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

Визуально сравните результаты сегментации с основной истинностью.

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

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

Вычислите индекс подобия Dice для каждой сегментированной области. Индекс подобия Диса заметно меньше для второй области. Этот результат согласуется с визуальным сравнением результатов сегментации, которая ошибочно классифицирует грязь в правом нижнем углу изображения как листья.

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

    0.9396
    0.7247
    0.9139

Входные аргументы

свернуть все

Первый двоичный образ, заданный как логический массив любого измерения.

Типы данных: logical

Второй двоичный образ, заданный как логический массив того же размера, что и BW1.

Типы данных: logical

Первое изображение метки, указанное как массив неотрицательных целых чисел, любого размера.

Типы данных: double

Второе изображение метки, указанное как массив неотрицательных целых чисел того же размера, что и L1.

Типы данных: double

Первое категориальное изображение, указанное как categorical массив любого измерения.

Типы данных: category

Второе категориальное изображение, указанное как categorical массив того же размера, что и C1.

Типы данных: category

Выходные аргументы

свернуть все

Коэффициент подобия кости, возвращаемый как числовой скалярный или числовой вектор со значениями в диапазоне [0, 1]. A similarity 1 означает, что сегментации в двух изображениях являются идеальным совпадением. Если входные массивы:

  • двоичные изображения, similarity является скаляром.

  • изображения меток, similarity является вектором, где первый коэффициент является индексом Dice для метки 1, второй коэффициент является индексом Dice для метки 2 и так далее.

  • категориальные изображения, similarity - вектор, где первый коэффициент - индекс Dice для первой категории, второй коэффициент - индекс Dice для второй категории и так далее.

Типы данных: double

Подробнее

свернуть все

Коэффициент подобия костей

Коэффициент подобия Диса двух множеств А и В выражается как:

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

где | A | представляет кардинал множества A. Индекс Dice также может быть выражен в терминах истинных положительных (TP), ложных положительных (FP) и ложных отрицательных (FN) как:

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

Индекс Dice связан с индексом Jaccard согласно:

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

См. также

|

Представлен в R2017b