Page history Edit this page How do I edit this website?

Learnathon 2019

The third DAIS Learnathon will take place from June 23 until June 29 2019.
You can also view the 2017 Learnathon and the 2018 Learnathon wiki pages!


Benjamin Wilhelm “I am currently a Working Student at KNIME working on KNIME Image Processing and KNIME Deep Learning. I did an internship in the Jug-Lab at MPI-CBG / CSBD working on a Fiji Plugin for CARE and bringing CARE to KNIME. I love Linux, Git and open-source software.”

Brian Northan “I currently work as a contract Image Processing R&D Engineer. I have helped groups develop and commercialize deconvolution and single particle localization algorithms for novel instruments. I have strong ties to the open source community, and have made several contributions to ImageJ, specifically imagej-ops and imagej-tutorials. I’ve worked with groups such as the Open Science Foundation to develop reproducible workflows using KNIME. I’m also an adjunct instructor at the Department of Informatics, University at Albany, teaching Data Analysis using Python and KNIME.”

Deborah Schmidt “I started working as a Research Software Engineer at Florian Jug’s lab, MPI-CBG, one year ago. After building interactive installations and visualizations as a freelancer I discovered the Fiji community while searching for jobs in open source development. I currently rethink the Updater, I am responsible for the CSBDeep / CARE Fiji plugin and for the IJ2 Ops part of CLIJ.”

