Mise à l’échelle des listes de coordonnées#

Supposons que vous ayez une liste de coordonnées dérivées d’une image. Si l’image a une taille de pixel spécifiée, vous pouvez convertir les coordonnées en pixels en coordonnées physiques.

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

À partir des objets de cette image étiquetée, nous pouvons dériver les coordonnées des centroïdes.

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)

Une telle liste de points comporte d fois n nombres pour d dimensions (généralement 2 ou 3) et n points.

centroids.shape
(2, 6)

Si la taille des pixels est connue, nous pouvons calculer les coordonnées des centroïdes en unités physiques.

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)