Condensation Implementation Particle Filter Our implementation consists of a generic particle filter class, which has hooks for specific observation and dynamic models to be attached later. The generic particle filter has functions to perform the weighted sampling [Filter::predict()] and to recreate the cummulative distribution [Filter::makeCdf()]. These functions contain calls to Filter::moveSample() and Filter::fixWeight() respectively. moveSample() is expected to predict the movement of samples in the search space using a dynamic model, fixWeight() is expected to adjust the weights of the new samples based on observations. Observation Model The observation step attempts to evaluate the quality of all predictions made. It does so by reshaping the original curve to a new curve using the transform given by the prediction. The new curve is evaluated based on how close it's control points are to edges in the current frame, if an edge cannot be found in a given distance from a control point it is severely penalized. Dynamics Our dynamic model does no prediction at all, the non-deterministic component involves moving samples around in a given space. The distribution is uniform for all components of that space. We offset the lack of good prediction by increasing the size of the sample set.