Paramètres fonctionnels#
Un concept fondamental du langage Python est la programmation fonctionnelle : Nous définissons des fonctions et les appliquons à nos données.
import numpy as np
values = np.asarray([1, 2, 3, 4, 10])
def double_number(x):
return x * 2
double_number(values)
array([ 2, 4, 6, 8, 20])
En Python, vous pouvez également avoir des variables qui contiennent une fonction et peuvent être exécutées :
my_function = double_number
my_function(values)
array([ 2, 4, 6, 8, 20])
Paramètres fonctionnels personnalisés#
Vous pouvez également définir vos propres fonctions prenant des paramètres fonctionnels. Par exemple, nous pouvons définir une fonction count_blobs qui prend une image et une fonction threshold_algorithm comme paramètres.
import matplotlib.pyplot as plt
from skimage.measure import label
def count_blobs(image, threshold_algorithm):
# binarize the image using a given
# threshold-algorithm
threshold = threshold_algorithm(image)
binary = image > threshold
# show intermediate result
# plt.imshow(binary)
# return count blobs
labels = label(binary)
return labels.max()
Nous ouvrons maintenant une image et l’analysons deux fois.
from skimage.io import imread, imshow
blobs_image = imread('../../data/blobs.tif')
imshow(blobs_image)
<matplotlib.image.AxesImage at 0x17968acd0>
Nous comptons maintenant les taches dans cette image avec deux algorithmes différents que nous fournissons en paramètre :
from skimage.filters import threshold_otsu
count_blobs(blobs_image, threshold_otsu)
64
from skimage.filters import threshold_yen
count_blobs(blobs_image, threshold_yen)
67
Exercice#
Supposons que vous vouliez savoir quel algorithme de seuillage fonctionne le mieux pour votre image. Pour cela, vous pouvez vouloir examiner l’image seuillée par plusieurs algorithmes. Définissez une liste d’algorithmes de seuillage, par exemple à partir de cette liste. Programmez une boucle for qui applique les algorithmes de seuillage à l’image des taches et affiche les résultats. Le résultat devrait ressembler à cet exemple.