New colocalization/cross-correlation plugin (looking for feedback)

Update: this plugin now supports time-series data. See the webpage for details.

Hello all,

I’ve been developing a new ImageJ plugin for colocalization and spatial correlation, Colocalization by Cross Correlation. For those familiar with it, the implementation is conceptually similar to Van Steensel’s CCF, but implemented quite differently in that it analyzes cross-correlation along all axes instead of just the x-axis, and uses Costes randomization to provide a measure of confidence in the correlation. Additionally, my plugin is able to generate images of the strongest correlating particles/signal from the original images. Currently, the plugin works on 2D and 3D images, though I hope to implement support for time-lapse data in the near future, where the plugin will generate a heatmap of cross-correlation over time.

I’ve posted about this plugin before, when it was early in its development, but I’ve recently gotten the plugin to a much better state (faster, more robust, better results). The plugin is available on the ImageJ update sites under the Help > Update… menu. Once installed you can find it under the Analyze > Colocalization menu. You can see the plugin webpage for a more detailed description of what it does and how to use it: Colocalization by Cross Correlation

I would appreciate any feedback you have about the plugin or the webpage, despite developing this plugin I do not have a lot of good data to test it with, so it would be great to see other people’s results. Hope some of you find this useful.


Some images of the output for those interested (taken from the webpage):


Thanks a lot, @amccall, for your contribution!

For the interest of other developers (an potential future contributors), I’m linking to the source code repository here as well:

A few remarks:

:blue_heart: – This commit message really made me happy! Great to see that ImageJ2 and SciJava were of use here!

I noticed you switched from a choice list of opened windows to a file input. In the future, you might be able to get the best of both approaches, by offering the user a choice of already opened images and in addition a Browse for image file… option. Interested? Please see these GitHub issues and get involved:

I think these lines are unnecessary, since Dataset already extends Img<RealType<?>> (but not ImgPlus remarkably…).


Hi @imagejan,

Thank you very much for linking the GitHub repository, I honestly meant to do that but have been really scatter-brained trying to get everything finalized (webpage, plugin optimization, uploading newest version). I also forgot to push my most recent changes to the plugin (did that just now) and am now back to using Dataset instead of File (see relevant bug-post here), though I am in full support of that “Load from file…” option and will go lend my support to that.

Switching to SciJava was fantastic, didn’t have to write anything to handle input arguments and now my plugin can be easily added to a macro. I’m planning on extending this in the future to get the plugin to the point of being able to operate in headless mode (as well as using Output parameters, but there is not PlotService yet…, and I really don’t want to try to convert that plot to an image to output it).

As to those 3 lines of code, I’ll go check them and see if they can be omitted. I had many issues with getting to the correct Type at various points in development as I have to do a lot of pixel reads/writes during the Costes randomization, but those lines may no longer be necessary in this most recent build.