суперпиксели

2D суперпиксельная сверхсегментация изображений

Синтаксис

[L,NumLabels] = superpixels(A,N)
[L,NumLabels] = superpixels(___,Name,Value,...)

Описание

пример

[L,NumLabels] = superpixels(A,N) вычисляет суперпиксели 2D шкалы полутонов, или RGB отображают A. N задает количество суперпикселей, которые вы хотите создать. Функция возвращает L, матрицу метки типа double, и NumLabels, фактическое количество суперпикселей, которые были вычислены.

Функция superpixels использует алгоритм простой линейной итеративной кластеризации (SLIC) [1]. Этот алгоритм пиксели групп в области с подобными значениями. Используя эти области в операциях обработки изображений, таких как сегментация, может уменьшать сложность этих операций.

[L,NumLabels] = superpixels(___,Name,Value,...) вычисляет суперпиксели изображения использование с Парами "имя-значение", используемыми, чтобы управлять аспектами сегментации.

Примеры

свернуть все

Считайте изображение в рабочую область.

A = imread('kobi.png');

Вычислите суперпиксели изображения.

[L,N] = superpixels(A,500);

Отобразите суперграницы пикселей, наложенные на оригинальном изображении.

figure
BW = boundarymask(L);
imshow(imoverlay(A,BW,'cyan'),'InitialMagnification',67)

Выберите цвет каждого пикселя в выходном изображении к среднему цвету RGB суперпиксельной области.

outputImage = zeros(size(A),'like',A);
idx = label2idx(L);
numRows = size(A,1);
numCols = size(A,2);
for labelVal = 1:N
    redIdx = idx{labelVal};
    greenIdx = idx{labelVal}+numRows*numCols;
    blueIdx = idx{labelVal}+2*numRows*numCols;
    outputImage(redIdx) = mean(A(redIdx));
    outputImage(greenIdx) = mean(A(greenIdx));
    outputImage(blueIdx) = mean(A(blueIdx));
end    

figure
imshow(outputImage,'InitialMagnification',67)

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

свернуть все

Введите изображение, заданное как действительная, неразреженная матрица. Для данных int16 A должен быть 2D полутоновым изображением. Для всех других типов данных A может быть 2D полутоновым или 2D изображением RGB. Когда параметром, isInputLab является true, входное изображение, должен быть single или double.

Типы данных: single | double | int16 | uint8 | uint16

Желаемое количество суперпикселей, заданных в виде числа.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: B = superpixels(A,100,'NumIterations', 20);

Форма суперпикселей, заданных в виде числа. Параметр компактности алгоритма SLIC управляет формой суперпикселей. Более высокое значение делает суперпиксели более регулярно формируемыми, то есть, квадрат. Нижнее значение заставляет суперпиксели придерживаться контуров лучше, делая их неправильной формы. Позволенной областью значений является (0 Inf). Типичные значения для компактности находятся в области значений [1,20].

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Входные данные изображения находятся в цветовом пространстве L*a*b*, заданном как логический скалярный true или false.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

Алгоритм раньше вычислял суперпиксели, заданные как одно из следующих значений. Функция superpixels использует два изменения алгоритма простой линейной итеративной кластеризации (SLIC).

Значение

Значение

'slic0'

superpixels использует алгоритм SLIC0, чтобы совершенствовать 'Compactness' адаптивно после первой итерации. Это значение по умолчанию.

'slic'

'Compactness' является постоянным во время кластеризации.

Типы данных: char | string

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

свернуть все

Матрица метки, возвращенная как числовой массив типа double. Значения являются положительными целыми числами, где 1 указывает на первую область, 2 вторая область, и так далее для каждой суперпиксельной области в изображении.

Количество вычисленных суперпикселей, возвратилось в виде числа типа double.

Ссылки

[1] Radhakrishna Achanta, Appu Shaji, Кевин Смит, Aurelien Lucchi, Паскаль Фюа, и Сабин Сюсстрюнк, Суперпиксели SLIC По сравнению с Современными Суперпиксельными Методами. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Объему 34, Выпуск 11, стр 2274-2282, май 2012

Расширенные возможности

Введенный в R2016a