Коэффициент подобия Sørensen-Dice для сегментации изображений
вычисляет коэффициент подобия Sørensen-Dice между бинарными изображениями similarity
= dice(BW1
,BW2
)BW1
и BW2
.
вычисляет индекс Dice для каждой метки в изображениях метки similarity
= dice(L1
,L2
)L1
и L2
.
вычисляет индекс Dice для каждой категории в категориальных изображениях similarity
= dice(C1
,C2
)C1
и C2
.
Считайте изображение с объектом сегментироваться. Преобразуйте изображение в шкалу полутонов и отобразите результат.
A = imread('hands1.jpg'); I = im2gray(A); figure imshow(I) title('Original 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)])
В этом примере показано, как сегментировать изображение на несколько областей. Пример затем вычисляет коэффициент подобия 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')
Сегментируйте изображение на три области с помощью геодезической основанной на расстоянии цветной сегментации.
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)')
Вычислите индекс подобия Dice для каждой сегментированной области. Индекс подобия Dice заметно меньше для второй области. Этот результат сопоставим с визуальным сравнением результатов сегментации, которое ошибочно классифицирует грязь на правый нижний угол изображения как листы.
similarity = dice(L, L_groundTruth)
similarity = 3×1
0.9396
0.7247
0.9139
BW1
— Первое бинарное изображениеПервое бинарное изображение в виде логического массива любой размерности.
Типы данных: логический
BW2
— Второе бинарное изображениеВторое бинарное изображение в виде логического массива одного размера с BW1
.
Типы данных: логический
L1
— Сначала пометьте изображениеСначала пометьте изображение в виде массива неотрицательных целых чисел любой размерности.
Типы данных: double
L2
— Второе изображение меткиВторое изображение метки в виде массива неотрицательных целых чисел, одного размера с L1
.
Типы данных: double
C1
— Сначала категориальное изображениеcategorical
массивСначала категориальное изображение в виде a categorical
массив любой размерности.
Типы данных: category
C2
— Второе категориальное изображениеcategorical
массивВторое категориальное изображение в виде a categorical
массив одного размера с C1
.
Типы данных: category
similarity
— Поставьте на карту коэффициент подобияПоставьте на карту коэффициент подобия, возвращенный в виде числа или числового вектора со значениями в области значений [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 + jaccard
A, B
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.