dice

Коэффициент подобия Sørensen-Dice для сегментации изображений

Описание

пример

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

пример

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

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

Примеры

свернуть все

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

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.

Используйте активные контуры (змеи), чтобы сегментировать руку.

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 object. The axes object with title Dice Index = 0.83828 contains an object of type image.

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

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

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;

Отобразите области seed сверху изображения.

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.

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

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 object. The axes object with title Comparison of Segmentation Results (Left) and Ground Truth (Right) contains an object of type image.

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

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

    0.9396
    0.7247
    0.9139

Входные параметры

свернуть все

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

Типы данных: логический

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

Типы данных: логический

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

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

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

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

Сначала категориальное изображение в виде a categorical массив любой размерности.

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

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

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

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

свернуть все

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

  • бинарные изображения, similarity скаляр.

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

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

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

Больше о

свернуть все

Поставьте на карту коэффициент подобия

Коэффициент подобия Dice двух наборов A и B описывается как:

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 + jaccardA, B

Смотрите также

|

Введенный в R2017b