Edward Evans & Curtis Rueden, Eliceiri Lab/LOCI, UW-Madison
I2K 2022 | GatherTown Workshops Q&A Session #2 | May 6th
This workshop will illustrate how to harness the power of ImageJ and Fiji from Python using the latest version of PyImageJ. Material will include:
Shared access to images between ImageJ/ImgLib2/Java and NumPy/xarray/Python, without copying pixels.
Mixing and matching of image processing routines from ImageJ (ImageJ1 plugins, ImageJ2 Ops, ImageJ macros and scripts) with Python-side image processing (e.g. scikit-image, ITK, OpenCV).
Working with PyImageJ headlessly.
Utilizing the new napari image viewer with image data loaded from Java (e.g. via SCIFIO and Bio-Formats).
Working with images Python vs Java (e.g. slicing and combining images).
Tips and tricks to avoid pitfalls
The workshop will be structured as a guided walkthrough of a series of Jupyter notebooks, so that students may easily run and change live code on their own machines, or on the cloud via Binder.
This workshop is best suited for image analysis individuals with experience in either ImageJ or Python who want to work on images with tools from both ecosystems.
0:00:00 - Welcome
0:00:30 - Installation
0:03:53 - Introduction
0:05:33 - 1. Initializing the ImageJ gateway
0:08:22 - 2. Importing Java classes into Python
0:09:30 - 3. Loading data into ImageJ
0:09:45 - 3.1. Producing image data on the Java side
0:12:21 - 3.2. Wrapping Python image data into Java
0:16:37 - 4. Passing image data from Java to Python
0:19:12 - 5. Slicing image data
0:22:45 - 6. Displaying images
0:23:01 - 6.1. Displaying images via ij.py.show
0:24:40 - 6.2. Displaying images dynamicallywith ipywidgets
0:27:09 - 6.3. Displaying images via itkwidgets
0:28:15 - 6.4. Displaying images via napari
0:32:00 - 6.5. Displaying images via ImageJ
0:36:52 - 7. Calling SciJava scripts
0:40:56 - 8. Using ImageJ Ops
0:44:38 - 9. Working with the original ImageJ
0:46:33 - 9.1. Converting images to ImagePlus
0:48:05 - 9.2. Converting ImagePlus to other image formats
0:48:59 - 9.3. Keeping image data in sync with ij.py.sync_image(imp)
0:51:27 - 9.4. Invoking ImageJ plugins
0:54:44 - 9.5. Running ImageJ macros
1:00:10 - 10. Example segmentation workflow
1:01:20 - 10.1. Segmentation workflow with original ImageJ functions
1:04:56 - 10.2. Segmentation workflow with ImageJ2
1:07:24 - Segmentation comparison and conclusion
Keywords: imagej, fiji, python, napari