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.
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óndraw
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 ROI | Función de conveniencia de creación de ROI | Descripción |
---|---|---|
AssistedFreehand | drawassisted | ROI trazada a mano alzada que se ajusta a los bordes de los objetos existentes en la imagen
|
Circle | drawcircle | ROI circular
|
Crosshair | drawcrosshair | ROI lineal que consta de dos rectas perpendiculares |
Cuboid | drawcuboid | ROI cuboidal 3D
|
Ellipse | drawellipse | ROI elipsoidal |
Freehand | drawfreehand | ROI trazada a mano alzada que sigue la trayectoria del ratón
|
Line | drawline | ROI lineal que consta de un único segmento de recta
|
Point | drawpoint | ROI de puntos
|
Polygon | drawpolygon | ROI poligonal que consta de un conjunto cerrado de segmentos de recta
|
Polyline | drawpolyline | ROI de polilíneas que consta de un conjunto abierto de segmentos de recta
|
Rectangle | drawrectangle | ROI rectangular
|
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
).
Cree un objeto
UIAxes
. Cuando llama a la funciónuiaxes
, esta crea unaUIFigure
automáticamente.uax = uiaxes;
Cree la ROI en el
UIAxes
. Llame a cualquiera de las funciones de creación de ROI, comodrawcircle
, o de las clases de ROI, comoimages.roi.Circle
. Especifique elUIAxes
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 unUIAxes
.h = drawcircle(uax);
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óndraw
para definir la forma y la posición de la ROI.