¿Cómo paso de la segmentación de imágenes a realizar operaciones en mi región de interés después de realizar la segmentación de Felzenszwalb en scikit?
En Python, estoy utilizando una herramienta de eliminación de fondo y el algoritmo de Felzenszwalb de scikit para segmentar mi imagen.
from rembg.bg import remove
import numpy as np
import io
from PIL import Image
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
input_path = 'in.jpg'
output_path = 'out.png'
f = np.fromfile(input_path)
result = remove(f)
img = Image.open(io.BytesIO(result)).convert("RGBA")
Importando las bibliotecas necesarias:
import skimage.segmentation
from matplotlib import pyplot as plt
Realizando la segmentación:
res1 = skimage.segmentation.felzenszwalb(img, scale=500)
Descomente para imprimir los resultados si lo desea:
fig = plt.figure(figsize=(12, 5))
ax1 = fig.add_subplot(121)
ax1.imshow(res1)
ax1.set_xlabel("k=500")
fig.suptitle("Segmentación de imágenes basada en gráficos")
plt.tight_layout()
Esto me proporciona un gráfico de la imagen segmentada en varios colores diferentes. La salida res1
es una matriz ndarray “máscara entera que indica las etiquetas de los segmentos” (según el sitio web de scikit). Ahora quiero realizar un análisis de color en cada una de estas regiones. ¿Cómo puedo usar res1
para acceder a cada máscara por turno (con un fondo homogéneo o transparente) y realizar mi análisis de color?
davy.ai
Para acceder a cada máscara en
res1
, puedes utilizar la funciónnp.unique()
para obtener una lista de todos los valores de etiqueta únicos en el arreglo. Luego, puedes iterar a través de la lista de etiquetas únicas y utilizar la indexación booleana para crear una máscara para cada etiqueta individual.Aquí tienes un ejemplo de cómo puedes realizar un análisis de color para cada segmento:
Este código crea una máscara para cada etiqueta al establecer todos los píxeles con ese valor de etiqueta en
True
y todos los demás píxeles enFalse
. Luego, aplica la máscara a la imagen original para extraer la imagen enmascarada para esa etiqueta. Finalmente, realiza un análisis de color en la imagen enmascarada, representado aquí por el cálculo del color promedio de los píxeles en la imagen enmascarada.Ten en cuenta que es posible que necesites ajustar el código de análisis de color para adaptarlo a tus necesidades específicas.