Register pixel shift in 2 channel images of beads

registration

#1

I have a 2 channel z-stack of beads that show some shift between them and am looking for the best way to (i) register the two images in 3D and (ii) save and apply this transformation to any other images that suffer from the same pixel shift.

I have tried descriptor based registration, but am not able to find the proper settings. I tested Rigid and Affine with a high number of neighbors and redundancy, but always received:

Not enough candidates 0 - No inliers found Tipp: You could increase the number of neighbors, redundancy or use a model that has more degrees of freedom.

Does somebody have a tip how to make the plugin work, or maybe an alternative solution to the problem?
Thanks!


#2

Did you check that you find enough canditates in the interactive mode of the plugin (for finding minima and maxima in one of the input images)? I.e. what’s the count reported in the log line:

Found XXX candidates for C1-tetrabeads_100nm_power_100_exp_150ms_1_w1confmCherry-2.tif [0] (XXX maxima, 0 minima)

One drawback of the Descriptor-based registration plugin is that it assumes the same threshold for detecting descriptors in both channels, so it usually fails when the channels are too different in intensity/contrast.

For these cases, I took the different parts of the plugin and wrapped each of them as #knime nodes available from the FMI KNIME Plugins update site:

  • Spot Detection (Subpixel localization) (actually from #trackmate)
  • Measure 3D Transformation Between Spots
  • Apply 3D Affine Transform

This allows you to run spot detection with different parameters on both channels, while still having a handy way to apply channel correction.

I can try to put together an example workflow when I find the time.


#3

amazing as per usual @imagejan, thank you! :slight_smile:

I found candidates, but the numbers were never the same, e.g. 36 and 42, depending on how I set the thresholds. So indeed as you say the two channels are not of equal quality, and that could be what throws the plugin off.

That would be absolutely fantastic! Thank you very much! :star_struck:
Cheers,
Kai