Escalando listas de coordenadas#

Suponga que tiene una lista de coordenadas derivadas de una imagen. En caso de que la imagen tenga un tamaño de píxel especificado, puede convertir las coordenadas de píxeles en coordenadas físicas.

from skimage.io import imread
import pyclesperanto_prototype as cle
import stackview
image = imread("../../data/blobs.tif")[:50,:50]

label_image = cle.voronoi_otsu_labeling(image, spot_sigma=4)

label_image
cle._ image
shape(50, 50)
dtypeuint32
size9.8 kB
min0.0
max6.0

A partir de los objetos en esta imagen etiquetada, podemos obtener coordenadas de centroides.

centroids = cle.centroids_of_labels(label_image)
centroids
cle.array([[ 0.7586207  7.7894735 17.849672  24.59091   29.01266   43.57143  ]
 [26.275862  44.63158   17.79085    4.071429  47.02532   26.266666 ]], dtype=float32)

Tal lista de puntos tiene d veces n números para d dimensiones (comúnmente 2 o 3) y n puntos.

centroids.shape
(2, 6)

En caso de que se conozca el tamaño de píxel, podemos calcular las coordenadas del centroide en unidades físicas.

pixel_size_in_microns = [0.1, 0.1]
centroids_in_microns = centroids * cle.asarray([pixel_size_in_microns]).T

centroids_in_microns
cle.array([[0.07586207 0.77894735 1.7849673  2.459091   2.9012659  4.357143  ]
 [2.6275861  4.463158   1.779085   0.40714288 4.702532   2.6266668 ]], dtype=float32)