Zusammenführen annotierter Labels#
In diesem Notebook zeigen wir, wie ein Label-Bild nachbearbeitet werden kann, indem Labels annotiert werden, die zusammengeführt werden sollen.
import apoc
from skimage.io import imread, imshow, imsave
import pyclesperanto_prototype as cle
import numpy as np
Unser Ausgangspunkt ist ein übersegmentiertes (synthetisches) Label-Bild.
oversegmented = cle.asarray(imread('../../data/syntetic_cells.tif')).astype(np.uint32)
oversegmented
cle._ image
|
Außerdem benötigen wir eine Annotation, bei der Pixel-Intensität = 1 bedeutet, dass Labels zusammengeführt werden sollen.
annotation = cle.asarray(imread('../../data/syntetic_cells_merge_annotation.tif')).astype(np.uint32)
# binarize the image
annotation = annotation == 1
annotation
cle._ image
|
Zu Visualisierungszwecken überlagern wir beide.
cle.imshow(oversegmented, labels=True, continue_drawing=True)
cle.imshow(annotation, alpha=0.5)
Wir können nun alle Zellen zusammenführen, deren Grenzen annotiert sind.
result = cle.merge_annotated_touching_labels(oversegmented, annotation)
result
cle._ image
|
Wie funktioniert es?#
Im Hintergrund gibt es eine Funktion zur Erzeugung einer Berührungsmatrix aus dem Label-Bild und der Annotation sowie eine Funktion zum Zusammenführen von Labels gemäß einer Berührungsmatrix.
should_touch_matrix = cle.generate_should_touch_matrix(oversegmented, annotation)
should_touch_matrix
cle._ image
|
result = cle.merge_labels_according_to_touch_matrix(oversegmented, should_touch_matrix)
result
cle._ image
|