Main Content

bwferet

Medir las propiedades de Feret

Descripción

ejemplo

out = bwferet(BW,properties) mide las propiedades Feret de los objetos de una imagen y devuelve las medidas de una tabla. La entrada especifica las propiedades de Feret que se medirán para cada objeto en la imagen binaria de entrada.PropiedadesBW Las propiedades de Feret medidas incluyen los diámetros mínimo y máximo de Feret, ángulos de Feret y coordenadas de punto final de los diámetros de Feret.

ejemplo

out = bwferet(CC,properties) mide las propiedades Feret de los objetos de una imagen y devuelve las medidas de una tabla. La entrada especifica las propiedades de Feret que se medirán para cada componente conectado en la entrada.PropiedadesCC Las propiedades de Feret medidas incluyen los diámetros mínimo y máximo de Feret, los ángulos de Feret y las coordenadas de punto final de los diámetros de Feret.

out = bwferet(L,properties) mide las propiedades Feret de los objetos de una imagen y devuelve las medidas de una tabla. La entrada especifica las propiedades de Feret que se medirán para cada objeto de la matriz de etiquetas de entrada.PropiedadesL Las propiedades de Feret medidas incluyen el diámetro mínimo y máximo de Feret, los ángulos de Feret y las coordenadas de punto final de los diámetros de Feret.

out = bwferet(input) mide el diámetro máximo de Feret, su ángulo relativo y los valores de coordenadas medidos a partir del archivo .input La función devuelve las medidas de una tabla. Puede ser imagen binaria, componente conectado o matriz de etiquetas.inputBWCCL

[out,LM] = bwferet(___) también devuelve una matriz de etiquetas que contiene valores de etiqueta que representan los índices de fila de la tabla.out Puede utilizar cualquiera de los argumentos de entrada de sintaxis anteriores. Cada entrada de fila corresponde a una región etiquetada (objeto) en la matriz de etiquetas.outLM

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('toyobjects.png');

Convierta la imagen en una imagen binaria.

bw = imbinarize(I,'adaptive');

Extraiga los dos primeros objetos más grandes de la imagen binaria.

bw = bwareafilt(bw,2);

Rellene los taladros en las regiones de objeto extraídas.

bw = imfill(bw,'holes');

Calcule las propiedades mínimas de Feret y la matriz de etiquetas de los objetos extraídos.

[out,LM] = bwferet(bw,'MinFeretProperties');

Obtenga el número máximo de objetos en la matriz de etiquetas de salida.

maxLabel = max(LM(:));

Visualice la salida que contiene la tabla de propiedades mínimas de Feret.

out
out=2×3 table
    MinDiameter    MinAngle    MinCoordinates
    ___________    ________    ______________

      116.23        99.462      {2x2 double} 
      132.08       -159.27      {2x2 double} 

Visualice las propiedades mínimas de Feret del objeto con el valor de etiqueta 1 de la matriz de etiquetas de salida.

out.MinDiameter(1)
ans = 116.2301 
out.MinAngle(1)
ans = 99.4623 
out.MinCoordinates{1}
ans = 2×2

  120.5000  311.5000
  139.6081  196.8514

Visualice las propiedades mínimas de Feret del objeto con el valor de etiqueta 2 de la matriz de etiquetas de salida.

out.MinDiameter(2)
ans = 132.0776 
out.MinAngle(2)
ans = -159.2744 
out.MinCoordinates{2}
ans = 2×2

  215.5000  197.5000
  339.0304  244.2412

Visualice la matriz de etiquetas de salida. Trazar las coordenadas de punto final y el diámetro mínimo de Feret de objetos con valores de etiqueta diferentes de la matriz de etiquetas de salida.

h = imshow(LM,[]); axis = h.Parent; for labelvalues = 1:maxLabel     xmin = [out.MinCoordinates{labelvalues}(1,1) out.MinCoordinates{labelvalues}(2,1)];     ymin = [out.MinCoordinates{labelvalues}(1,2) out.MinCoordinates{labelvalues}(2,2)];     imdistline(axis,xmin,ymin); end title(axis,'Minimum Feret Diameter of Objects'); colorbar('Ticks',1:maxLabel)

Lea una imagen en el espacio de trabajo.

I = imread('toyobjects.png');

Convierta la imagen en una imagen binaria.

bw = imbinarize(I,'adaptive');

Rellene los agujeros en las regiones de objeto de la imagen binaria de entrada.

bw = imfill(bw,'holes');

Utilice la función para generar componentes conectados a partir de la imagen resultante.bwconncomp

cc = bwconncomp(bw);

Mida las propiedades máximas de Feret de los componentes conectados.

[out,LM] = bwferet(cc,'MaxFeretProperties');

Obtenga el número máximo de objetos en la matriz de etiquetas de salida.

maxLabel = max(LM(:));

Inspeccione la tabla para verificar las propiedades máximas medidas de Feret.

out
out=4×3 table
    MaxDiameter    MaxAngle    MaxCoordinates
    ___________    ________    ______________

       162.6       -175.06      {2x2 double} 
      156.21       -127.46      {2x2 double} 
      187.96        121.07      {2x2 double} 
      63.781       -131.19      {2x2 double} 

Visualice los diámetros máximos de Feret de los objetos con diferentes valores de etiqueta de la matriz de etiquetas de salida.

out.MaxDiameter(1:maxLabel)
ans = 4×1

  162.6038
  156.2082
  187.9628
   63.7809

Visualice los ángulos direccionales de los diámetros máximos de Feret específicos de los objetos con valores de etiqueta diferentes de la matriz de etiquetas de salida.

out.MaxAngle(1:maxLabel)
ans = 4×1

 -175.0608
 -127.4568
  121.0683
 -131.1859

