Funktionale Parameter#
Ein Kernkonzept der Python-Sprache ist die funktionale Programmierung: Wir definieren Funktionen und wenden sie auf unsere Daten an.
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])
In Python können Sie auch Variablen haben, die eine Funktion enthalten und ausgeführt werden können:
my_function = double_number
my_function(values)
array([ 2, 4, 6, 8, 20])
Benutzerdefinierte funktionale Parameter#
Sie können auch Ihre eigenen Funktionen definieren, die funktionale Parameter annehmen. Zum Beispiel können wir eine count_blobs
-Funktion definieren, die ein image
und eine threshold_algorithm
-Funktion als Parameter nimmt.
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()
Wir öffnen nun ein Bild und analysieren es zweimal.
from skimage.io import imread, imshow
blobs_image = imread('../../data/blobs.tif')
imshow(blobs_image)
<matplotlib.image.AxesImage at 0x17968acd0>
Wir zählen nun die Blobs in diesem Bild mit zwei verschiedenen Algorithmen, die wir als Parameter übergeben:
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
Übung#
Angenommen, Sie möchten herausfinden, welcher Schwellenwert-Algorithmus für Ihr Bild am besten funktioniert. Dazu möchten Sie sich das Bild ansehen, das von mehreren Algorithmen mit einem Schwellenwert versehen wurde. Definieren Sie eine Liste von Schwellenwert-Algorithmen, z.B. aus dieser Liste. Programmieren Sie eine For-Schleife, die die Schwellenwert-Algorithmen auf das Blobs-Bild anwendet und die Ergebnisse anzeigt. Das Ergebnis sollte diesem Beispiel ähneln.