Réglage interactif des paramètres avec napari et magicgui#
Une tâche courante lors du traitement d’image est d’ajuster manuellement les paramètres jusqu’à ce qu’un algorithme de segmentation fonctionne correctement sur un ensemble de données donné. Le visualiseur napari et magicgui offrent la possibilité de construire automatiquement une interface utilisateur où l’utilisateur peut régler les paramètres et voir immédiatement à quoi ressemblera la segmentation correspondante. Ce notebook démontre comment cela peut être réalisé à partir d’une simple fonction python qui effectue le traitement d’image.
# Inspired by
# https://github.com/pr4deepr/pyclesperanto_prototype/blob/master/napari_clij_widget.py
import napari
import pyclesperanto_prototype as cle
from magicgui import magicgui
from napari.types import ImageData, LabelsData
Notre point de départ est une fonction qui implémente un certain flux de traitement d’image. Dans cet exemple, nous flouttions une image en utilisant un filtre gaussien, nous la seuillons en utilisant la méthode d’Otsu et nous appliquons un étiquetage des composantes connexes pour différencier les objets et les étiqueter.
@magicgui(auto_call=True)
def process_image(image_input: ImageData, sigma: float = 2) -> LabelsData:
if input is not None:
# process the image
blurred = cle.gaussian_blur(image_input, sigma_x=sigma, sigma_y=sigma)
binary = cle.threshold_otsu(blurred)
labels = cle.connected_components_labeling_box(binary)
return labels
Nous avons également besoin d’une image d’exemple pour démontrer la procédure.
# load data
from skimage.io import imread
image = imread('https://samples.fiji.sc/blobs.png')
Ensuite, nous démarrons le visualiseur napari, ajoutons l’image originale et ajoutons une interface utilisateur générée automatiquement, un widget d’ancrage, qui nous permet de configurer les paramètres de la fonction fournie ci-dessus. De plus, nous prenons une capture d’écran du visualiseur.
# start up napari
viewer = napari.Viewer()
viewer.add_image(image, name='blobs')
# generate a Graphical User Interface from the function above magically
viewer.window.add_dock_widget(process_image)
# take a screenshot
napari.utils.nbscreenshot(viewer)
Warning: Could not find scikit-tensor which is needed for separable approximations...
If you want to compute separable approximations, please install it with
pip install scikit-tensor-py3