0

I have several sets of 3D data points. Each set represents dark features found on a spinning ball. These data points are produced by analyzing frames from a high speed camera so, there is some inherent error. I am attempting to track and label each point from frame to frame. When I use a ball with very distinct shapes or dots, this is not much of an issue since I know what I am looking for ahead of time and can brute force some identification/matching.

I'm trying to get away from using a specific pattern. This would require me to compare the 3D data sets from each frame to try and find points that exist in two subsequent frames (find valid points and ignore ones that appear to be noise) and then attempt to create matching point pairs.

I have tried some brute force methods of comparing distances, finding outliers, but have not had much luck without using a fixed or known pattern on the ball. I have run into many posts about this being an assignment problem and many people have suggested the Hungarian algorithm in other similar posts, but I have not been able to successfully implement that approach.

Any ideas of what I could try or some help with the Hungarian algorithm would be greatly appreciated.

This is an example of what this looks like when I use dots in a known pattern (3 dots as a right triangle) after I detect and sort points. Ignore the green dots, pink is what I would be dealing with.

enter image description here

Bvdb89
  • 11
  • 3
  • How large are the displacements from frame to frame, compared to the inter-point distances ? –  Jan 21 '23 at 19:06
  • That depends. The spin rate of the ball can vary quite a bit and generally the spin axis is towards the camera, but it also is never perfect and you will see that move from center up to 30 degrees. You generally see the points spin around the center of the ball with a rotation between 15 and 55 degrees per frame. So naturally any points near the spin axis hardly move, while points far away can move quite a bit. I will add a pic to my initial post to show you some examples using 3 dots setup as a right triangle. – Bvdb89 Jan 22 '23 at 04:25
  • If the rotation is in 2D, you only have one degree of freedom to determine. A first approach could be to try a predefined number of rotations to start ICP, and keep the best match. Alternatively, choose one point from a frame and match if to points at approximately the same distance from the center in the other frame. Then perform ICP. Repeat for a few other points from the first frame. –  Jan 22 '23 at 10:52
  • It isn't 2D, it is just represented that way in the picture. The points which are on a sphere, are rotating around the spin axis shown by the orange dot. – Bvdb89 Jan 22 '23 at 16:08
  • This is tagged with the Hungarian Algorithm and the Assignment Problem, but I don't think that would help here. Those algorithms work using the distances between each set, which would solve your problem, but you would have to calculate the distances first. If you have to calculate all of the distances anyways, that's already most of a brute-force algorithm, so it will probably be faster to just brute-force it than to do all of those calculations and then also use an Assignment Problem algorithm. – Yay295 Jan 23 '23 at 01:48

0 Answers0