Raffinement d’images étiquetées#

Similaire aux opérations morphologiques sur les images binaires, il est également possible de raffiner les images étiquetées. Ce notebook montre comment faire cela.

Voir aussi

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

Érosion des étiquettes#

Lors de l’érosion des étiquettes, nous devons être prudents car les objets pourraient se scinder en deux. Cela pourrait être intentionnel, par exemple pour différencier des noyaux qui se touchent comme dans l’exemple ci-dessus.

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

Dilatation des étiquettes#

Nous pouvons ensuite dilater les étiquettes à nouveau pour revenir approximativement à leur taille originale. Cela peut aussi être utile dans le cas où les objets segmentés sont généralement trop petits.

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

Ouverture et fermeture des étiquettes#

L’ouverture et la fermeture pour les images étiquetées sont similaires à celles des images binaires. La seule différence est que lorsque les étiquettes se touchent, elles ne peuvent plus s’étendre.

Notez que l’ouverture des étiquettes peut faire disparaître les petites étiquettes.

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

Exercice#

Utilisez les opérations introduites ci-dessus pour faire disparaître les petits objets dans cette image étiquetée.

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