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.

poly2mask

Conversión de región de interés (ROI) polígono a máscara de región

Sintaxis

BW = poly2mask(xi,yi,m,n)

Descripción

ejemplo

BW = poly2mask(xi,yi,m,n) computa un área binaria de interés (ROI) Mask, BW, de tamaño m-por-n, de un polígono de ROI con vértices en las coordenadas xi y yi. poly2mask cierra el polígono automáticamente, si el Polígono no está ya cerrado.

La función poly2mask establece los píxeles que están dentro del polígono en 1 y establece los píxeles fuera del polígono en 0. Para obtener más información acerca de la clasificación de píxeles que están parcialmente encerrados por el ROI, consulte Algoritmo.

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 que especifica el tamaño de la imagen.

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

Muestra la máscara, trazando una línea alrededor del polígono.

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

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);

Crear la máscara.

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

Mostrar la máscara y trazar una línea alrededor del polígono.

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

Argumentos de entrada

contraer todo

x-o y-coordenada de vértices poligonales, especificada como un vector numérico. La longitud de xi y yi debe coincidir.

Tipos de datos: double

Número de filas de la máscara, especificada como un entero positivo.

Tipos de datos: double

Número de columnas de la máscara, especificada como un entero positivo.

Tipos de datos: double

Argumentos de salida

contraer todo

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

Tipos de datos: logical

Sugerencias

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

    Por ejemplo, para incluir píxeles en las columnas 4 a 10 y filas 4 a 10, puede especificar los vértices del polígono como éste:

    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 sólo algunos de los píxeles delimitadores deseados están determinados a estar dentro del polígono (los píxeles en la fila 4 y en 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 4ta fila (3,5) y la décima fila (10,5), y el borde exterior de la 4ta columna (3,5) y el borde exterior de la décima 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

Algoritmos

Al crear una máscara de región de interés (ROI), poly2mask debe determinar qué píxeles se incluyen en la región. Esta determinación puede ser difícil cuando los píxeles en el borde de una región sólo están parcialmente cubiertos por la línea fronteriza. La siguiente figura ilustra una región triangular de interés, examinando en primer plano uno de los vértices del ROI. La figura muestra cómo los píxeles pueden estar parcialmente cubiertos por el borde de una región de interés.

Los píxeles en el borde de un ROI sólo están parcialmente cubiertos por la frontera

Para determinar qué píxeles se encuentran en la región, poly2mask utiliza el siguiente algoritmo:

  1. Divida cada píxel en una cuadrícula de subpíxeles de 5 por 5.

    La figura muestra el píxel que contiene el vértice del ROI que se muestra anteriormente con esta cuadrícula de subpíxeles de 5 por 5.

  2. Ajusta la posición de los vértices.

    poly2mask mueve cada vértice del polígono a la intersección más cercana de la cuadrícula de subpíxeles. Observe cómo poly2mask redondea las coordenadas x y y a la esquina de cuadrícula de subpíxeles más cercana. Esto crea un segundo polígono modificado. La figura muestra el vértice modificado con una "X" roja.

  3. Traza un camino entre los vértices ajustados.

    poly2mask forma una ruta desde cada vértice ajustado al siguiente, siguiendo los bordes de la cuadrícula de subpíxeles. La figura muestra una porción de este polígono modificado por las líneas oscuras gruesas.

  4. Determine qué píxeles del borde están dentro del polígono.

    poly2mask utiliza la siguiente regla para determinar los píxeles fronterizos dentro del polígono: Si el subpíxel central del píxel está dentro de los límites definidos por la ruta entre los vértices ajustados, el píxel se encuentra dentro de la región.

    En la siguiente figura, los subpíxeles centrales de los píxeles del borde del ROI se sombrean con un color gris oscuro. Los píxeles dentro del polígono se sombrean con un color gris más claro. Tenga en cuenta que el píxel que contiene el vértice no forma parte del ROI porque su píxel central no está dentro del polígono modificado.

Consulte también

|

Introducido antes de R2006a