bfscore

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

Описание

пример

score = bfscore(prediction,groundTruth) вычисляет счет соответствия контура BF (Boundary F1) между предсказанной сегментацией в prediction и истинную сегментацию в groundTruth. prediction и groundTruth может быть парой логических массивов для двоичной сегментации или парой меток или категориальных массивов для многоклассовой сегментации.

[score,precision,recall] = bfscore(prediction,groundTruth) также возвращает значения точности и отзыва для prediction изображение по сравнению с groundTruth изображение.

[___] = bfscore(prediction,groundTruth,threshold) вычисляет счет BF, используя заданный порог в качестве допуска ошибки расстояния, чтобы решить, соответствует ли граничная точка или нет.

Примеры

свернуть все

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

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');

Вычислите счет BF сегментации активных контуров по основной истине.

similarity = bfscore(BW, BW_groundTruth);

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

figure
imshowpair(BW, BW_groundTruth)
title(['BF Score = ' num2str(similarity)])

Figure contains an axes. The axes with title BF Score = 0.76266 contains an object of type image.

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

Чтение изображения с несколькими областями в сегмент.

RGB = imread('yellowlily.jpg');

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

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;

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

figure
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
imshowpair(label2rgb(L),label2rgb(L_groundTruth),'montage')
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.

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

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

    0.7992
    0.5333
    0.7466

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

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

свернуть все

Предсказанная сегментация, заданная как 2-D или 3-D логическая, числовая или categorical массив. Если prediction является числовым массивом, затем представляет массив меток и должен содержать неотрицательные целые числа типа данных double.

Типы данных: logical | double | categorical

Основная истина, заданная как 2-D или 3-D логическая, числовая или categorical массив того же размера и типа данных, что и prediction. Если groundTruth является числовым массивом, затем представляет массив меток и должен содержать неотрицательные целые числа типа данных double.

Типы данных: logical | double | categorical

Порог допуска ошибки расстояния в пикселях, заданный как положительная скалярная величина. Порог определяет, совпадает ли граничная точка или нет. Если threshold не задано, тогда значение по умолчанию составляет 0,75% от длины диагонали изображения.

Пример: 3

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

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

свернуть все

BF счета, возвращается как числовой скаляр или вектор со значениями в область значений [0, 1]. A score из 1 означает, что контуры объектов в соответствующем классе в prediction и groundTruth идеально подходят. Если входные массивы:

  • логические массивы, score является скаляром и представляет счет BF переднего плана.

  • метки или категориальные массивы, score является вектором. Первый коэффициент в score - счет BF для первого класса переднего плана, второй коэффициент - счет для второго класса переднего плана и так далее.

Точность, возвращенная как числовой скаляр или числовой вектор со значениями в области значений [0, 1]. Каждый элемент указывает точность контуров объектов в соответствующем классе переднего плана.

Точность - это отношение числа точек на контур предсказанной сегментации, которые достаточно близки к контуру сегментации основной истины к длине предсказанного контура. Другими словами, точность является частью обнаружений, которые являются истинными положительными, а не ложными положительными.

Напомним, возвращенный как числовой скаляр или числовой вектор со значениями в области значений [0, 1]. Каждый элемент указывает вызов контуров объектов в соответствующем классе переднего плана.

Напомним, что отношение числа точек на контур сегментации основной истины, которые достаточно близки к контуру предсказанной сегментации, к длине основной истины контура. Другими словами, отзыв является частью истинных срабатываний, которые обнаруживаются, а не пропускаются.

Подробнее о

свернуть все

Счет BF (граничный F1)

Счет BF измеряет, насколько близко предсказанная контур объекта соответствует контуру основной истины.

BF- счета определяется как гармоническое среднее (F1-measure) precision и recall значения с допуском ошибки расстояния, чтобы решить, совпадает ли точка на предсказанном контуре с основной истиной контура или нет.

score = 2 * precision * recall / (recall + precision)

Ссылки

[1] Csurka, G., D. Larlus, and F. Perronnin. «Какова хорошая мера оценки для семантической сегментации?» Материалы конференции British Machine Vision Conference, 2013, pp. 32.1-32.11.

См. также

|

Введенный в R2017b