Verfeinerung von Etikettenbildern#

Ähnlich wie bei morphologischen Operationen auf binären Bildern ist es auch möglich, Etikettenbilder zu verfeinern. Dieses Notebook zeigt, wie das geht.

Siehe auch

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

Erodieren von Etiketten#

Beim Erodieren von Etiketten müssen wir vorsichtig sein, da sich Objekte in zwei teilen könnten. Dies könnte beabsichtigt sein, z.B. um sich berührende Zellkerne wie im obigen Beispiel zu unterscheiden.

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

Dilatieren von Etiketten#

Wir können die Etiketten dann wieder dilatieren, um annähernd zu ihrer ursprünglichen Größe zurückzukehren. Dies könnte auch nützlich sein, wenn segmentierte Objekte im Allgemeinen zu klein sind.

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

Öffnen und Schließen von Etiketten#

Das Öffnen und Schließen von Etikettenbildern ist ähnlich wie bei binären Bildern. Der einzige Unterschied besteht darin, dass sich Etiketten nicht weiter ausdehnen können, wenn sie sich berühren.

Beachten Sie, dass beim Öffnen von Etiketten kleine Etiketten verschwinden können.

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

Übung#

Verwenden Sie die oben eingeführten Operationen, um kleine Objekte in diesem Etikettenbild verschwinden zu lassen.

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