Detection of vortex and numbering on basis of rotation

Viewed 52

Problem Statement: I have a video of ANSYS Simulation of vortices formed due to flat plate plunging. The video contains vortices (in simpler terms blobs), which are distinguished according to their rotation (based on red or blue colour).

Frame of the video

Objective: The vortices are needed to be identified and labelled according to their rotation. For example, vortices having clockwise rotation (red coloured) are labelled as R1, R2, R3, and so on and the anticlockwise rotation (blue coloured) as B1, B2, B3, etc.

Problem: I have been able to identify vortices as either clockwise and anticlockwise using contour detection, but the major issue is of numbering. The identified blob when it goes out of frame the label gets destroyed ie. if the vortex had a label A1 and now goes out of frame this label gets assigned to another vortex in the frame thus loosing the uniqueness.

Labelled blobs

1 Answers

so your problem is tracking?

  1. keep track of "objects" and their positions. I could call them vortices but I'll keep it general.

  2. in a new frame, find blobs

  3. then assign each of those blobs to the spatially nearest object (within some distance). check to make sure you don't match multiple blobs to the same object... or be aware of the possibility at least. if there's no existing object within some distance, create a new object for this blob.

  4. update each object's position from its assigned blob's current position

  5. take care to cull objects that disappear (i.e. had no assignment).

this is tracking by assignment.

this can be made arbitrarily complicated.

you should keep track of the colors of your objects so you know not to match a red blob to a blue object (vortex).

you could represent your objects using just a centroid. or you could represent them using a contour. then "distance" might involve calculating overlap and maybe even shape (look up fourier descriptors, they're the fourier transform of a polar representation of the contour).

you could assign (and update) a velocity to an object, and predict its next position linearly, and use that to maybe get a more stable prediction.

Related