Compter les objets lumineux dans les images#
Un cas d’utilisation courant pour le traitement d’image dans le contexte biologique est le comptage de taches de haute intensité de signal entourées d’un arrière-plan de faible intensité. Le seuillage est la méthode de choix dans ce scénario. Nous le démontrons avec la méthode de seuillage d’Otsu (Otsu et al., IEEE Transactions on Systems, Man, and Cybernetics, Vol. 9 (1), 1979)
import pyclesperanto_prototype as cle
from skimage.io import imread, imsave, imshow
import matplotlib
import numpy as np
# initialize GPU
cle.select_device("GTX")
<Apple M1 Max on Platform: Apple (2 refs)>
# load data
image = imread('../../data/blobs.tif')
print("Loaded image size: " + str(image.shape))
cle.imshow(image)
Loaded image size: (254, 256)
Nous venons de mettre en place un simple flux de traitement d’image qui aboutit à une image étiquetée.
# process the image
blurred = cle.gaussian_blur(image, sigma_x=1, sigma_y=1)
binary = cle.threshold_otsu(blurred)
labeled = cle.connected_components_labeling_box(binary)
# show result
cle.imshow(labeled, labels=True)
L’intensité maximale dans une image étiquetée correspond au nombre d’objets.
num_labels = cle.maximum_of_all_pixels(labeled)
print("Number of objects in the image: " + str(num_labels))
Number of objects in the image: 62.0
Exercice#
Supprimez les étiquettes qui touchent le bord de l’image et comptez à nouveau les objets.