Contenido principal

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.

drawfreehand

Crear una ROI a mano alzada personalizable

Descripción

La función drawfreehand crea un objeto Freehand que especifica la forma y la posición de una región de interés (ROI) a mano alzada. Puede crear la ROI de forma interactiva dibujándola sobre una imagen con el ratón o de forma programática utilizando argumentos de nombre-valor. También puede especificar la apariencia inicial y el comportamiento de la ROI.

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

Después de crear la ROI, puede utilizar las propiedades del objeto, sus funciones y las notificaciones de eventos para personalizar su forma, posición, apariencia y comportamiento. Para obtener más información sobre estas prestaciones, consulte Consejos.

h = drawfreehand crea un objeto Freehand y permite dibujar de forma interactiva una región de interés (ROI) circular en los ejes actuales.

Para dibujar la ROI, sitúe el puntero sobre la imagen. El puntero cambia a una forma de flor. Haga clic y arrastre para dibujar la línea. Para completarla, suelte el ratón. Para obtener más información sobre el uso de la ROI, incluidos los atajos de teclado y las opciones del menú contextual, consulte Consejos.

ejemplo

h = drawfreehand(ax) crea la ROI en los ejes especificados por ax.

h = drawfreehand(___,Name=Value) modifica la apariencia y el comportamiento de la ROI usando uno o más argumentos nombre-valor.

Ejemplos

contraer todo

Lea una imagen en el área de trabajo y muéstrela.

imshow(imread('yellowlily.jpg'))

Dibuje una ROI a mano alzada.

h = drawfreehand;

Rellene la cara de la ROI a mano alzada y deshabilite la opción de seleccionar la ROI. La ROI no se mueve cuando hace clic y arrastra el ratón.

h.FaceAlpha = 1;
h.FaceSelectable = false;

Lea una imagen en el área de trabajo.

I = imread('cameraman.tif');

Muestre la imagen.

imshow(I);

Dibuje una ROI a mano alzada en la imagen.

roi = drawfreehand('Color','r');

Configure receptores de eventos de ROI en movimiento. Cuando la mueve, la ROI envía notificaciones de estos eventos y ejecuta la función de callback que especifique.

addlistener(roi,'MovingROI',@allevents);
addlistener(roi,'ROIMoved',@allevents);

La función de callback allevents muestra la posición anterior y la posición actual de la ROI.

