lazysnapping

Изображение сегмента в передний план и фон с помощью основанной на графике сегментации

Описание

пример

BW = lazysnapping(A,L,foremask,backmask) сегментирует изображение A в передний план и фоновые области памяти с помощью ленивого моментального снимка. Матрица метки L задает подобласти изображения. foremask и backmask маски, определяющие пиксели в изображении как передний план и фон, соответственно.

BW = lazysnapping(A,L,foreind,backind) сегментирует изображение A в передний план и фоновые области памяти. foreind andbackind задайте линейные индексы пикселей в изображении, отмеченном как передний план и фон, соответственно

пример

BW = lazysnapping(V,___) сегментирует объем V в передний план и фоновые области памяти.

BW = lazysnapping(___,Name,Value) сегментирует изображение или объем с помощью пар "имя-значение", чтобы управлять аспектами сегментации.

Примеры

свернуть все

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

RGB = imread('peppers.png');

Отметьте местоположения на изображении как передний план.

figure; 
imshow(RGB)
h1 = impoly(gca,[34,298;114,140;195,135;...
    259,200;392,205;467,283;483,104],'Closed',false);

Преобразуйте местоположения в линейные индексы.

foresub = getPosition(h1);
foregroundInd = sub2ind(size(RGB),foresub(:,2),foresub(:,1));

Отметьте местоположения на изображении как фон.

figure; 
imshow(RGB)
h2 = impoly(gca,[130,52;170,32],'Closed',false);

Преобразуйте местоположения в линейные индексы.

backsub = getPosition(h2);
backgroundInd = sub2ind(size(RGB),backsub(:,2),backsub(:,1));

Сгенерируйте матрицу метки.

L = superpixels(RGB,500);

Выполните ленивый моментальный снимок.

BW = lazysnapping(RGB,L,foregroundInd,backgroundInd);

Создайте замаскированное изображение.

maskedImage = RGB;
maskedImage(repmat(~BW,[1 1 3])) = 0;
figure; 
imshow(maskedImage)

Загрузите 3-D объемное изображение в рабочую область.

D = load('mri.mat');
V  = squeeze(D.D);  

Создайте 2D маску, идентифицирующую начальный передний план и фоновые точки seed.

 seedLevel = 10;
 fseed = V(:,:,seedLevel) > 75;
 bseed = V(:,:,seedLevel) == 0;
 figure; 
 imshow(fseed)

 figure; 
 imshow(bseed)

Поместите точки seed в пустую 3-D маску.

fmask = zeros(size(V));
bmask = fmask;
fmask(:,:,seedLevel) = fseed;
bmask(:,:,seedLevel) = bseed;

Сгенерируйте 3-D матрицу метки.

 L = superpixels3(V,500);

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

bw = lazysnapping(V,L,fmask,bmask);

Отобразите 3-D сегментированное изображение.

figure;
p = patch(isosurface(double(bw)));
p.FaceColor = 'red';
p.EdgeColor = 'none';
daspect([1 1 27/128]);
camlight; lighting phong

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

свернуть все

Введите изображение, заданное как действительный, конечный, неразреженный числовой массив. Для double и single изображения, lazysnapping принимает область значений изображения, чтобы быть [0, 1]. Для uint16int16, и uint8 изображения, lazysnapping принимает область значений, чтобы быть полным спектром для типа определенных данных. Если значения не совпадают с ожидаемой областью значений на основе типа данных, масштабируют изображение к ожидаемой области значений или настраивают EdgeWeightScaleFactor улучшить результаты.

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

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

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

Матрица метки входного изображения или объема, заданного как числовой массив. Для 2D полутоновых изображений и 3-D объемных полутоновых изображений, размера L должен соответствовать размер входа отображают A. Для цветных изображений и многоканальных изображений, L должен быть 2D массив, где первые две размерности соответствуют, первые две размерности входа отображают A.

Не отмечайте данную подобласть матрицы метки как принадлежащий и приоритетной маске и фоновой маске. Если область матрицы метки содержит пиксели, принадлежащие и приоритетной маске и фоновой маске, lazysnapping сегментирует область как фон.

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

Рисунок маски, который задает передний план, заданный как логический массив. Для 2D полутоновых изображений и 3-D объемных полутоновых изображений, размера foremask должен соответствовать размер входа отображают A. Для цветных изображений и многоканальных изображений, foremask должен быть 2D массив, где первые две размерности соответствуют, первые две размерности входа отображают A.

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

Рисунок маски, который задает фон, заданный как логический массив. Для 2D полутоновых изображений и 3-D объемных полутоновых изображений, размера backmask должен соответствовать размер входа отображают A. Для цветных изображений и многоканальных изображений, backmask должен быть 2D массив, где первые две размерности соответствуют, первые две размерности входа отображают A.

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

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

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

Линейный индекс пикселей, которые задают фон, заданный как числовой вектор.

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

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

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

Пример:

Возможность соединения связанных компонентов, заданных как разделенная запятой пара, состоящая из 'Connectivity' и одно из следующего: 4 или 8, для 2D изображений, и 6, 18, или 26 для 3-D изображений (объемы).

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

Масштабный коэффициент для веса ребра между подобластями матрицы метки, заданной как разделенная запятой пара, состоящая из 'EdgeWeightScaleFactor' и положительная скалярная величина. Типичные значения располагаются от [10, 1000]. Увеличение этого повышения стоимости вероятность, что lazysnapping метки, граничащие с подобластями вместе или как передний план или как фон.

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

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

свернуть все

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

Алгоритмы

Ленивый алгоритм Моментального снимка, разработанный Ли и др. передний план кластеров и фоновые значения с помощью метода K-средних значений. Эта реализация Ленивого алгоритма Моментального снимка не кластеризирует подобный передний план или фоновые пиксели. Чтобы улучшать производительность, сократите количество пикселей с подобными значениями, которые идентифицированы как передний план или фон.

Ссылки

[1] И. Ли, С. Цзянь, К. Тан, Х. Шум, ленивый моментальный снимок в продолжениях от 31-й международной конференции по вопросам компьютерной графики и интерактивных методов, 2004.

Введенный в R2017a