Fusión de etiquetas anotadas#
En este notebook demostramos cómo se puede post-procesar una imagen de etiquetas anotando las etiquetas que deberían fusionarse.
import apoc
from skimage.io import imread, imshow, imsave
import pyclesperanto_prototype as cle
import numpy as np
Nuestro punto de partida es una imagen de etiquetas (sintética) sobresegmentada.
oversegmented = cle.asarray(imread('../../data/syntetic_cells.tif')).astype(np.uint32)
oversegmented
|
|
cle._ image
|
Además, necesitamos una anotación donde la intensidad de píxel = 1 implica que las etiquetas deben fusionarse.
annotation = cle.asarray(imread('../../data/syntetic_cells_merge_annotation.tif')).astype(np.uint32)
# binarize the image
annotation = annotation == 1
annotation
|
|
cle._ image
|
Para fines de visualización, superponemos ambas.
cle.imshow(oversegmented, labels=True, continue_drawing=True)
cle.imshow(annotation, alpha=0.5)
Ahora podemos fusionar todas las células cuyos bordes están anotados.
result = cle.merge_annotated_touching_labels(oversegmented, annotation)
result
|
|
cle._ image
|
¿Cómo funciona?#
Internamente, hay una función para generar una matriz de contacto a partir de la imagen de etiquetas y la anotación, y una función para fusionar etiquetas según una matriz de contacto.
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
|