Refinamiento de imagen de etiquetas#

Similar a las operaciones morfológicas en imágenes binarias, también es posible refinar imágenes de etiquetas. Este cuaderno muestra cómo hacerlo.

Ver también

import pyclesperanto_prototype as cle
import numpy as np
from skimage.io import imread
label_image = cle.gauss_otsu_labeling(imread("../../data/mitosis_mod.tif"), outline_sigma=0)
label_image
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max13.0

Erosión de etiquetas#

Al erosionar etiquetas, debemos tener cuidado porque los objetos podrían dividirse en dos. Esto podría ser intencional, por ejemplo, para diferenciar núcleos que se tocan como en el ejemplo anterior.

eroded_label_image = cle.erode_labels(label_image,
                                      radius=2,
                                      relabel_islands=False)
eroded_label_image
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max9.0
eroded_label_image2 = cle.erode_labels(label_image,
                                      radius=2,
                                      relabel_islands=True)
eroded_label_image2
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max10.0

Dilatación de etiquetas#

Luego podemos dilatar las etiquetas nuevamente para volver aproximadamente a su tamaño original. Esto también podría ser útil en caso de que los objetos segmentados sean demasiado pequeños en general.

dilated_label_image = cle.dilate_labels(eroded_label_image2, 
                                        radius=2)
dilated_label_image
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max10.0

Apertura y cierre de etiquetas#

La apertura y el cierre para imágenes de etiquetas es similar a las imágenes binarias. La única diferencia es que cuando las etiquetas se tocan, ya no pueden expandirse más.

Ten en cuenta que la apertura de etiquetas puede hacer que las etiquetas pequeñas desaparezcan.

opened_label_image = cle.opening_labels(label_image,
                                        radius=2)
opened_label_image
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max9.0
closed_label_image = cle.closing_labels(label_image,
                                        radius=2)
closed_label_image
cle._ image
shape(70, 70)
dtypeuint32
size19.1 kB
min0.0
max13.0

Ejercicio#

Utiliza las operaciones introducidas anteriormente para hacer que los objetos pequeños desaparezcan en esta imagen de etiquetas.

label_blobs = cle.asarray(imread("../../data/blobs_labeled.tif")).astype(np.uint32)
label_blobs
cle._ image
shape(254, 256)
dtypeuint32
size254.0 kB
min0.0
max63.0