regionprops
Medir propiedades de regiones de imágenes
Sintaxis
Descripción
devuelve las mediciones del conjunto de propiedades de cada componente (objeto) de conectividad 8 en la imagen binaria, stats
= regionprops(BW
,properties
)BW
. Puede utilizar regionprops
en regiones contiguas y en regiones discontinuas (consulte Más acerca de).
Nota
Para devolver mediciones de una imagen volumétrica 3D, considere utilizar regionprops3
. Aunque regionprops
puede aceptar imágenes 3D, regionprops3
calcula más estadísticas para las imágenes 3D que regionprops
.
Para todas las sintaxis, puede omitir el argumento properties
. En este caso regionprops
devuelve las mediciones "Area"
, "Centroid"
y "BoundingBox"
.
mide un conjunto de propiedades para cada componente conectado (objeto) en stats
= regionprops(CC
,properties
)CC
, que es una estructura devuelta por bwconncomp
.
mide un conjunto de propiedades para cada región etiquetada en la imagen de la etiqueta stats
= regionprops(L
,properties
)L
.
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 < 100;
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=4×3 table
Centroid MajorAxisLength MinorAxisLength
________________ _______________ _______________
256.5 256.5 834.46 834.46
300 120 81.759 81.759
330.47 369.83 111.78 110.36
450 240 101.72 101.72
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); 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 Nota
| 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 línea) | 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 Pixel Connectivity. | 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. Calculada como Area/ConvexArea . | 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
output
— Tipo de retorno
"struct"
(predeterminado) | "table"
Tipo de retorno, especificado como uno de los siguientes valores.
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);
La conectividad predeterminada es conectividad 8 para imágenes 2D y la conectividad máxima para imágenes 3D. Para especificar una conectividad no predeterminada, utilice
bwconncomp
para crear los componentes conectados y luego pase el resultado aregionprops
.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 Run MATLAB Functions in Thread-Based Environment.
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 Image Processing on a GPU.
Historial de versiones
Introducido antes de R2006aR2022b: 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};
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)