regionprops
Medir propiedades de regiones de imágenes
Sintaxis
Descripción
La función regionprops
mide propiedades como el área, los centroides y el cuadro delimitador de cada uno de los objetos (componentes conectados) de una imagen. regionprops
es compatible con las regiones contiguas y no contiguas.
Nota
Para medir las propiedades de los objetos de una imagen volumétrica 3D, considere utilizar regionprops3
. Aunque regionprops
puede aceptar imágenes 3D, regionprops3
es compatible con más estadísticas para las imágenes 3D.
Al llamar a la función regionprops
, omita el argumento properties
y la función devolverá las mediciones de "Area"
, "Centroid"
y "BoundingBox"
.
mide las propiedades de cada uno de los objetos de la imagen binaria stats
= regionprops(BW
,properties
)BW
.
regionprops
encuentra objetos únicos en imágenes binarias utilizando entornos de conectividad 8 para imágenes 2D y una conectividad máxima para imágenes de una dimensión superior. Para obtener más información, consulte Conectividad de píxeles. Para encontrar objetos utilizando otros tipos de conectividad, utilice bwconncomp
para crear los componentes conectados y luego pase el resultado a regionprops
utilizando el argumento CC
.
mide las propiedades de cada componente conectado en stats
= regionprops(CC
,properties
)CC
, que es una estructura devuelta por bwconncomp
.
mide las propiedades para cada región etiquetada en la imagen de etiqueta stats
= regionprops(L
,properties
)L
.
especifica el formato de las mediciones devueltas como un arreglo de estructuras o una tabla, utilizando el argumento stats
= regionprops(outputFormat
,___)outputFormat
.
Ejemplos
Calcular los centroides y superponer las ubicaciones en una imagen
Lea una imagen binaria en el espacio de trabajo.
BW = imread('text.png');
Calcule los centroides para los componentes conectados de la imagen mediante regionprops
. La función regionprops
devuelve los centroides en un arreglo de estructuras.
s = regionprops(BW,'centroid');
Guarde las coordenadas x e y de los centroides en una matriz de dos columnas.
centroids = cat(1,s.Centroid);
Muestre la imagen binaria con las ubicaciones de los centroides superpuestas.
imshow(BW) hold on plot(centroids(:,1),centroids(:,2),'b*') hold off
Estimar el centro y los radios de objetos circulares y representar círculos
Estime el centro y los radios de los objetos circulares en una imagen y utilice esta información para representar círculos en la imagen. En este ejemplo, regionprops
devuelve las propiedades de la región medidas en una tabla.
Lea una imagen en el espacio de trabajo.
a = imread("circlesBrightDark.png");
Convierta la imagen de entrada en una imagen binaria.
bw = a < 50;
imshow(bw)
title("Image with Circles")
Calcule las propiedades de las regiones en la imagen y devuelva los datos en una tabla.
stats = regionprops("table",bw,"Centroid", ... "MajorAxisLength","MinorAxisLength")
stats=3×3 table
Centroid MajorAxisLength MinorAxisLength
________________ _______________ _______________
300 120 79.517 79.517
330.29 369.92 109.49 108.6
450 240 99.465 99.465
Obtenga los centros y los radios de los círculos.
centers = stats.Centroid; diameters = mean([stats.MajorAxisLength stats.MinorAxisLength],2); radii = diameters/2;
Represente los círculos.
hold on
viscircles(centers,radii)
ans = Group with properties: Children: [2x1 Line] Visible: on HitTest: on Show all properties
hold off
Argumentos de entrada
BW
— Imagen binaria
Arreglo lógico
Imagen binaria, especificada como arreglo de cualquier dimensión.
Tipos de datos: logical
CC
— Componentes conectados:
Estructura
Componentes conectados, especificados como una estructura devuelta por bwconncomp
.
Tipos de datos: struct
L
— Imagen de la etiqueta
Arreglo numérico | Arreglo categórico
Imagen de la etiqueta, especificada como uno de los siguientes:
Un arreglo numérico de cualquier dimensión. Los píxeles etiquetados como
0
son el fondo. Los píxeles etiquetados como1
forman un objeto; los píxeles etiquetados como2
forman un segundo objeto; y así sucesivamente.regionprops
trata los píxeles con valores negativos como fondo y redondea hacia abajo los píxeles de entrada que no sean enteros. Puede obtener una imagen de etiqueta numérica a partir de funciones de etiquetado comowatershed
olabelmatrix
.Un arreglo categórico. Cada categoría corresponde a una región diferente.
Tipos de datos: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| categorical
properties
— Tipo de medición
"basic"
(predeterminado) | lista separada por comas de escalares de cadena o vectores de caracteres | arreglo de escalares de cadena | arreglo de celdas de vectores de caracteres | "all"
Tipo de medición, especificado como una lista separada por comas de escalares de cadena o vectores de caracteres, un arreglo de escalares de cadena, un arreglo de celdas de vectores de caracteres, o como "all"
o "basic"
.
Si especifica
"all"
,regionprops
calcula todas las mediciones de la forma y, para las imágenes en escala de grises, también las mediciones del valor de los píxeles.Si especifica
"basic"
,regionprops
solo calcula las mediciones"Area"
,"Centroid"
y"BoundingBox"
.
Las siguientes tablas enumeran todas las propiedades que proporcionan mediciones de la forma. Las propiedades que aparecen en la tabla Mediciones del valor de los píxeles solo son válidas cuando se especifica una imagen en escala de grises.
Mediciones de forma
Nombre de la propiedad | Descripción | Compatibilidad con N-D | Compatibilidad con GPU | Generación de código | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
"Area" | Número real de píxeles en la región, devuelto como un escalar. Este valor puede diferir ligeramente del valor devuelto por Para encontrar el equivalente al área de un volumen 3D, utilice la propiedad | Sí | Sí | Sí | ||||||||
"BoundingBox" | Posición y tamaño del cuadro más pequeño que contiene la región, devueltos como un vector de 1 por (2*Q), donde Q es la dimensionalidad de la imagen. Los primeros elementos Q son las coordenadas de la esquina mínima del cuadro. Los segundos elementos Q son el tamaño del cuadro a lo largo de cada dimensión. Por ejemplo, un cuadro delimitador 2D con valor | Sí | Sí | Sí | ||||||||
"Centroid" | Centro de masa de la región, devuelto como un vector de 1 por Q, donde Q es la dimensionalidad de la imagen. El primer elemento de Esta figura ilustra el centroide y el cuadro delimitador de una región discontinua. La región está formada por los píxeles blancos. El recuadro verde es el cuadro delimitador y el punto rojo es el centroide.
| Sí | Sí | Sí | ||||||||
"Circularity" | Redondez de los objetos, devuelta como estructura con el campo
El valor de circularidad máximo es 1. La entrada debe ser una matriz de etiquetas o una imagen binaria con regiones contiguas. Si la imagen contiene regiones discontinuas, | Solo 2D | No | Sí | ||||||||
"ConvexArea" | Número de píxeles en ConvexImage , devuelto como un escalar. | Solo 2D | No | No | ||||||||
"ConvexHull" | El polígono convexo más pequeño que puede contener la región, devuelto como una matriz de p por 2. Cada fila de la matriz contiene las coordenadas x e y de un vértice del polígono. | Solo 2D | No | No | ||||||||
"ConvexImage" | Imagen que especifica la envolvente convexa, con todos los píxeles dentro de la envolvente rellenados (establecidos en on ), devuelta como imagen binaria. La imagen tiene el tamaño del cuadro delimitador de la región. Para los píxeles por los que pasa el límite de la envolvente, regionprops utiliza el algoritmo descrito en Classify Pixels That Are Partially Enclosed by ROI. | Solo 2D | No | No | ||||||||
"Eccentricity" | Excentricidad de la elipse que tiene los mismos segundos momentos que la región, devuelta como escalar. La excentricidad es la relación entre la distancia entre los focos de la elipse y la longitud de su eje mayor. El valor está comprendido entre 0 y 1 (0 y 1 son casos degenerados. Una elipse cuya excentricidad es 0 es en realidad un círculo, mientras que una elipse cuya excentricidad es 1 es un segmento de recta) | Solo 2D | Sí | Sí | ||||||||
"EquivDiameter" | Diámetro de un círculo con la misma área que la región, devuelto como un escalar. Calculado como sqrt(4*Area/pi) . | Solo 2D | Sí | Sí | ||||||||
"EulerNumber" | Número de objetos en la región menos el número de huecos en esos objetos, devuelto como un escalar. Esta propiedad solo es compatible con las matrices de etiquetas 2D. regionprops utiliza la conectividad 8 para calcular el número de Euler (también conocido como la característica de Euler). Para obtener más información sobre la conectividad, consulte Conectividad de píxeles. | Solo 2D | No | Sí | ||||||||
"Extent" | Relación entre los píxeles de la región y los píxeles del cuadro delimitador total, devuelta como un escalar. Se calcula como el Area dividida por el área del cuadro delimitador. | Solo 2D | Sí | Sí | ||||||||
"Extrema" | Puntos extremos en la región, devueltos como una matriz de 8 por 2. Cada fila de la matriz contiene las coordenadas x e y de uno de los puntos. El formato del vector es Esta figura ilustra los extremos de dos regiones diferentes. En la región de la izquierda, cada punto extremo es distinto. Para la región de la derecha, ciertos puntos extremos (como
| Solo 2D | Sí | Sí | ||||||||
"FilledArea" | Número de píxeles on en FilledImage , devuelto como un escalar. | Sí | No | Sí | ||||||||
"FilledImage" | Imagen del mismo tamaño que el cuadro delimitador de la región, devuelto como un arreglo binario. Los píxeles
| Sí | No | Sí | ||||||||
"Image" | Imagen del mismo tamaño que el cuadro delimitador de la región, devuelta como un arreglo binario. Los píxeles on corresponden a la región, y todos los demás píxeles están off . | Sí | Sí | Sí | ||||||||
"MajorAxisLength" | Longitud (en píxeles) del eje mayor de la elipse que tiene los mismos segundos momentos centrales normalizados que la región, devuelta como un escalar. | Solo 2D | Sí | Sí | ||||||||
"MaxFeretProperties" | Propiedades de Feret que incluyen el diámetro máximo de Feret, su ángulo relativo y los valores de las coordenadas, devueltas como una estructura con los campos:
La entrada puede ser una imagen binaria, un componente conectado o una matriz de etiquetas. | Solo 2D | No | No | ||||||||
"MinFeretProperties" | Propiedades de Feret que incluyen el diámetro mínimo de Feret, su ángulo relativo y los valores de las coordenadas, devueltas como una estructura con los campos:
La entrada puede ser una imagen binaria, un componente conectado o una matriz de etiquetas. | Solo 2D | No | No | ||||||||
"MinorAxisLength" | Longitud (en píxeles) del eje menor de la elipse que tiene los mismos segundos momentos centrales normalizados que la región, devuelta como un escalar. | Solo 2D | Sí | Sí | ||||||||
"Orientation" | Ángulo entre el eje x y el eje mayor de la elipse que tiene los mismos segundos momentos que la región, devuelto como un escalar. El valor se muestra en grados, y está comprendido entre -90 grados y 90 grados. Esta figura ilustra los ejes y la orientación de la elipse. La parte izquierda de la figura muestra una región de la imagen y su correspondiente elipse. El lado derecho muestra la misma elipse con las líneas azules sólidas que representan los ejes. Los puntos rojos son los focos. La orientación es el ángulo entre la línea de puntos horizontal y el eje mayor.
| Solo 2D | Sí | Sí | ||||||||
"Perimeter" | Distancia alrededor del límite de la región devuelta como un escalar.
| Solo 2D | No | Sí | ||||||||
"PixelIdxList" | Índices lineales de los píxeles de la región, devueltos como un vector de p elementos. | Sí | Sí | Sí | ||||||||
"PixelList" | Ubicación de los píxeles en la región, devuelta como una matriz de p por Q . Cada fila de la matriz tiene la forma [x y z ...] y especifica las coordenadas de un píxel de la región. | Sí | Sí | Sí | ||||||||
"Solidity" | Proporción de los píxeles en la envolvente convexa que también están en la región, devuelta como un escalar. La solidez se calcula como
| Solo 2D | No | No | ||||||||
"SubarrayIdx" | Los elementos de L dentro del cuadro delimitador del objeto, devueltos como un arreglo de celdas que contiene índices tales que L(idx{:}) extrae los elementos. | Sí | Sí | No |
Las propiedades de medición del valor de los píxeles de la siguiente tabla solo son válidas cuando se especifica una imagen en escala de grises, I
.
Mediciones del valor de los píxeles
Nombre de la propiedad | Descripción | Compatibilidad con N-D | Compatibilidad con GPU | Generación de código |
---|---|---|---|---|
"MaxIntensity" | Valor del píxel con la mayor intensidad en la región, devuelto como un escalar. | Sí | Sí | Sí |
"MeanIntensity" | Media de todos los valores de intensidad de la región, devuelta como un escalar. | Sí | Sí | Sí |
"MinIntensity" | Valor del píxel con la menor intensidad de la región, devuelto como un escalar. | Sí | Sí | Sí |
"PixelValues" | Número de píxeles en la región, devuelto como un vector de p por 1, donde p es el número de píxeles de la región. Cada elemento del vector contiene el valor de un píxel de la región. | Sí | Sí | Sí |
"WeightedCentroid" | Centro de la región basado en la ubicación y el valor de la intensidad, devuelto como un vector de p por Q de coordenadas. El primer elemento de WeightedCentroid es la coordenada horizontal (o coordenada x) del centroide ponderado. El segundo elemento es la coordenada vertical (o coordenada y). Todos los otros elementos de WeightedCentroid se encuentran en orden de dimensión. | Sí | Sí | Sí |
Tipos de datos: char
| string
| cell
I
— Imagen que se desea medir
Imagen en escala de grises
Imagen que se desea medir, especificada como una imagen en escala de grises. El tamaño de la imagen debe coincidir con el tamaño de la imagen binaria BW
, de la estructura de componentes conectados CC
o de la imagen de la etiqueta L
.
Tipos de datos: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
outputFormat
— Formato de salida
"struct"
(predeterminado) | "table"
Formato de salida de los valores de medición stats
, especificado como uno de los valores siguientes.
Valor | Descripción |
---|---|
"struct" | Devuelve un arreglo de estructuras con una longitud igual al número de objetos en BW , o max( . Los campos del arreglo de estructuras denotan diferentes propiedades para cada región, como se especifica en properties . |
"table" | Devuelve una |
Tipos de datos: char
| string
Argumentos de salida
stats
— Valores de medición
arreglo struct
(predeterminado) | tabla
Valores de medición, devueltos como un arreglo de estructuras o una tabla. El número de estructuras en el arreglo o el número de filas en la tabla es igual al número de objetos en BW
, CC.NumObjects
, o max(L(:))
. Los campos de cada estructura o las variables de cada fila denotan las propiedades calculadas para cada región, como se especifica en properties
. Si la imagen de entrada es una imagen de etiqueta categórica L
, stats
incluye un campo o variable adicional con la propiedad "LabelName"
.
Más acerca de
Regiones contiguas y regiones discontinuas
Las regiones contiguas también se denominan objetos, componentes conectados o blobs. Una imagen de etiqueta L
que contenga regiones contiguas podría tener este aspecto:
1 1 0 2 2 0 3 3 1 1 0 2 2 0 3 3
Los elementos de L
iguales a 1 pertenecen a la primera región contigua o componente conectado; los elementos de L
iguales a 2 pertenecen al segundo componente conectado; y así sucesivamente.
Las regiones discontinuas son regiones que pueden contener varios componentes conectados. Una imagen de etiqueta que contenga regiones discontinuas podría tener este aspecto:
1 1 0 1 1 0 2 2 1 1 0 1 1 0 2 2
L
iguales a 1 pertenecen a la primera región, que es discontinua y contiene dos componentes conectados. Los elementos de L
iguales a 2 pertenecen a la segunda región, que es un único componente conectado. Sugerencias
La función
ismember
es útil para crear una imagen binaria que contenga solo objetos o regiones que cumplan ciertos criterios. Por ejemplo, estos comandos crean una imagen binaria que contiene solo las regiones cuya área es superior a 80 y cuya excentricidad es inferior a 0,8.cc = bwconncomp(BW); stats = regionprops(cc,"Area","Eccentricity"); idx = find([stats.Area] > 80 & [stats.Eccentricity] < 0.8); BW2 = ismember(labelmatrix(cc),idx);
regionprops
aprovecha los resultados intermedios al calcular las mediciones relacionadas. Por lo tanto, es más rápido calcular todas las mediciones deseadas en una sola llamada aregionprops
.La mayoría de las mediciones requieren poco tiempo para calcularse. Sin embargo, estas mediciones pueden llevar más tiempo, dependiendo del número de regiones en
L
:"ConvexHull"
"ConvexImage"
"ConvexArea"
"FilledImage"
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
regionprops
es compatible con la generación de código C (requiere MATLAB® Coder™). Tenga en cuenta que, si selecciona la plataforma objetivo genéricaMATLAB Host Computer
,regionprops
genera código que utiliza una biblioteca compartida precompilada específica de la plataforma. El uso de una biblioteca compartida mantiene las optimizaciones de rendimiento, pero limita las plataformas objetivo para las que se puede generar código. Para obtener más información, consulte Types of Code Generation Support in Image Processing Toolbox.Solo se admiten imágenes binarias o imágenes de etiqueta numéricas. Las imágenes de etiqueta de tipo de datos categóricos no se admiten como entrada.
No se admite especificar el tipo de salida
"table"
.No se admite pasar un arreglo de celdas de propiedades. Utilice en su lugar una lista separada por comas.
Se admiten todas las propiedades excepto
"ConvexArea"
,"ConvexHull"
,"ConvexImage"
,"MaxFeretProperties"
,"MinFeretProperties"
,"Solidity"
y"SubarrayIdx"
.
Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.
Notas y limitaciones de uso:
GPU Coder™ genera código optimizado CUDA® solo para imágenes binarias. El código generado para imágenes de etiqueta como entrada no está optimizado. Las imágenes de etiqueta de tipo de datos categóricos no se admiten como entrada.
No se admite especificar el tipo de salida
"table"
.No se admite pasar un arreglo de celdas de propiedades. Utilice en su lugar una lista separada por comas.
Solo se admiten las propiedades
"Area"
,"BoundingBox"
,"Centroid"
,"Eccentricity"
,"EquivDiameter"
,"Extent"
,"MajorAxisLength"
,"MinorAxisLength"
,"Orientation"
,"PixelIdxList"
"PixelList"
,"MaxIntensity"
,"MeanIntensity"
,"MinIntensity"
,"PixelValues"
y"WeightedCentroid"
.
Entorno basado en subprocesos
Ejecute código en segundo plano con MATLAB® backgroundPool
o acelere código con Parallel Computing Toolbox™ ThreadPool
.
Esta función es totalmente compatible con los entornos basados en hilos. Para obtener más información, consulte Ejecutar funciones de MATLAB en un entorno basado en subprocesos.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Notas y limitaciones de uso:
La entrada
gpuArray
debe ser una matriz lógica 2D o matriz de etiquetas 2D.No se admite la estructura de componentes conectados (
CC
) de entrada.No se admiten las siguientes propiedades:
"ConvexArea"
,"ConvexHull"
,"ConvexImage"
,"Circularity"
,"EulerNumber"
,"FilledArea"
,"FilledImage"
,"MaxFeretProperties"
,"MinFeretProperties"
, y"Solidity"
."struct"
es el único tipo de retorno admitido.
Para obtener más información, consulte Procesamiento de imágenes en una GPU.
Historial de versiones
Introducido antes de R2006aR2023a: Nueva ecuación de circularidad
La función regionprops
utiliza una nueva ecuación para calcular la circularidad. La nueva ecuación elimina un sesgo que provocaba que el cálculo de la circularidad fuese demasiado alto para objetos relativamente pequeños.
Si desea reproducir mediciones de circularidad con la antigua ecuación, puede utilizar estos comandos:
props = regionprops(I,["Area" "Perimeter"]); oldCircularity = 4*pi*props.Area ./ props.Perimeter.^2;
R2022b: Compatibilidad con entornos basados en hilos
Ahora regionprops
es compatible con los entornos basados en hilos.
R2022a: regionprops
almacena las propiedades Image
, ConvexImage
y FilledImage
como arreglos de celdas en la tabla de salida para todas las entradas
A partir de R2022a, cuando se especifica un formato de salida de tabla, la función regionprops
almacena Image
, ConvexImage
y FilledImage
como arreglos de celdas, independientemente del tamaño de los objetos de imagen. En versiones anteriores, si el tamaño del cuadro delimitador de un objeto era de 1 por 1 o de 1 por n, estas propiedades se almacenaban en la tabla de salida como un escalar numérico o un vector fila.
Para actualizar su código, acceda al valor de Image
, ConvexImage
y FilledImage
utilizando la notación de puntos con llaves, {}
. Por ejemplo, utilice el siguiente código para acceder a la propiedad Image
del primer objeto de la imagen de entrada BW
. En versiones anteriores, las llaves no eran necesarias para acceder a los valores almacenados como un escalar numérico o un vector fila.
stats = regionprops("table",BW,"Image"); imdata = stats.Image{1};
R2020a: Compatibilidad con datos categóricos
Ahora, regionprops
es compatible con datos de imágenes categóricas.
R2019a: Circularidad y propiedades de Feret
Ahora, regionprops
mide la circularidad y las propiedades de Feret de las regiones de una imagen binaria. Para medir la circularidad, las propiedades de Feret mínimas y las propiedades de Feret máximas, incluya "Circularity"
, "MinFeretProperties"
o "MaxFeretProperties"
, respectivamente, al especificar el argumento properties
.
Consulte también
Image Region Analyzer | regionprops3
| bwpropfilt
| bwconncomp
| bwferet
| watershed
| labelmatrix
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)