Selections from mask in an image stack or Adjusting ROI over time


Hello everyone!
I’m new to ImageJ and am currently in the process of analyzing an experiment.
I used TIRF microscopy to investigate the clustering kinetics of my protein of interest. Under resting conditions is not located in the TIRF plane but upon stimulation it translocates to the plasma mebrane and enters the TIRF plane. I want to determine the intensity / change of intensity over time (180 images).

Initially I planned (after background subtraction) to simply draw a ROI around my cell and use the multi-measure feature of the ROI manager to determine the intensity of each image in the image sequence. However I’m running into some problems as the cells move ever so slightly and therefore not allow me to use a single ROI for all time points. Also the clusters themselves move, fission and fuse quite a bit (so I cannot draw ROIs around them either).

For an initial analysis I used the SpeckleTracker Plugin and tracked individual clusters over all timepoints, which however is quite time consuming and due to fission and fusion I cannot track all clusters in a cell.

I’ve been thinking about others ways to analyze my data and used the threshold function to segment the clusters and created a selection via a mask, but I’ve only been able to do so for a single image and not the whole stack (from the corresponding thresholded binary image stack).
My question: is there a way to make selections/ROIs based on masks for a all images in an image sequence? Or are there other ways to adjust a ROI over time to account for cell movements/shrinkage?

I attached some Images to hopefully make clear what I am aiming to achieve:

Cells at timepoint 0

Cells after stimulation

mask after thresholding (just a quick test, can be improved)

Selection made from binary mask image

I appreciate any help :slight_smile:
Thanks and regards


Came up with two very simple macros to make a selection based on a tresholded stack and add it to the ROI manager and another one to measure it that solve my problems (i post them in case someone in the future might need this as well) :

for (i=1; i<=nSlices; i++) {
run(“Create Selection”);
run(“Make Inverse”);
run(“Select None”);
run(“Next Slice [>]”);


for (i=1; i<=nSlices; i++) {
roiManager(“Select”, i);