Measuring aspect ratio of growing objects in 2D+t image


The timelapse attached is a 2D+time image of some objects growing in the horizontal direction (darker than the background).

Analysis goals

I am interested in getting how the shape (aspect ratio) and size of every object changes with time.


My understanding is that I need to use the pixel classification and then track these objects. The pixel classification workflow works perfectly, the main problem comes with tracking. The step of ‘threshold and size filter’ works fine. I skip the ‘division detection step’ because my objects don’t divide, they just change shape.
I think one of the main problems comes from the ‘object count classification’. It is not clear to me what I have to do here. I want to describe the change in shape of all my objects in the image. They are not different to each other. So basically I just put all of them as ‘1 object’ and none of them as ‘false detection’. Even if I put all of them as different objects, things don’t improve.
Once I track using automatic tracking, the main problem I have is that in some cases the algorithm passes the track from a specific object to the neighboring object. I played with the parameters quite a lot and this keeps happening. Often the track in object A, instead of just disappearing at certain frame, goes to another object B in the image.
I also tried ‘tracking with learning’ but the option to change the parameters is grayed out (even though I have installed Gurobi 8.1.1). So this is not an option.

Any help? I am open to using FIJI or Matlab if you think there is a better workflow that I could use there.

Hello @Iago_Lopez_Grobas ,

The Object Count classifier is there in order to help differentiating objects that “touch”. So the situation would be like the following:


Here you have 3 cells. But if we look at the object masks:

it becomes apparent, that the two objects in the lower right, have not been segmented properly. In fact, there is only a single mask for the two cells.

In the object count classifier, you train the algorithm to recognize these situations. So the lower right one, you’d label as 2 Objects. The idea is to add as many classes as you have object accumulations. False Detections would be anything that you didn’t get out in the segmentation step. So there might be dirt or something that gets recognized as foreground.

If all your objects are separate, and there are no false detections, mark a few objects as 1 Object and you’re good to go.

We recently updated our installation instructions, in particular:

Note: Due to a bug in ilastik 1.3.3 the solver library is not recognized. If you absolutely have to use this version then a solution is to manually copy C:\gurobi811\win64\bin\gurobi811.dll to your ilastik installation folder, e.g. C:\Program Files\ilastik-1.3.3post3\Library\bin.

However, it would be beneficial to see a little bit of your data in order to get a feeling for the difficulty of the data.


1 Like

I now found that you have a link to the data here: Describing shape of objects in a 2D+t timelapse

When looking at this time series, it seems to me that there are a lot of merges going on. So objects start out separate, but quickly merge into larger accumulations. Maybe to manage expectations here (without having seen your probability map for the objects), but once objects merge, you will not be able to track them individually anymore. If tracking works (object count classifier trained successfully) then you will know how many objects there are per “clump”, but not the individual shape properties. (Does that even make sense once the objects are merged?)

Thanks a lot! This has been very helpful! I understand better now what I am supposed to do in the classifier. I can now track my ‘islands’ much better, the best thing to do was to use a different solver (the one is not flow based, LAP I think).
Also thanks for pointing me to that bug, it solved my issue!

Yes! that’s totally fine, I want to track the objects when they are separated but I want the track to continue at least for one of them when they join (if that makes sense). Let’s say I have objects a and b and eventually they fuse. I want the track to identify the fused object as either a or b so I can track the evolution in size throughout the whole time-lapse. But it seems it’s working better. Thanks a lot :slight_smile: