OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
tracking.hpp File Reference

Detailed Description

Building blocks for multi-object trackers: a dt-correct scalar position-velocity Kalman filter, its N-dimensional composition, and the greedy bipartite assignment step shared by the trackers in the tree.

A constant-velocity tracker with independent axes, a diagonal measurement noise and a (block-)diagonal process noise decouples exactly into one two-state filter per axis: the full 2Nx2N filter (ByteTrack's 8-dim xyah included) is mathematically identical to N of these, so no matrix library is needed and everything below is closed-form scalar algebra.

Everything takes an explicit dt in seconds: these run off cameras, OSC and TUIO sources whose frame spacing is neither fixed nor known in advance.

Go to the source code of this file.

Classes

struct  ossia::kalman_pv_filter
 Scalar constant-velocity Kalman filter, one axis of a tracked point. More...
 
struct  ossia::kalman_pv_filter::process_noise
 Discrete process noise covariance for one predict step. More...
 
struct  ossia::kalman_point_filter< N >
 N independent position-velocity Kalman filters: a tracked N-D point. More...
 
struct  ossia::match_candidate
 One candidate pairing for greedy bipartite assignment. More...
 

Namespaces

namespace  ossia
 

Functions

void ossia::greedy_assignment (std::vector< match_candidate > &candidates, std::int32_t *track_match, std::size_t n_tracks, char *det_used, std::size_t n_dets) noexcept
 Greedy bipartite matching: repeatedly take the cheapest remaining candidate whose track and detection are both still free.