Multiview Reconstruction: Register Timeseries

Hello!

I would like to use @StephanPreibisch’s Multiview Reconstruction plugin to register different time-points of a 3D SPIM movie. The individual time-points are single files with single views (they are fused already from multiple views) and contain nuclei that I would like to use for identifying the transformation between time-points.

I was watching the tutorial here: http://imagej.net/Multiview-Reconstruction, but the time-series case is not covered. So I tried on my own using Match against one reference timepoint, but I got an error that I do not understand (see below). I guess it has to do the settings Fix Tiles and Map back tiles. I also attached the log and xml file.

log_dataset.zip (2.3 KB)

Is there somewhere a tutorial for “nuclei-based time-series registration”, explaining the Fix Tiles and Map back tiles options?

Thanks! Christian


Using spimdata version: 0.9-revision
Using spimreconstruction version: 4.0.0
angles selected: 0
channels selected: 0
illuminations selected: 0
Timepoints selected: 9, 10
registering channel: 0 label: ‘beads’
Registration algorithm: Fast 3d geometric hashing (rotation invariant)
Registration type: TO_REFERENCE_TIMEPOINT
Channels to process: 1
Following tiles are fixed:
Angle:0 Channel:0 Illum:0 TimePoint:9
Following tiles are reference tiles (for mapping back if there are no fixed tiles):
(Tue Jun 28 10:17:35 CEST 2016): Starting registration
(Tue Jun 28 10:17:35 CEST 2016): Finding correspondences for subset: reference timepoint ( 9, id=9) registration: 10(id=10)
(Tue Jun 28 10:17:36 CEST 2016): [TP=10 angle=0, ch=0, illum=0 >>> TP=9 angle=0, ch=0, illum=0]: Not enough correspondences found 3, should be at least 12
(Tue Jun 28 10:17:36 CEST 2016): Number of Candidates: 3
(Tue Jun 28 10:17:36 CEST 2016): Number of Inliers: 0
(Tue Jun 28 10:17:36 CEST 2016): Fixing view-tile (viewSetupId = 0)

I did some more experiments and I think the reason for the “error” rather is that the algorithm really could not find any correspondences between the time-points. I think the reason is that the nuclei change too much. The global pattern is preserved between time-points but the local patterns change too much, such that the “Geometric Local Descriptors” do not match.

Do all the matching algorithms look for correspondences in terms of “Geometric Local Descriptors” or does one of them only try to globally match the point clouds, irrespective of their local distribution? For instance, does someone know how the “Iterative Closest Point” ICP algorithm works exactly?!

Hi @Christian_Tischer

I worked with the registration plugin some months ago and in my case I found enough corresponding points between different timepoints. The problem in my case was, that the affine transformation between timepoints t-1 and t was a lot different from the affine transformation between timepoints t and t+1. I came to the conclusion that the transformation between timepoints changes a lot and unfortunately it is not a predictable (based on the image data) change. The change is probably due to some overtime changes like evaporation, but I am only guessing.

I don’t know if this setting tries to find a global transformation to map all timepoints to one. If this is the case and you have more than two timepoints the problem could be the big difference between the transformations between different timepoints.

Have you tried to find the registration for only two timepoints?

As far as I know ICP takes a point p_i from the first pointcloud and takes the nearest neighbour from the second pointcloud. This means ICP only works if most of the corresponding points are already close to each other.

If the distance between the nuclei is smaller than the distance between corresponding nuclei from different timepoints ICP probably creates more wrong corresponding point pairs than correct ones.

2 Likes

Hi, I give a tutorial today at Janelia and I will try to record it and put it on youtube. It should cover all aspects and hopefully help understanding the parameters. I will keep you updated!!

All the best,
Stephan

5 Likes

Thanks for the answers! Looking forward to the tutorial!

Below I post an image of the data set I am working on.

The animal is growing and slightly translating between the time-points; the overall shape is similar but the individual nuclei probably have no clear correspondence between the time-points.
The aim of this project is thus not necessarily to track nuclei but to look for changes in expression patterns (in another channel) related to the overall position in the embryo (e.g., relative distance from the “growing tip”).

Now we are basically looking for an appropriate coordinate system to compare all the time-points.

We thought one step towards such a coordinate system would be to first register the time-points, e.g. using “point could registration” of the nuclei to find affine transformations that match the time-points. In fact, I think the affine transformation themselves could be scientifically interesting as they quantify the growth of the specimen.

Do you think this is feasible?

Just in case someone is still following this thread: I found that this is doing the job for me:
http://elastix.isi.uu.nl/
This is however not (yet) available within Fiji.