superpixels3

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

Синтаксис

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

Описание

пример

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

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

Примеры

свернуть все

Загрузите 3-D данные MRI, удалите любые одноэлементные размерности и преобразуйте данные в полутоновое изображение интенсивности.

load mri;
D = squeeze(D);
A = ind2gray(D,map);

Вычислите 3-D суперпиксели. Сформируйте выходное изображение, где каждый пиксель установлен в средний цвет своей соответствующей суперпиксельной области.

[L,N] = superpixels3(A,34);

Показывайте все xy-плоскости прогрессивно с суперпиксельными контурами.

imSize = size(A);

Создайте стек изображений RGB, чтобы отобразить контуры в цвете.

imPlusBoundaries = zeros(imSize(1),imSize(2),3,imSize(3),'uint8');
for plane = 1:imSize(3)
  BW = boundarymask(L(:, :, plane));
  % Create an RGB representation of this plane with boundary shown
  % in cyan.
  imPlusBoundaries(:, :, :, plane) = imoverlay(A(:, :, plane), BW, 'cyan');
end

implay(imPlusBoundaries,5)

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

pixelIdxList = label2idx(L);
meanA = zeros(size(A),'like',D);
for superpixel = 1:N
     memberPixelIdx = pixelIdxList{superpixel};
     meanA(memberPixelIdx) = mean(A(memberPixelIdx));
end
implay([A meanA],5);

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

свернуть все

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

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

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

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

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

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

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

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

Примечание

Если вы задаете метод 'slic0', вы обычно не должны настраивать параметр 'Compactness'. С методом 'slic0' superpixel3 адаптивно совершенствовал параметр 'Compactness' автоматически, таким образом избавляя от необходимости определить хорошее значение.

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

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

Значение

Значение

'slic0'

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

'slic'

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

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

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

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

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

свернуть все

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

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

Алгоритмы

Алгоритм, используемый в superpixels3, является измененной версией алгоритма Простой линейной итеративной кластеризации (SLIC), используемого superpixels. На высоком уровне это создает кластерные центры и затем итеративно чередуется между присвоением пикселей к самому близкому кластерному центру и обновлением местоположений кластерных центров. superpixels3 использует метрику расстояния, чтобы определить самый близкий кластерный центр каждого пикселя. Эта метрика расстояния комбинирует расстояние интенсивности и пространственное расстояние.

Аргумент Compactness функции прибывает из математической формы метрики расстояния. Параметр компактности алгоритма является скалярным значением, которое управляет формой суперпикселей. Расстояние между i на два пикселя и j, где m является значением компактности:

dintensity=(lilj)2dspatial=(xixj)2+(yiyj)2+(zizj)2D=(dintensitym)2+(dspatialS)2

Компактность имеет то же значение как в 2D функции superpixels: Это определяет относительную важность расстояния интенсивности и пространственного расстояния в полной метрике расстояния. Нижнее значение заставляет суперпиксели придерживаться контуров лучше, делая их неправильной формы. Более высокое значение делает суперпиксели более регулярно формируемыми. Допустимой областью значений для компактности является (0 Inf), как в 2D функции. Типичной областью значений, как находили, посредством экспериментирования был [0.01 0.1]. Динамический диапазон входных изображений нормирован в рамках алгоритма, чтобы быть от 0 до 1. Это включает сопоставимое значение значений компактности через изображения.

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

| | | |

Введенный в R2017b