Visualice las coordenadas de punto final de los diámetros máximos de Feret específicos de los objetos con valores de etiqueta diferentes de la matriz de etiquetas de salida.

out.MaxCoordinates{1:maxLabel}
ans = 2×2

  186.5000  113.5000
   24.5000   99.5000

ans = 2×2

  156.5000  315.5000
   61.5000  191.5000

ans = 2×2

  337.5000  174.5000
  240.5000  335.5000

ans = 2×2

  288.5000  129.5000
  246.5000   81.5000

Visualice la matriz de etiquetas de salida. Trazar las coordenadas de punto final y el diámetro máximo de Feret de objetos con diferentes valores de etiqueta de la matriz de etiquetas de salida.

h = imshow(LM,[]); axis = h.Parent; for labelvalues = 1:maxLabel     xmax = [out.MaxCoordinates{labelvalues}(1,1) out.MaxCoordinates{labelvalues}(2,1)];     ymax = [out.MaxCoordinates{labelvalues}(1,2) out.MaxCoordinates{labelvalues}(2,2)];     imdistline(axis,xmax,ymax); end title(axis,'Maximum Feret Diameter of Objects'); colorbar('Ticks',1:maxLabel)

Argumentos de entrada

contraer todo

Introduzca una imagen binaria, especificada como una matriz lógica o numérica. debe ser una imagen binaria donde los píxeles distintos de cero corresponden a un objeto y los píxeles de valor cero corresponden al fondo.BW

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Componentes conectados, especificados como una estructura con los cuatro campos que se muestran en esta tabla.

CampoDescripción
ConnectivityConectividad de los componentes conectados (objetos)
ImageSizeTamaño de la imagen binaria de entrada
NumObjectsNúmero de componentes conectados (objetos) en la imagen binaria de entrada
PixelIdxListMatriz 1 por celda, donde el elemento th es un vector que contiene los índices lineales de los píxeles del objeto thNumObjectskk

Puede utilizar la función para generar componentes conectados a partir de una imagen binaria.bwconncomp

Tipos de datos: struct

Matriz de etiquetas de regiones contiguas, especificada como una matriz de enteros no negativos. Los píxeles etiquetados 0 son el fondo. Los píxeles etiquetados 1 forman un objeto; los píxeles etiquetados 2 componen un segundo objeto; y así sucesivamente. El número de objetos representados por es igual al valor máximo de .LL Puede utilizar la función para generar una matriz de etiquetas a partir de una imagen binaria.bwlabel

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Etiqueta para las propiedades de Feret, especificadas como , , o .MaxFeretPropertiesMinFeretPropertiesall

Tipos de datos: char | string

Entrada genérica, especificada como uno de estos valores:

  • Matriz numérica o matriz lógica — Cuando es una imagen binaria, .inputBW

  • Estructura — Cuando está el componente conectado, .inputCC

  • Matriz de enteros no negativos — ¿Cuándo es la matriz de etiquetas, .inputL

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | struct

Argumentos de salida

contraer todo

Tabla de propiedades Feret, devueltas como una tabla -by-. es el número de objetos para los que se miden las propiedades de Feret. es 3 o 6, dependiendo de la entrada.mnmnPropiedades

  • Si es , entonces la tabla es de tamaño -by-3 con columnas , , y .Propiedades'MaxFeretProperties'outmMaxDiameterMaxAngleMaxCoordinates

  • Si es , entonces la tabla es de tamaño -by-3 con columnas , , y .Propiedades'MinFeretProperties'outmMinDiameterMinAngleMinCoordinates

  • Si es , entonces la tabla es de tamaño -by-6 con todas las columnas enumeradas en esta tabla.Propiedades'all'outm

Nombre de columnaDescripción
MaxDiameterDiámetro máximo de Feret de un objeto, medido como la distancia máxima entre dos puntos límite en los vértices antipodales del casco convexo que encierra ese objeto
MaxAngle

Angulo direccional del diámetro máximo de Feret con respecto al eje horizontal de la imagen. El valor, en grados, está en el rango [–180o,180o]

MaxCoordinatesCoordenadas de punto final del diámetro máximo de Feret, devueltas en la forma [x1y1x2y2]
MinDiameterDiámetro mínimo de Feret de un objeto, medido como la distancia mínima entre dos puntos límite en los vértices antipodales del casco convexo que encierra ese objeto
MinAngle

Angulo direccional del diámetro mínimo de Feret con respecto al eje horizontal de la imagen. El valor, en grados, está en el rango [–180o,180o]

MinCoordinatesCoordenadas de punto final del diámetro mínimo de Feret, devueltas en la forma [x1y1x2y2]

Matriz de etiquetas de salida de regiones contiguas, especificada como una matriz de enteros no negativos. Los píxeles etiquetados 0 son el fondo. Los píxeles etiquetados 1 forman un objeto; los píxeles etiquetados 2 componen un segundo objeto; y así sucesivamente. Las propiedades Feret de la entrada de la ta fila corresponden a la región th (objeto) en la que tienen el valor .koutkLMk El número de objetos representados por es igual al valor máximo de .LMLM

Nota

Si la entrada es una matriz de etiquetas, la matriz de etiquetas de salida es la misma que la matriz de etiquetas de entrada.bwferetLM

Tipos de datos: uint8

Algoritmos

Las propiedades Feret de un objeto se miden utilizando puntos límite en los vértices antipodales del casco convexo que encierra ese objeto.

Dadas las coordenadas del punto final del diámetro máximo (o mínimo) de Feret,, el ángulo máximo (o mínimo) de Feret se mide como.

Introducido en R2019a