Florian Jug “Florian is a group leader at the Center for Systems Biology Dresden (CSBD). His research aims at pushing the boundary of what computer vision and machine learning can do for the automated and semi-automated quantification of biological image data. Florian studied Computer Science at the TU Munich and obtained a PhD in the field of Computational Neuroscience from ETH Zurich. Next to developing novel methods for the (semi-)automated analysis of biomedical image data, his team is also critically involved in maintaining and developing the image analysis platform Fiji (”

Florian Levett “After working as an engineer in the Bordeaux Imaging Center, I am currently a researcher in the Sibarita lab at the Interdisciplinary Institute for Neuroscience in Bordeaux. I wrote several ImageJ plugins for segmenting or quantifying the apposition or the morphology of different kind of biological models. I also developed from scratch two platforms called SR-Tesseler and Coloc-Tesseler for quantifying single-molecule localization microscopy data.”

John Bogovic‘I am a postdoc in the Saalfeld lab at Janelia, working on anatomical templates, and large scale, multimodal image registration. I am the author of the Bigwarp Fiji plugin, and contribute to imglib2 and bigdataviewer. There is lots of room in my heart for both the “new hotness” of deep learning and “old school” computer vision techniques.”

Matthias Arzt “I started developing for Fiji, about three years ago. I’m actively developing Labkit, a Fiji Plugin for easy but big data capable image segmentation. And I’m contributing to the core of ImageJ and Fiji. I’m a big fan of simple, powerful and working software. I’m happy to discuss: How to integrate whatever amazing tools you have into ImageJ / Fiji.

Philipp Hanslovsky‘I am currently a grad student in the Saalfeld lab at Janelia. I work on neuron reconstruction from electron microscopy data with machine learning and develop proof-reading and data annotation tools. I am an ImgLib2 and recent Kotlin enthusiast and enjoy writing efficient image processing and analysis software”

Tim-Oliver Buchholz‘I am a PhD student in the Jug-Lab at MPI-CBG / CSBD. I work on content-aware image restoration applications for electron microscopy data. I learned about the ImageJ-Universe via KNIME Image Processing, contributed to imagej-ops and I am a fan of BigDataViewer.”

Pavel Moravec “I am a researcher at IT4Innovations National Supercomputing Center and a member of a group working on making the ImageJ2 / Fiji run in massive parallel High-Performance Computing environments and solving issues associated with such tasks. Our group works on processing large image data, especially from light sheet microscopy data, with batch processing pipelines. For this task, we are developing the scijava-parallel library with ParallelService and an extensions to imagej-server and its clients. In future, we consider extending the ParallelService to cloud environment as well. I am also dealing with issues arising from the need to transfer data to and from the HPC environment.

Tobias Pietzsch‘I’m a postdoc in the Jug and Zechner labs at MPI-CBG / CSBD. I am the coauthor and maintainer of ImgLib2, BigDataViewer, BigVolumeViewer, Mastodon, etc.”

Robert Haase‘I’m a postdoc in Myers lab at MPI CBG / CSBD. I’m the creator of CLIJ. In my actual job, I develop, run and maintain custom smart microscopes on the ClearControl platform. Analysing images after acquisition but before writing them to disc is my thing. Our microscopes are so smart, they even use twitter.”

Ulrik Günther‘Hey there! I’m currently a PhD student at the Sbalzarini Lab at CSBD. I’m trying to bring VR to microscopy and systems biology in general, e.g. by enabling VR control of microscopes, or developing scenery and the new 3D viewer for ImageJ, sciview.”


See this page!



We expect the course participants to be comfortable with:

  1. Using the Terminal / Unix Shell.
  2. Using Git Versioning Tool
  3. Programming Java

If you didn’t use the Terminal / Unix yet. Please go through chapters 1 to 3 of this online tutorial

If you don’t know git, please have a look at this tutorial:

There many beginner books for Java. If you want to be well prepared, you may also want to learn about generics in Java.


Bring your Laptop and make sure you have a Terminal, Git, and a Java IDE (Eclipse or IntelliJ) installed.


9:00 - 10:00

10:00 - 12:00 ImageJ2 API beating

13:00-14:00 Reading and Writing Images

We will now use Simplified-IO, which is, as its creator Gaby Turek sais, putting lipstick on a pig. Never the less, it is very useful if you just want to open an image from disk or from some remote source. It is also useful to save TIFF files. The sole intention of this repository is to make loading and saving simple. (Yes, there are 1000 ways to open an image in ImageJ/Fiji, and this is yet another way… but since it is only wrapping other ways to open/save images, we will attempt to keep simplified-io stable even if we change what actually happens behind the scenes.)

For this little lecture our aim is to:

  • Start a new Maven project called io-lecture or similar.
  • Either use the POM from an earlier project of yours, or be inspired by this page
  • If you do so, be sure that you also create folders src/main/java next to the new POM. Then import into your IDE (e.g. Eclipse).
  • Please update the version of the SciJava parent POM to the latest version. Find out what version this is by using;quick~pom-scijava.
  • You will have to add the suitable dependency to your POM in order to use Simplified-IO. The readme at will tell you more…
  • Now please try to open the image and show it on your screen.
    • How to load the image might be seen in the readme at
    • Soon we will learn more about how to view images, but for now you can, for example, use ij.ui().show( "img", loadedImage ), which is available as soon as you started an ImageJ2 via final ImageJ ij = new ImageJ().
  • Just for fun you might also want to save the image you just loaded.

14:00-14:30 Viewing Images

Please download the Learnathon repo. Or get the code here

The images are here

Unzip and place the ‘images’ directory beside the learnathon-2019/ directory

Or if you cloned the ‘viewing-images’ repository independently, place ‘images’ directory 2 levels up.

Slides can be found here

15:00-16:00 ImageJ-Ops: DoG Pyramid

ImageJ Tutorials

Widget-Demo showing all different widgets for all available input @Parameters.

DoG Pyramid example.

16:00 - 16:30 Image and point transform concepts


  • pixels are not little squares
  • “Forward” transforms apply to points, “inverse” transforms apply for images. Here’s why
  • Image cropping does not translate/move your image - respect the origin.
  • Save any transformation you apply to disk, because:
    • You can retransform an image from the original image + transform,
    • You can not get a transformation back from the transformed image.


9:00 - 12:00 ImgLib2 deep dive

The course went through these examples:

13:00 - 14:00 Viewers: Big Data Viewer

The course went through these examples:

14:00 - 15:00 Viewers: sciview

15:00 - 16:00 Paintara Demo


9:00 - 10:30 ImgLib2: Neighborhoods and Labelings

The course went through the last two examples in

10:50 - 12:00 ROIs in ImageJ2

Presentation & Exercises:

13:30 - 15:00 Spatial transformations with imglib2

The course consisted of three examples of transforming points and images, as well as a demonstration of rendering transformed points as an image.


9:00 - 12:00: SciJava - Services, Plugins, Commands & Context

The presentation and exercises can be found here:

13:00 - 15:00: KNIME Introduction


9:00 - 12:00 KNIME Image Processing Basics

Material can be found here

13:00 - 14:00 Imklib, Using imglib2 from Kotlin

14:00 - 15:00 SciJava Parallel Demonstration

15:00 - 16:00 Update Sites

How to set up and populate an update site