Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

superpixels

Sobresegmentación de superpíxeles 2D de imágenes

Descripción

ejemplo

[L,numLabels] = superpixels(A,N) calcula los superpíxeles de la imagen 2D en escala de grises o RGB A. N especifica el número de superpíxeles que desea crear. La función devuelve la matriz de etiquetas L y el número real de superpíxeles calculado (numLabels).

La función superpixels utiliza el algoritmo de agrupación iterativa lineal simple (SLIC) [1]. Este algoritmo agrupa píxeles en regiones con valores similares. Utilizar estas regiones en las operaciones de procesamiento de imágenes, como la segmentación, puede reducir la complejidad de estas operaciones.

[L,numLabels] = superpixels(A,N,Name=Value) calcula los superpíxeles de la imagen A utilizando argumentos de nombre-valor para controlar aspectos de la segmentación.

Ejemplos

contraer todo

Lea una imagen en el área de trabajo.

A = imread('kobi.png');

Calcule los superpíxeles de la imagen.

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

Muestre los límites de los superpíxeles superpuestos en la imagen original.

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

Figure contains an axes object. The axes object contains an object of type image.

Establezca el color de cada píxel en la imagen de salida en el color RGM medio de la región de superpíxeles.

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)

Figure contains an axes object. The axes object contains an object of type image.

Argumentos de entrada

contraer todo

Imagen que se desea segmentar, especificada como imagen 2D en escala de grises o imagen 2D en color verdadero. Para los datos int16, A debe ser una imagen en escala de grises. Cuando el parámetro isInputLab es true, la imagen de entrada debe ser de tipo de datos single o double.

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

Número deseado de superpíxeles, especificado como entero positivo.

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

Argumentos de par nombre-valor

Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN, donde Name es el nombre del argumento y Value es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.

Ejemplo: B = superpixels(A,100,NumIterations=20); lleva a cabo veinte iteraciones.

En las versiones anteriores a la R2021a, use comas para separar cada nombre y valor, y encierre Name entre comillas.

Ejemplo: B = superpixels(A,100,"NumIterations",20);

Forma de los superpíxeles, especificada como número positivo. El parámetro de compactibilidad del algoritmo SLIC controla la forma de los superpíxeles. Un valor más alto hace que los superpíxeles tengan una forma más regular, es decir, un cuadrado. Un valor más bajo hace que los superpíxeles se ajusten mejor a los límites, lo que hace que tengan formas irregulares. Los valores frecuentes de compactibilidad están en el intervalo [1, 20].

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

Los datos de la imagen de entrada están en el espacio de color L*a*b*, especificados como true o false.

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

Algoritmo utilizado para calcular superpíxeles, especificado con uno de los siguientes valores. La función superpixels utiliza dos variaciones del algoritmo de agrupación iterativa lineal simple (SLIC).

Valor

Significado

"slic0"

superpixels utiliza el algoritmo SLIC0 para mejorar la Compactness de forma adaptativa tras la primera iteración. Esta es la opción por defecto.

"slic"

Compactness es constante durante la agrupación.

Tipos de datos: char | string

Número de iteraciones utilizadas en la fase de agrupación del algoritmo, especificado como entero positivo. En la mayoría de problemas, no es necesario ajustar este parámetro.

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

Argumentos de salida

contraer todo

Matriz de etiquetas, devuelta como arreglo de enteros positivos. El valor 1 indica la primera región, 2, la segunda región, y así sucesivamente con cada región de superpíxeles de la imagen.

Tipos de datos: double

Número de superpíxeles calculados, devuelto como entero positivo.

Tipos de datos: double

Referencias

[1] Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Susstrunk, SLIC Superpixels Compared to State-of-the-art Superpixel Methods. IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 34, Issue 11, pp. 2274-2282, May 2012

Capacidades ampliadas

Historial de versiones

Introducido en R2016a

expandir todo