Cloud of Dots Matching in 2D using Fiji plugin

Hi Fellows,

I am searching for a ready to use Fiji plugin (not an Imglib2 code) for doing registration of two 2D images. I am attaching my images and there you can see bright white spots on the two images which are bigger than the small dark spots. What I have in mind is use a DoG detector, find only these brights spots and then do an Iterative closest point based point matching on the two images and then register source image to the target image.

Is there a plugin that can do just that? (Sorry for uploading jpeg, I tried uploading tif and then png n it didnt work) Second image is the source image and first image is the target image for doing bead based registration.


Hi @kapoorlab,

There are many options.

Are the examples you provided two image that you want to register?
If so, that looks very challenging (granted, I don’t know what I’m looking at).

Some ideas for your use case in particular:


Edit: These are not exactly ICP, but you get the idea

1 Like

Thanks John, I quickly gave a try to SIFT but I do not understand the output it gives me, just put crosshairs on the corresponding points it finds on the two images and writes the following to log file, but no change to the images or no new images created. Spim Registration page says it is outdated but I will still give it a try and also to StackReg.


Processing SIFT …
took 3928ms.
3938 features extracted.
Processing SIFT …
took 2864ms.
7734 features extracted.
Identifying correspondence candidates using brute force …
took 6930ms.
323 potentially corresponding features identified.
Filtering correspondence candidates by geometric consensus …
took 34ms.
37 corresponding features with an average displacement of 3.198px identified.
Estimated transformation model: [3,3](AffineTransform[[0.999005080469935, 0.044596515505795, -34.61509755299333], [-0.044596515505795, 0.999005080469935, 98.92638512313977]]) 3.198342343872055

Hi John, BUnwrapJ helped me in the end, it is a great tool but unfortunately only in 2D, I can try converting it to imglib2 style code. Do you know if anyone is already doing something similar to this?


@iarganda might know, as he is author and maintainer of bUnwarpJ, see:

What do you want? 2D, or rather 3D? :wink: Also, your topic title (“cloud of dots”) and your first post (“registration of two 2D images”) leave me puzzled what you’re really looking for…

I’ve had good experience with the Descriptor-based registration (2d/3d) plugin in Fiji in the past. It detects local extrema (i.e. minima and/or maxima) in two images and then performs matching between the two point clouds given the constraints of the transformation you define (rigid, simliarity, affine, …).

If you want to use the point-cloud matching part separately from the maximum detection, have a look at the #descriptor-based-reg tag for some discussions on how to script the plugin.


Hi Jan, Right now am trying only 2D but I am not sure if I will need 3D, depends on how the experiment develops. It is like imaging an organism with a shell and then removing the shell and imaging it again. It moves a bit in this process and I try to register the Z projected image of with and without the shell (using the cloud of dots present in both the images, like the big white ones).

I tried the Descriptor-based registration (2d/3d) plugin, the DoG detection works fine but Ransac returns nothing so that got me stuck. So I moved on to elastic deformations, it at least gives me some kind of deformation field than nothing at all. But the problem here is also the experiment, which has to be improved first. Till the experiment improves, we have time to make something that works in 3D, even if it is slice by slice, just in case the experiment requires it in the future.

Hello @kapoorlab and @imagejan

Have you had a look at SimpleElastix? You can run 2D and 3D registrations with many different options from java.


Hi @iarganda and @imagejan,

I had a look at the link, from first impressions, it seems interesting and useful, just the website looks still incomplete, not enough examples of what it can do at the moment, non clickable links etc.

Thanks for point this out to me,

@iarganda and @imagejan, wait I just saw that the website above links to a proper documentation link, where things are more clearer> SimpleElastix Documentation

1 Like

Almost there, now use the points to do the warping or alignment with your model of choice [] or store them and re-use them or whatever ImageJ has to offer.