Main Content

Crear formas para definir ROI

Puede crear objetos de ROI que representen varias ROI de distintas formas, incluidos círculos, elipses, polígonos, rectas, polilíneas, rectángulos y formas trazadas a mano. También puede dibujar formas trazadas a mano alzada que obtengan "ayuda" de la imagen subyacente y que sigan de forma automática el contorno de los bordes. En esta figura, se ve una ROI poligonal dibujada sobre una imagen.

Puede controlar aspectos de la posición y la apariencia de la ROI. Puede crear máscaras a partir de las ROI y realizar otras operaciones. También puede especificar cómo responde la ROI a eventos que ocurren en la ROI, como clics y movimiento del ratón.

Polygon ROI that approximates the boundary of an object in an image.

Hay tres formas de crear objetos de ROI.

  • Cree una ROI de forma interactiva utilizando una función de conveniencia de creación. Las funciones de creación permiten dibujar la ROI en una imagen. Utilice este enfoque si desconoce previamente el tamaño y la posición de la ROI, y si desea utilizar el contenido de la imagen para ayudar en la colocación de la ROI. Para obtener más información, consulte Crear una ROI utilizando funciones de conveniencia de creación.

  • Cree una ROI de forma programática, especificando información sobre el tamaño y la forma de la ROI. Utilice este enfoque si ya conoce los detalles sobre el tamaño y la forma de la ROI, como las coordenadas de los vértices del polígono o las coordenadas de los centros y el radio de un círculo.

  • Cree una ROI de forma programática y, después, utilice la función draw para dibujar interactivamente la ROI en una imagen. Utilice este enfoque si desea establecer las propiedades y el comportamiento de visualización de la ROI antes de especificar el tamaño y la posición de la ROI. La función draw también permite volver a dibujar una ROI existente conservando el aspecto de la ROI. Para obtener más información, consulte Crear una ROI utilizando la función draw.

La tabla muestra las ROI admitidas y sus respectivas funciones de conveniencia de creación.

Objeto de ROIFunción de conveniencia de creación de ROIDescripción
AssistedFreehanddrawassisted

ROI trazada a mano alzada que se ajusta a los bordes de los objetos existentes en la imagen

Assisted Freehand ROI tracing the edge of an object between selected waypoints.

Circledrawcircle

ROI circular

Blue Circle ROI drawn over a round object in an image.

Crosshairdrawcrosshair

ROI lineal que consta de dos rectas perpendiculares

A horizontal line and a vertical line intersect to form a Crosshair ROI.

Cuboiddrawcuboid

ROI cuboidal 3D

Blue Cuboid ROI drawn over a 3-D region in a point cloud.

Ellipsedrawellipse

ROI elipsoidal

Blue Ellipse ROI drawn over a round object in an image.

Freehanddrawfreehand

ROI trazada a mano alzada que sigue la trayectoria del ratón

Freehand ROI tracing the edge of an object in an image.

Linedrawline

ROI lineal que consta de un único segmento de recta

Blue Line ROI drawn over the widest part of an object in an image.

Pointdrawpoint

ROI de puntos

Blue Point ROI drawn near the center of an object in an image.

Polygondrawpolygon

ROI poligonal que consta de un conjunto cerrado de segmentos de recta

Blue Polygon ROI with 10 vertices approximating the boundary of an object in an image.

Polylinedrawpolyline

ROI de polilíneas que consta de un conjunto abierto de segmentos de recta

Blue Polyline ROI with 12 line segments approximating the boundary of an object in an image.

Rectangledrawrectangle

ROI rectangular

Blue Rectangle ROI encompassing an object in an image.

Crear una ROI utilizando funciones de conveniencia de creación

Este ejemplo muestra cómo crear un objeto de ROI utilizando funciones de conveniencia de creación de ROI. Estas funciones permiten crear objetos de ROI de forma interactiva dibujando la ROI sobre una imagen.

Lea y muestre una imagen.

I = imread('pears.png');
imshow(I)

Este ejemplo crea una ROI elipsoidal. Puede utilizar un proceso similar para crear cualquier objeto de ROI.

Cree una ROI Elipse utilizando la función drawellipse. Personalice el aspecto de la ROI, especificando el argumento de par nombre-valor StripeColor como amarillo.

roi = drawellipse('StripeColor','y');

Inspeccione las propiedades de la ROI.

