kalman-tracker icon indicating copy to clipboard operation
kalman-tracker copied to clipboard

An algorithm for object tracking based on Kalman Filter is implemented using OpenCV C++ library. Two modes of operation are coded, a Constant Velocity Model, and an Acceleration Model.

C++ implementation of Kalman Filter for Object Tracking

Two algorithms for object tracking based on Kalman Filter [1,2] are implemented using OpenCV C++ library [3]. First, a Constant Velocity Model [4], and second an Acceleration Model. The strengths and weaknesses of both models are discussed using toy and real video sequences. Each tracking experiment can be divided into 3 steps, (1) foreground mask is generated based on Background Subtraction, morphological opening is applied to filter noise from the background mask. (2) the main Blobs are extracted from the filtered mask using Connected Component Analysis (CCA). From the extracted blobs, the center of the biggest blob is used as input measurement to the Kalman filter. (3) with the main Blob as the input for Kalman Filter, Constant Velocity and Acceleration models for Kalman filter are implemented.

Toy series


drawing drawing drawing

Real series


drawing drawing drawing drawing

Cite this work

J. Rico, M. Eyakep, (2020) Kalman Filter for object tracking
[Source code](https://github.com/jvirico/KalmanTracker)

Authors

J. Rico ([email protected])
M. Eyakem ([email protected])

References

[1] - J. Rico, M. Eyakem. (2020) Kalman Filter for object tracking.
[2] - Kalman, R.E.: A new approach to linear filtering and prediction problems (1960).
[3] - Kaehler, A., Bradski, G.: Learning OpenCV 3: computer vision in C++ with the OpenCV library. ” O’Reilly Media, Inc.” (2016).
[4] - Sch¨oller, C., Aravantinos, V., Lay, F., Knoll, A.: What the constant velocity model can teach us about pedestrian motion prediction. IEEE Robotics and Automation Letters 5(2), 1696–1703 (2020).