Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

lazysnapping

Segmente la imagen en primer plano y fondo mediante la segmentación basada en gráficos

Descripción

ejemplo

BW = lazysnapping(A,L,foremask,backmask) segmenta la imagen en regiones de primer plano y de fondo mediante el ajuste diferido.Un La matriz de etiquetas especifica las subregiones de la imagen. y son máscaras que designan píxeles en la imagen como primer plano y fondo, respectivamente.Lforemaskbackmask

BW = lazysnapping(A,L,foreind,backind) segmenta la imagen en regiones de primer plano y de fondo. y especifique los índices lineales de los píxeles de la imagen marcada como primer plano y fondo, respectivamenteUnforeindbackind

ejemplo

BW = lazysnapping(V,___) segmentos del volumen en regiones de primer plano y de fondo.V

BW = lazysnapping(___,Name,Value) segmentos de la imagen o el volumen utilizando pares nombre-valor para controlar los aspectos de la segmentación.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

RGB = imread('peppers.png');

Marque las ubicaciones de la imagen como en primer plano.

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

Convierta las ubicaciones en índices lineales.

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

Marque las ubicaciones de la imagen como fondo.

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

Convierta las ubicaciones en índices lineales.

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

Generar matriz de etiquetas.

L = superpixels(RGB,500);

Realice el ajuste diferido.

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

Crear imagen enmascarada.

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

Cargue la imagen volumétrica 3D en el espacio de trabajo.

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

Cree una máscara 2D que identifique los puntos iniciales de primer plano y de inicialización de fondo.

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

 figure;   imshow(bseed)

Coloque los puntos de semilla en una máscara 3D vacía.

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

Genere una matriz de etiquetas 3D.

 L = superpixels3(V,500);

Segmente la imagen en primer plano y fondo mediante el ajuste diferido.

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

Muestre la imagen segmentada en 3D.

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

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz numérica real, finita y no dispersa. Para e imágenes, asume que el rango de la imagen es [0, 1].doublesinglelazysnapping Para , , e imágenes, se supone que el intervalo es el intervalo completo para el tipo de datos especificado.uint16int16uint8lazysnapping Si los valores no coinciden con el intervalo esperado en función del tipo de datos, escale la imagen al intervalo esperado o ajuste para mejorar los resultados.EdgeWeightScaleFactor

Tipos de datos: single | double | int16 | uint8 | uint16

Volumen de entrada, especificado como una matriz numérica real, finita y no dispersa.

Tipos de datos: single | double | int16 | uint8 | uint16

Matriz de etiquetas de la imagen o volumen de entrada, especificada como matriz numérica. Para imágenes en escala de grises 2D e imágenes en escala de grises volumétricas 3D, el tamaño debe coincidir con el tamaño de la imagen de entrada.LUn Para imágenes en color e imágenes multicanal, debe ser una matriz 2D donde las dos primeras dimensiones coincidan con las dos primeras dimensiones de la imagen de entrada.LUn

No marque una subregión determinada de la matriz de etiquetas como perteneciente tanto a la máscara de primer plano como a la máscara de fondo. Si una región de la matriz de etiquetas contiene píxeles que pertenecen tanto a la máscara de primer plano como a la máscara de fondo, segmenta la región como fondo.lazysnapping

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Imagen de máscara que define el primer plano, especificado como una matriz lógica. Para imágenes en escala de grises 2D e imágenes en escala de grises volumétricas 3D, el tamaño debe coincidir con el tamaño de la imagen de entrada.foremaskUn Para imágenes en color e imágenes multicanal, debe ser una matriz 2D donde las dos primeras dimensiones coincidan con las dos primeras dimensiones de la imagen de entrada.foremaskUn

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Imagen de máscara que define el fondo, especificado como una matriz lógica. Para imágenes en escala de grises 2D e imágenes en escala de grises volumétricas 3D, el tamaño debe coincidir con el tamaño de la imagen de entrada.backmaskUn Para imágenes en color e imágenes multicanal, debe ser una matriz 2D donde las dos primeras dimensiones coincidan con las dos primeras dimensiones de la imagen de entrada.backmaskUn

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

El índice lineal de píxeles en la matriz de etiquetas, especificado como vector numérico.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

El índice lineal de píxeles que definen el fondo, especificado como un vector numérico.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo:

Conectividad de componentes conectados, especificada como el par separado por comas que consta de y uno de los siguientes:'Connectivity' 4 u 8, para imágenes 2D y 6, 18 o 26 para imágenes 3D (volúmenes).

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Factor de escala para ponderaciones de aristas entre las subregiones de la matriz de etiquetas, especificado como el par separado por comas que consta de un escalar positivo.'EdgeWeightScaleFactor' Los valores típicos oscilan entre [10, 1000]. Aumentar este valor aumenta la probabilidad de que las etiquetas de subregiones vecinas juntas como primer plano o fondo.lazysnapping

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Argumentos de salida

contraer todo

Imagen de salida, devuelta como una matriz numérica del mismo tamaño que la matriz de etiquetas, .L

Algoritmos

El algoritmo Lazy Snapping desarrollado por Li et al. agrupa los valores de primer plano y de fondo utilizando el método K-means. Esta implementación del algoritmo de ajuste diferido no agrupa píxeles de primer plano o de fondo similares. Para mejorar el rendimiento, reduzca el número de píxeles con valores similares que se identifican como en primer plano o en segundo plano.

Referencias

[1] Y. Li, S. Jian, C. Tang, H. Shum, Lazy Snapping In Proceedings from the 31st International Conference on Computer Graphics and Interactive Techniques, 2004.

Introducido en R2017a