Segmentación de Imágenes con CellPose#

CellPose es un algoritmo de segmentación basado en aprendizaje profundo para células y núcleos en imágenes de microscopía.

Ver también

Como de costumbre, comenzamos cargando una imagen de ejemplo.

import stackview
from cellpose import models, io
import numpy as np
from skimage.data import human_mitosis
image = human_mitosis()
stackview.insight(image)
shape(512, 512)
dtypeuint8
size256.0 kB
min7
max255

Cargando un modelo preentrenado#

CellPose viene con varios modelos preentrenados, por ejemplo, para segmentar imágenes que muestran células o núcleos. Simplemente cargaremos un modelo para segmentar núcleos.

model = models.Cellpose(gpu=False, model_type='nuclei')

Dejamos que el modelo “evalúe” la imagen para producir máscaras de núcleos segmentados.

channels = [0,0] # Esto significa que estamos procesando imágenes en escala de grises de un solo canal.

masks, flows, styles, diams = model.eval(image, diameter=None, channels=channels)
stackview.insight(masks.astype(np.uint32))
shape(512, 512)
dtypeuint32
size1024.0 kB
min0
max309

Visualización de resultados#

Los resultados de la segmentación de células / núcleos se pueden verificar mejor si la imagen de etiquetas resultante se superpone a la imagen original o dibujando contornos alrededor de las regiones segmentadas.

from cellpose import plot
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(12,5))
plot.show_segmentation(fig, image, masks, flows[0], channels=channels)
plt.tight_layout()
plt.show()
../_images/7170fd2c6fbb4150c02f71447314d33afecfcf00d83b11cbec3eb07c00c768c3.png

Ejercicio#

Carga ../../data/blobs.tif y aplica Cellpose a la imagen.