Poly Projection¶
Overview¶
Poly projection is a projection based approach to finding the same object across successive frames. By fitting the past particle locations with a polynomial, the polynomial can be evaluated to predict where the particle location should be. The closest particle to the projected location is then used. The algorithm is:
Frame |
Description of step |
---|---|
n |
An object is found |
n+1 |
Using the default search radius |
n+2 |
Using the previous two points ( |
n+3 |
Using the previous three points ( |
n+i |
Repeat the n+3 step, using some or all the previous points to fit a
new polynomial, until an object can not be found within the
search radius at the projected location,
|
Where the following variables are defined as:
Variable |
Description |
---|---|
x, y, z position of the object |
|
polynomial fit to some or all of the previous positions |
|
velocity of the object |
|
multiplier to calculate search radius |
|
minimum search radius |
|
search radius,
|
Graphically, the algorithm looks like:

Limitations¶
For a given search area, there can potentially be many objects. The current
implementation defaults to the closest object to the
The other method (not implemented yet) is to try matching objects using either the intensity or a group of pixels (tile). This can be used to match objects as opposed to picking the closest object.
Polynomial Order¶
For most applications, a polynomial degree of 2 should be sufficient to capture and predict the motion of objects with acceleration. A polynomial with a degree of 2 represents the following kinematic equation:
where

In practice, it has been observed that higher order polynomials can capture collisions better then second order polynomials. Sample rates also need to be sufficiently high to capture multiple points during the collision as well.
Neighbor Search¶
A KDTree, implemented in scipy, is constructed from the objects of each frame.
This tree is then used to find neighboring objects to a given point
(