Main Content

poly2mask

Convertir un polígono de región de interés (ROI) en una máscara de región

Descripción

ejemplo

BW = poly2mask(xi,yi,m,n) calcula una máscara binaria de región de interés (ROI) BW de tamaño m por n, a partir de un polígono de ROI con vértices en las coordenadas xi e yi. Si el polígono no está ya cerrado, poly2mask cierra el polígono automáticamente.

La función poly2mask establece los píxeles que están dentro del polígono en 1 y establece los píxeles que están fuera del polígono en 0. Para obtener más información sobre la clasificación de los píxeles en el límite de la ROI, consulte Classify Pixels That Are Partially Enclosed by ROI.

Ejemplos

contraer todo

Especifique las coordenadas x e y del polígono.

x = [63 186 54 190 63];
y = [60 60 209 204 60];

Cree la máscara especificando el tamaño de la imagen.

bw = poly2mask(x,y,256,256);

Muestre la máscara, dibujando una línea alrededor del polígono.

imshow(bw)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line.

Defina dos conjuntos de puntos aleatorios para las coordenadas x e y.

x = 256*rand(1,4);
y = 256*rand(1,4);
x(end+1) = x(1);
y(end+1) = y(1);

Cree la máscara.

bw = poly2mask(x,y,256,256);

Muestre la máscara y dibuje una línea alrededor del polígono.

imshow(bw)
hold on
plot(x,y,'b','LineWidth',2)
hold off

Figure contains an axes object. The axes object contains 2 objects of type image, line.

Argumentos de entrada

contraer todo

Coordenadas x de los vértices del polígono, especificadas como vector numérico. Las longitudes de xi e yi deben coincidir.

Tipos de datos: double

Coordenadas y de los vértices del polígono, especificadas como vector numérico. Las longitudes de xi e yi deben coincidir.

Tipos de datos: double

Número de filas en la máscara, especificado como entero no negativo.

Tipos de datos: double

Número de columnas en la máscara, especificado como entero no negativo.

Tipos de datos: double

Argumentos de salida

contraer todo

Imagen binaria, devuelta como matriz lógica de m por n.

Tipos de datos: logical

Sugerencias

  • Para especificar un polígono que incluya un conjunto rectangular determinado de píxeles, haga que los bordes del polígono se sitúen a lo largo de los bordes exteriores de los píxeles delimitadores, en lugar del centro de los píxeles.

    Por ejemplo, para incluir los píxeles de las columnas 4 a 10 y de las filas 4 a 10, podría especificar los vértices del polígono así:

    x = [4 10 10 4 4];
    y = [4 4 10 10 4];
    mask = poly2mask(x,y,12,12)
    mask =
    
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     1     1     1     1     1     1     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0

    En este ejemplo, el polígono pasa por el centro de los píxeles delimitadores, con el resultado de que solo se determina que algunos de los píxeles delimitadores deseados están dentro del polígono (los píxeles de la fila 4 y la columna 4 y no en el polígono). Para incluir estos elementos en el polígono, utilice valores fraccionarios para especificar el borde exterior de la 4ª fila (3,5) y la 10ª fila (10,5), y el borde exterior de la 4ª columna (3,5) y el borde exterior de la 10ª columna (10,5) como vértices, como en el siguiente ejemplo:

    x = [3.5 10.5 10.5 3.5 3.5];
    y = [3.5 3.5 10.5 10.5 3.5];
    mask = poly2mask(x,y,12,12)
    mask =
    
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     1     1     1     1     1     1     1     0     0
         0     0     0     0     0     0     0     0     0     0     0     0
         0     0     0     0     0     0     0     0     0     0     0     0

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a