Image registration tools in ImgLib2

Are there any ImgLib2 components that can help in image registration?

I am currently looking at a flexible way to register 3D multi-channel images and assess the quality of registration. I can use the following static methods of process.Matching (from the Descriptor-based registration):

  • extractCandidates() to find peaks in the images,
  • descriptorMatching() to find pairwise correspondences of the peaks
  • globalOptimization() to get an optimal registration model (Translate, Rigid or Affine)

One reason I am looking into this is to be able to plot the distances between pairs of points before and after registration, to be able to compare different models for quality assessment.

Is using process.Matching the optimal way to go? This class is heavily based on (deprecated) ImgLib1 API, so I wondered whether there’s anything available that is based on ImgLib2 already.

I know I can use fiji.plugin.trackmate.detection.DogDetector to find peaks for example, but I wasn’t sure about the matching and optimization steps.

Thanks for any hints,

@axtimwalde can correct me if I am wrong, but my understanding is that currently, the mpicbg library is still the go-to library for image registration algorithms. I know @axtimwalde wants to port the whole thing to ImgLib2, but it is a lot of work and not urgent, so I doubt it will be a priority any time soon.

In related news, we are planning a hackathon in spring 2016 at Janelia to work out a unified transform-driven image data model, which will form the basis of the next generation of image registration routines in ImgLib2 and ImageJ Ops. But that will take a couple more years to mature at least.

1 Like

Has the situation changed in the last ~600 days (thanks Discourse for reminding me :joy:)?

I found the following via a quick search:

Maybe @bogovicj also has an idea (-> BigWarp?) or @StephanPreibisch (I have seen some work happening on the SPIM registration)?



Hi, I this rather seems to resemble an idea than an actual start, since there are literally thousands of ways how to register images, sometimes even more than two at once, and they all have lots of parameters. But we are developing some of those and @bogovicj from @axtimwalde lab as well. Starting to put these efforts into a common interface might be something to discuss at the next hackathons.


We’ve been working toward certain things as they come up, but not toward explicitly porting mpicbg to imglib2.

What has “happened” is that we’ve implemented a few useful RealTransforms, e.g. ThinplateSplineTransform for what BigWarp produces, and DeformationFieldTransform for warp fields generated from other packages like ANTS or CMTK.

So while, there’s not a new imglib2-registration-algorithm, imglib2 does play nicely with everything we do.

Agree with @StephanPreibisch: