es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Etiquetas de medidas correspondientes de skimage.measure.regionprops?

Utilizando la biblioteca scikit, estaba analizando el área y el diámetro promedio de los defectos. Aquí está el código y las respectivas regiones segmentadas.

import cv2
import numpy as np
from matplotlib import pyplot as plt
from skimage import measure, io, img_as_ubyte
from skimage.color import label2rgb, rgb2gray

img = cv2.imread("F:\pyimagepro\pore.jpg", 0)

escala = 0.086 #1 píxel en micrones

from skimage.filters import threshold_otsu
umbral = threshold_otsu(img)

imagen_umbral = img < umbral

plt.imshow(imagen_umbral, cmap='gray')
plt.show()

from skimage.segmentation import clear_border
borde_tocando_removido = clear_border(imagen_umbral)

imagen_etiquetada = measure.label(borde_tocando_removido, connectivity=img.ndim)

plt.imshow(imagen_etiquetada)
plt.show()

imagen_etiqueta_superpuesta = label2rgb(imagen_etiquetada, image=img)
plt.imshow(imagen_etiqueta_superpuesta)
plt.show()

props = measure.regionprops_table(imagen_etiquetada, img, properties=['label', 'area', 'equivalent_diameter', 'mean_intensity', 'solidity'])

import pandas as pd
df = pd.DataFrame(props)

df = df[df['area'] > 20]

df['area_en_micrones'] = df['area'] * (escala**2)
df['diametro_equivalente_en_micrones'] = df['equivalent_diameter'] * (escala)
print(df.head())

Se usó regionprops para medir las regiones segmentadas. Imagen segmentada: https://i.stack.imgur.com/dLGrb.png Me gustaría saber si hay alguna manera de mostrar las etiquetas en la imagen de salida para que se puedan conocer las medidas correspondientes a las etiquetas segmentadas.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de mostrar las etiquetas en la imagen resultante utilizando la librería scikit-image. Puede usar la función label2rgb del módulo skimage.color para crear una superposición de imagen de etiqueta. Esto coloreará las regiones etiquetadas y mostrará sus etiquetas correspondientes. Aquí está el código actualizado:

    from skimage.color import label2rgb
    
    image_label_overlay = label2rgb(label_image, image=img)
    
    # Mostrar superposición de imagen de etiqueta
    plt.imshow(image_label_overlay)
    
    # Mostrar traza
    plt.show()
    

    Este código creará una superposición de las regiones etiquetadas en la imagen original y la mostrará con sus etiquetas correspondientes.

Comments are closed.