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
|
À 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)