function allevents(src,evt)
    evname = evt.EventName;
    switch(evname)
        case{'MovingROI'}
            disp(['ROI moving previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['ROI moving current position: ' mat2str(evt.CurrentPosition)]);
        case{'ROIMoved'}
            disp(['ROI moved previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['ROI moved current position: ' mat2str(evt.CurrentPosition)]);
    end
end

Argumentos de entrada

contraer todo

Objeto principal de la ROI, especificado como un objeto Axes o un objeto UIAxes. Para obtener información sobre el uso de una ROI en un conjunto de ejes de la interfaz de usuario, incluidas limitaciones importantes, consulte Utilizar ROI en apps creadas con App Designer.

Argumentos de par nombre-valor

expandir todo

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: h = drawfreehand(Color="y") crea un objeto Freehand de color amarillo.

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

Ejemplo: h = drawfreehand("Color","y") crea un objeto Freehand de color amarillo.

Forma y posición

expandir todo

Cierre de la ROI a mano alzada, especificado como 1 (true) o 0 (false) numérico o lógico. Cuando sea true, la función drawfreehand cierra la ROI conectando el último punto de referencia dibujado con el primer punto de referencia dibujado.

Posición de la ROI, especificada como matriz numérica de n por 2 donde n es el número de vértices o puntos que definen la ROI. Cada fila representa las coordenadas [x y] de un vértice o punto.

Suavizado aplicado al borde de la ROI después de la colocación interactiva, especificado como número no negativo. La función drawfreehand filtra las coordenadas x e y de la ROI usando un núcleo de suavizado gaussiano con una desviación estándar predeterminada de 1. El tamaño del filtro gaussiano es 2*ceil(2*Smoothing)+1. Solo puede ver el efecto del suavizado después de completar el dibujo.

El punto de posición es un waypoint, especificado como un vector lógico de n por 1 donde n es el número de puntos que definen la ROI. La longitud de Waypoints debe coincidir con el número de filas del argumento nombre-valor Position. Los elementos de Waypoints con el valor true identifican los puntos de la matriz Position que son puntos de referencia.

Los puntos de referencia aparecen como formas circulares en el borde de la ROI. Puede usar puntos de referencia para remodelar la ROI haciendo clic y arrastrando el punto de referencia con el ratón. Si se mueven los puntos de referencia se modifica la región dibujada a mano alzada entre el punto de referencia en el que ha hecho clic y los puntos de referencia adyacentes.

Color y estilo

expandir todo

Color de la ROI, especificado como triplete RGB, nombre de color o nombre corto de color.

Puede especificar cualquier color utilizando un triplete RGB. Un triplete RGB es un vector fila de 3 elementos cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el intervalo [0, 1].

Puede especificar algunos colores habituales por su nombre como un escalar de cadena o un vector de caracteres. En esta tabla se enumeran las opciones de color con nombre y los tripletes RGB equivalentes.

Nombre del colorNombre cortoTriplete RGBApariencia
"red""r"[1 0 0]

A rectangle colored pure red

"green""g"[0 1 0]

A rectangle colored pure green

"blue""b"[0 0 1]

A rectangle colored pure blue

"cyan" "c"[0 1 1]

A rectangle colored pure cyan

"magenta""m"[1 0 1]

A rectangle colored pure magenta

"yellow""y"[1 1 0]

A rectangle colored pure yellow

"black""k"[0 0 0]

A rectangle colored black

"white""w"[1 1 1]

A rectangle colored white

Aquí están los tripletes RGB para los colores por defecto que MATLAB® utiliza en muchos tipos de gráficas.

Triplete RGBApariencia
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Ejemplo: Color="r"

Ejemplo: Color="green"

Ejemplo: Color=[0 0.4470 0.7410]

Transparencia de la cara de la ROI, especificada como número en el intervalo [0, 1]. Cuando el valor es 1, la cara de la ROI es completamente opaca. Cuando el valor es 0, la cara de la ROI es completamente transparente.

Ancho del borde de la ROI, especificado como número positivo en puntos. El valor predeterminado es tres veces el número de puntos por píxel de pantalla, de modo que el borde tiene tres píxeles de ancho.

Tamaño del marcador, especificado como número positivo en puntos. El valor predeterminado es ocho veces el número de puntos por píxel de pantalla, de modo que los marcadores tienen un tamaño de ocho píxeles.

Color de la ROI cuando se selecciona, especificado como triplete RGB, nombre de color, nombre corto de color o "none". Si especifica "none", el valor de Color define el color de la ROI en todos los estados, seleccionados o no.

Puede especificar cualquier color utilizando un triplete RGB. Un triplete RGB es un vector fila de 3 elementos cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el intervalo [0, 1].

Puede especificar algunos colores habituales por su nombre como un escalar de cadena o un vector de caracteres. En esta tabla se enumeran las opciones de color con nombre y los tripletes RGB equivalentes.

Nombre del colorNombre cortoTriplete RGBApariencia
"red""r"[1 0 0]

A rectangle colored pure red

"green""g"[0 1 0]

A rectangle colored pure green

"blue""b"[0 0 1]

A rectangle colored pure blue

"cyan" "c"[0 1 1]

A rectangle colored pure cyan

"magenta""m"[1 0 1]

A rectangle colored pure magenta

"yellow""y"[1 1 0]

A rectangle colored pure yellow

"black""k"[0 0 0]

A rectangle colored black

"white""w"[1 1 1]

A rectangle colored white

Aquí están los tripletes RGB para los colores por defecto que MATLAB utiliza en muchos tipos de gráficas.

Triplete RGBApariencia
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Ejemplo: SelectedColor="r"

Ejemplo: SelectedColor="green"

Ejemplo: SelectedColor=[0 0.4470 0.7410]

Color del borde de la ROI, especificado como triplete RGB, nombre de color, nombre corto de color o "none". Si especifica "none", el borde de la ROI es un color sólido especificado por Color. De lo contrario, el borde de la ROI aparece a rayas, con colores que van alternando entre los especificados por Color y StripeColor.

Puede especificar cualquier color utilizando un triplete RGB. Un triplete RGB es un vector fila de 3 elementos cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el intervalo [0, 1].

Puede especificar algunos colores habituales por su nombre como un escalar de cadena o un vector de caracteres. En esta tabla se enumeran las opciones de color con nombre y los tripletes RGB equivalentes.

Nombre del colorNombre cortoTriplete RGBApariencia
"red""r"[1 0 0]

A rectangle colored pure red

"green""g"[0 1 0]

A rectangle colored pure green

"blue""b"[0 0 1]

A rectangle colored pure blue

"cyan" "c"[0 1 1]

A rectangle colored pure cyan

"magenta""m"[1 0 1]

A rectangle colored pure magenta

"yellow""y"[1 1 0]

A rectangle colored pure yellow

"black""k"[0 0 0]

A rectangle colored black

"white""w"[1 1 1]

A rectangle colored white

Aquí están los tripletes RGB para los colores por defecto que MATLAB utiliza en muchos tipos de gráficas.

Triplete RGBApariencia
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Ejemplo: StripeColor="r"

Ejemplo: StripeColor="green"

Ejemplo: StripeColor=[0 0.4470 0.7410]

Visibilidad de la ROI, especificada como "on" u "off", o como un 0 (false) o un 1 (true) numérico o lógico. El valor "on" equivale a true y "off" equivale a false. El valor se almacena como un valor lógico on/off de tipo OnOffSwitchState.

ValorDescripción
"on"Muestra la ROI.
"off"Oculta la ROI sin eliminarla. Es posible acceder a las propiedades de una ROI invisible.

Etiquetas

expandir todo

Etiqueta de la ROI, especificada como vector de caracteres o escalar de cadena. De forma predeterminada, la ROI no tiene etiqueta ('').

Transparencia del fondo del texto, especificada como número en el intervalo [0, 1]. Cuando se establece en 1, el fondo del texto es completamente opaco. Cuando se establece en 0, el fondo del texto es completamente transparente.

Color del texto de la etiqueta, especificado como triplete RGB, nombre de color o nombre corto de color.

Puede especificar cualquier color utilizando un triplete RGB. Un triplete RGB es un vector fila de 3 elementos cuyos elementos especifican las intensidades de los componentes rojo, verde y azul del color. Las intensidades deben estar en el intervalo [0, 1].

Puede especificar algunos colores habituales por su nombre como un escalar de cadena o un vector de caracteres. En esta tabla se enumeran las opciones de color con nombre y los tripletes RGB equivalentes.

Nombre del colorNombre cortoTriplete RGBApariencia
"red""r"[1 0 0]

A rectangle colored pure red

"green""g"[0 1 0]

A rectangle colored pure green

"blue""b"[0 0 1]

A rectangle colored pure blue

"cyan" "c"[0 1 1]

A rectangle colored pure cyan

"magenta""m"[1 0 1]

A rectangle colored pure magenta

"yellow""y"[1 1 0]

A rectangle colored pure yellow

"black""k"[0 0 0]

A rectangle colored black

"white""w"[1 1 1]

A rectangle colored white

Aquí están los tripletes RGB para los colores por defecto que MATLAB utiliza en muchos tipos de gráficas.

Triplete RGBApariencia
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Ejemplo: LabelTextColor="r"

Ejemplo: LabelTextColor="green"

Ejemplo: LabelTextColor=[0 0.4470 0.7410]

Visibilidad de etiquetas, especificada como uno de estos valores.

ValorDescripción
"on"La etiqueta está visible cuando la ROI también lo está.
"hover"La etiqueta solo está visible solo cuando se pasa el ratón por encima de la ROI.
"off"La etiqueta no está visible.

Interactividad

expandir todo

Menú contextual que aparece al hacer clic con el botón secundario en la ROI, especificado como objeto ContextMenu. Puede crear un menú contextual personalizado utilizando la función uicontextmenu y configurando después las propiedades del menú contextual.

El menú contextual proporciona una opción para eliminar la ROI, especificada como un 1 numérico o lógico (true) o un 0 (false). Cuando el valor es true, puede eliminar la ROI de forma interactiva mediante el menú contextual. Cuando el valor es false, la opción del menú contextual para eliminar la ROI está desactivada.

En ambos casos, puede eliminar la ROI fuera del menú contextual utilizando la función delete.

Área de los ejes en la que puede colocar de forma interactiva la ROI, especificada como uno de los valores de esta tabla.

ValorDescripción
"auto"El área de dibujo son los límites actuales de los ejes (valor predeterminado).
"unlimited"El área de dibujo no tiene límites y las ROI se pueden dibujar o arrastrar para que se extiendan más allá de los límites de los ejes.
[x,y,w,h]El área de dibujo se restringe a una región rectangular que comienza en (x, y) y se extiende hasta w de ancho y h de alto.

La cara de la ROI puede capturar clics, especificado como un 1 numérico o lógico (true) o un 0 (false). Cuando el valor es true, la cara de la ROI captura los clics del ratón. Cuando el valor es false, la cara de la ROI no captura los clics del ratón.

Interactividad de la ROI, especificada como uno de los valores de esta tabla.

ValorDescripción
"all"Puede interactuar totalmente con la ROI. Remodele la ROI modificando la posición de vértices individuales o traslade (mueva) toda la ROI.
"none"No puede interactuar con la ROI ni acceder al menú contextual. No hay puntos de arrastre visibles.
"translate"Puede mover toda la ROI dentro del área de dibujo. La posición relativa de los vértices es fija y no puede remodelar la ROI.
"reshape"Puede remodelar la ROI modificando la posición de vértices individuales. No puede mover la ROI.

Puede acceder al menú contextual para todos los valores de InteractionsAllowed excepto "none".

Control del estilo de dibujo a mano alzada durante la colocación interactiva, especificado como 0 (false) o 1 (true) numérico o lógico. Cuando el valor es false, la ROI a mano alzada se completa con un solo clic y arrastrando. Cuando el valor es true, se pueden combinar varios clics y arrastres con bordes rectos para crear una forma de ROI a mano alzada más compleja.

Estado de selección de la ROI, especificado como "off" u "on", o como un 0 (false) o un 1 (true) numérico o lógico. El valor "off" equivale a false y "on" equivale a true.

Principal/Secundario

expandir todo

Visibilidad del identificador de la ROI en la propiedad Children del objeto principal, especificada como uno de los valores de esta tabla.

ValorDescripción
"on"El identificador del objeto está siempre visible (valor predeterminado).
"off"El identificador del objeto está oculto en todo momento.
"callback" El identificador del objeto está visible desde los callbacks o funciones llamadas por callbacks, pero no desde las funciones llamadas desde la línea de comandos.

Objeto principal de la ROI, especificado como Axes o UIAxes. Para obtener información sobre el uso de una ROI en un conjunto de ejes de la interfaz de usuario, incluidas limitaciones importantes, consulte Utilizar ROI en apps creadas con App Designer.

Identificadores

expandir todo

Etiqueta que se asocia a la ROI, especificada como vector de caracteres o escalar de cadena. Use el valor de la etiqueta para encontrar el objeto de ROI en una jerarquía de objetos utilizando la función findobj.

Datos que se asocian a la ROI, especificados como cualquier dato de MATLAB. Por ejemplo, puede especificar un escalar, un vector, una matriz, un arreglo de celdas, una cadena, un arreglo de caracteres, una tabla o una estructura. El objeto drawfreehand no usa estos datos.

Argumentos de salida

contraer todo

ROI a mano alzada, devuelta como objeto Freehand.

Sugerencias

  • La ROI admite la siguiente interactividad, incluidos los atajos de teclado.

    ComportamientoAtajo de teclado
    Cancelar el dibujo de la ROI.Pulse Esc. La función devuelve un objeto de ROI válido con una propiedad Position vacía.
    Acabar de dibujar (cerrar) la ROI.

    Haga doble clic, lo que añade un punto en la posición del puntero y dibuja una línea que conecta este punto con el primer punto dibujado y cierra la ROI.

    Haga clic con el botón secundario, lo que dibuja una línea que conecta el último punto con el primer punto dibujado.

    Sitúe el puntero sobre el primer punto y haga clic.

    Pulse Enter, lo que dibuja una línea que conecta el último punto con el primer punto dibujado.

    Redimensionar (remodelar) la ROI.

    Sitúe el puntero sobre un punto de referencia y, después, haga clic y arrastre. En este modo no hay asistencia disponible (ajuste a los bordes).

    Añadir un punto de referencia.

    Sitúe el puntero sobre el borde de la ROI, haga clic con el botón secundario y seleccione Add Waypoint. También puede situar el puntero sobre un borde de la ROI y hacer doble clic.

    Eliminar un punto de referencia.

    Sitúe el puntero sobre un punto de referencia, haga clic con el botón secundario y seleccione Remove Waypoint.

    Mover la ROI.Sitúe el puntero sobre la ROI. El puntero cambia a una forma de flor. Haga clic y arrastre para mover la ROI.
    Eliminar una ROI.Sitúe el puntero sobre la ROI (no en un vértice), haga clic con el botón secundario y seleccione Delete Freehand en el menú contextual. También puede eliminar la ROI de forma programática utilizando la función delete.
  • La función drawfreehand crea un objeto Freehand. Después de crear el objeto, puede modificar la forma, posición, apariencia y comportamiento de la ROI mediante las siguientes funcionalidades del objeto.

    PrestaciónSoporte
    Propiedades del objeto

    Los objetos de ROI tienen propiedades que especifican su forma, posición, apariencia y comportamiento. Después de crear el objeto de ROI, cambie las propiedades utilizando la notación de puntos.

    Por ejemplo, para cambiar el color de roi a amarillo, configure la propiedad Color:

    roi.Color = 'yellow'

    Funciones de objetoLos objetos de ROI tienen funciones de objeto que operan sobre las ROI. Por ejemplo, si desea pausar la línea de comandos de MATLAB después de crear una ROI, utilice la función wait.
    Notificaciones de eventos

    Los objetos de ROI pueden notificar al código cuando se producen ciertos eventos, como cuando se hace clic en la ROI o cuando la ROI se mueve. Para recibir notificaciones de eventos, configure receptores. Cuando la ROI notifica a su aplicación a través del receptor, devuelve datos específicos del evento. Por ejemplo, con el evento ROIMoved, el objeto de ROI devuelve su posición anterior y su posición actual. Puede especificar una función de callback que se ejecute cuando se produzca un evento.

    Para ver un ejemplo de cómo utilizar receptores de eventos con el objeto Freehand, consulte Configurar receptor de eventos de ROI a mano alzada.

Historial de versiones

Introducido en R2018b

expandir todo