Player tracking

Tracking players from a broadcast feed

Two matches, one pass: Germany vs Denmark U21 (30 s), then the Spain vs France Olympic final (24 s)

Internal · confidential

Broadcast left, the same moment in metres right. Track IDs match across both panels. Solid dots are tracked players; hollow rings are officials or people the colour step could not resolve, shown rather than dropped. A dashed box with no number is a player the detector found and the kit-colour test confirmed, but the tracker would not commit to an identity: seen, not identified. Those were previously left off the video altogether, which read as a miss. Full-resolution broadcast overlay, easier to read on a phone: match 1 · match 2. The second match is a different stadium, broadcaster, kits, daylight and frame rate, and nothing was tuned on it. Its kits are unnamed because the kit registry has no entry for that fixture, so the honest labels are Team A and Team B.

Frame inspector — step a frame at a time, see which frames have no calibration, and copy an exact frame reference.

Measured on this window

Detections6,042median 21 per frame
Carrying a track ID91.4%86 distinct IDs, median 4.3 s
Precision0.997317 judged by eye; 0.972 before the kit-colour filter
Recall0.997one player missed in 18 frames
Second match0.990Spain v France, 310 judged; 0.719 before the two filters
Ball positioned85%gaps are real occlusion
Pitch fit3.7 pxplayer heights check at 1.75 m

Where it stands

Tools

Review the trackingjudge boxes, mark missed players Pitch calibrationteach a frame by hand Data contractwhat the output guarantees