Shapes "tracking" in image stack

Hello everybody :)

This is my question:

I would like to find a way to keep the information of fluctuations of some subparts (as pixels or smaller) of the membrane through the time stack of images without the movement (drifts, contractions, expensions) of the cells.


And this is the context:

I'm doing images acquisition for a biomedical project.
I image alive cells with fluorophores (molecules which will emit light) in the membrane on a particular setup.

On the obtained images, the membrane of the cells is visible (as well as others non wanted vesicules).
Originaly it's 100 frames images (I posted a trunked image of 60frames because of its size but my problem remains the same)
with 256 x 256 pixels.

The original name is : "Exemple of Image stack.tif"

The ".jpg" part has to be removed.


I'm trying to analyze the fluctuations of intensity (grey scale value of each pixel) of the pixels of the membrane through time (i.e. first image is time=0, second image: time=1, ...)


So basically, I have 256x256 waves with 100 lines (here with the trunked image : 60lines)

I build an average image of the intensity (256x256 pixels images, each pixel here is the mean of the 100 lines of the corresponding wave)
see "02 - Mean of intensity for the stack.jpg"

Then I apply a threshold : if V_avg of a wave is < 1, I don't use this pixel (and the corresponding wave)
=> removing the back ground and focusing on the membrane (with some extra spatial structures like vesicules I don't want)
see "03 - Mean of intensity with the 1 threshold.jpg"

Then I remove manually the parts of the image I don't want => Mask matrix with 0 values where there is no relevant information (i.e. outside of the membrane, or inside the cell)
see "04 - Mean of intensity with the 1 threshold and after vesicules removed.jpg"

BUT, as the membrane is moving, sometime the information is lost : a pixel (i,j) inside the membrane in the first image can be outside of the membrane at the 10th image... leading to a false fluctuation analysis.

I would like to find a way to keep the information of fluctuations of some subparts (as pixels or smaller) of the membrane through the time stack of images without the movement (drifts, contractions, expensions) of the cells.


I tried to divide the membrane into subparts (as pixels or smaller //but not larger) and to track the shape of the membrane through frames.

If the area of the surface of the membrane is changing, the size of this subpart can be decreased under the size of the pixel (allowing the value of one pixel to several subparts that are covering it)
i.e. if the surface of the membrane is containing 200 pixels for the first image and then 230 pixels for the second image after a contraction or expension of the membrane, the max number of subparts will be normalized by the
smaller number of pixels in the surface

I tried to identify some maximum of intensity for each image, I tried to build a "carpet" (i.e. vectorizing the image : 65536 columns and 1 line for one image then concatenate the 100 images to build a 65536x100 matrix) to identify the variation of the location of the intensity ... but I didn't manage to obtain something efficient.

In addition to the movement, as the are very few photons arriving in the dectector, pixels in the membrane have sometime a value of 0 (intensity) but it's part of the fluctuations.


Has someone already done this kind of tracking ?


Thank you in advance !!!


Exemple of Image stack.tif_.jpg (7.51 MB) 02 - Mean of intensity for the stack.jpg (67.43 KB) 03 - Mean of intensity with the 1 threshold.jpg (41.51 KB) 04 - Mean of intensity with the 1 threshold and after vesicules removed.jpg (39.87 KB)
General comment:

You are presenting a reasonably complex task. While the overview is good and useful, it would help if you broke it down into elementary questions for which you are more likely to get answers.

Looking at your images it seems that this is not the classic "particle tracking" problem but rather boundary tracking. My hunch is that the noise in your images is high enough that comparing thresholded images is not a good idea. It might be better to apply some edge-detection technique (look at the documentation of ImageEdgeDetection operation) and compare the derived edges for the various frames.

A.G.
WaveMetrics, Inc.

Hi Djebulon,

depending on the type of movement of the membranes in your stack this can be quite complicated. But if there is mainly translation and rotation or skewing, you may try ImageRegistration. I tested it with your example data (ImageRegistration /q /STCK /PSTK /TSTM=0/REFM=0/CSNR=0/skew={1,1,0}/rot={0,0,0} testWave = Ex, refWave=Ex0, Ex is your stack, Ex0 is the first frame of the stack) and the result looks better than the original stack (at least in my eyes).

Good luck!
Sorry for the (very) late answer.

Thank you for your messages. I'll try your solutions and will post updates.