roi
roi = 
  Ellipse with properties:

           Center: [446.0000 197.0000]
         SemiAxes: [115.8836 71.6200]
    RotationAngle: 298.3342
      AspectRatio: 1.6180
            Label: ''
            Color: [0 0.4470 0.7410]
           Parent: [1×1 Axes]
          Visible: 'on'
         Selected: 0

  Show all properties

Crear una ROI utilizando la función draw

Este ejemplo muestra cómo usar la función draw para volver a dibujar una ROI existente de forma interactiva. Este enfoque es útil si desea establecer las propiedades y el comportamiento de visualización de la ROI antes de especificar el tamaño y la posición de la ROI. Por ejemplo, puede que desee crear y personalizar una ROI antes de tener un eje en el que mostrar la ROI.

Este ejemplo crea y dibuja una ROI elipsoidal. Puede utilizar un proceso similar para crear cualquier objeto de ROI.

Cree una ROI Elipse de forma programática utilizando la función images.roi.Ellipse. Especifique propiedades para personalizar la apariencia de la elipse. En este caso, el color de la cara es cian y el borde de la ROI tiene una raya roja. No especifique la posición de la ROI.

roi = images.roi.Ellipse('Color','c','StripeColor','r');

Inspeccione las propiedades de la ROI.

roi
roi = 
  Ellipse with properties:

           Center: []
         SemiAxes: []
    RotationAngle: 0
      AspectRatio: 1.6180
            Label: ''

  Show all properties

Inspeccione el eje principal de la ROI. La ROI no está dibujada, así que el eje principal está vacío.

roi.Parent
ans = 
  0×0 empty GraphicsPlaceholder array.

Lea y muestre una imagen.

I = imread('pears.png');
imshow(I)

Dibuje la ROI en la imagen utilizando la función draw. Haga clic y arrastre el cursor sobre la imagen para crear la forma elíptica. La ROI que se muestra tiene el color de la cara y de la raya que especificó al crear la ROI.

draw(roi)

Inspeccione las propiedades de la ROI. Varias propiedades de la ROI se actualizan después de dibujar.

roi
roi = 
  Ellipse with properties:

           Center: [337 107.5000]
         SemiAxes: [109.3766 67.5985]
    RotationAngle: 42.2208
      AspectRatio: 1.6180
            Label: ''
            Color: [0 1 1]
           Parent: [1×1 Axes]
          Visible: 'on'
         Selected: 0

  Show all properties

Ahora, la ROI tiene unos ejes principales. Obtenga todos los objetos de gráficas que comparten los mismos ejes principales. En este ejemplo, la ROI tiene los mismos ejes principales que la imagen que se muestra.

roi.Parent.Children
ans = 
  2×1 graphics array:

  Ellipse
  Image

Utilizar ROI en apps creadas con App Designer

Puede utilizar ROI en apps creadas con App Designer y establecer una ROI como elemento principal en un objeto UIAxes. Cuando llame a la función de creación de ROI o al utilizar el par nombre-valor 'Parent', debe especificar explícitamente el UIAxes como un argumento de entrada. Hay algunas limitaciones cuando utilice ROI en apps de esta forma:

  • El cursor del ratón no se actualiza cuando pasa por encima de la ROI. El cursor siempre es una flecha.

  • La ROI no cambia de color cuando pasa por encima.

  • El menú de hacer clic con el botón secundario de la ROI (UIContextMenu) no es compatible.

El código siguiente, aunque no es un flujo de trabajo de creación de apps habitual, muestra cómo especificar una ROI en un UIAxes en una app (UIFigure).

  1. Cree un objeto UIAxes. Cuando llama a la función uiaxes, esta crea una UIFigure automáticamente.

    uax = uiaxes;

    Empty UIFigure window

  2. Cree la ROI en el UIAxes. Llame a cualquiera de las funciones de creación de ROI, como drawcircle, o de las clases de ROI, como images.roi.Circle. Especifique el UIAxes como un argumento. Mueva el cursor sobre los ejes y haga clic y arrastre el ratón para dibujar la ROI. La forma del cursor no cambia cuando se utiliza con un UIAxes.

    h = drawcircle(uax);

    Figure window with drawn Circle ROI

    También puede crear una ROI utilizando la función de creación de objetos, como images.roi.Circle. Si utiliza los objetos, debe utilizar la función draw para definir la forma y la posición de la ROI.

Ejemplos relacionados

Más acerca de