RANKID Vision

How we count

Every figure in the report is computed by a single function from the markup data — its formulas are below. If you see a number that doesn't match the formula, that's a bug, and we fix it.

Court and coordinates

  • Court plan per WSF rules: floor 9.75 × 6.4 m, short line 5.44 m from the front wall, T on the half-court line.
  • Coordinates: x across the court (0 — left side wall), y along it (0 — front wall). Front wall: tin 0.48 m, service line 1.78 m, out 4.57 m.
  • Frame → plan: homography from 4–9 court marking points (DLT with normalisation; with more than 4 points — least squares). The overlay error is shown during calibration.
  • Player position is the midpoint of the ankles from the pose model, mapped onto the court plan. Frequency — 3–10 points per second, as chosen for the analysis.
Court planFront wall

Shots and rallies

  • Shot by sound: signal energy after a difference filter in 10 ms windows; “novelty” — the rise relative to the median of the previous 300 ms; a shot is a peak above median + k·MAD in a 3 s window (k — sensitivity, 4–8), no more than once per 120 ms.
  • Who hit (automatic): whoever has the higher wrist speed within ±0.2 s of the shot. A person can correct it in the markup.
  • Rally: consecutive shots with gaps of no more than 3 s; fewer than 2 shots — not a rally. Starts 0.3 s before the first shot, ends 1 s after the last.
  • Shot type, position on the wall and floor, rally outcome — manual markup only. The automation never makes them up.
MetricFormula
Shotsthe player's number of shots (all, with and without a type).
Rallies wonrallies with a known winner that the player took part in: won / total. The winner is explicit, otherwise by outcome: a winner or “no let” — point to whoever hit last, an error or stroke — to their opponent, a let — no point.
Winnersrallies with a “winner” or “no let” outcome where the player hit last.
Errorsrallies with an “error” or “stroke” outcome where the player hit last.
% tight to the wallсреди драйвов, воллеев и возвратов подачи с отметкой отскока на полу — доля с x ≤ 0.5 м или x ≥ 5.9 м (не дальше 0.5 м от боковой стены).
% below the service lineсреди ударов с отметкой на фронтальной стене — доля с высотой меньше 1.78 м.
% deepсреди драйвов, воллеев и возвратов с отметкой на полу — доля с y ≥ 8.75 м (последний метр у задней стены, пол 9.75 м).
Return of serve: qualityby the bounce mark: high — tight and deep; medium — one of the two; low — neither. Without a mark — not counted.
Return of serve → winamong rallies with this player's return and a known winner — the share they won; separately for each quality level.
Serve → winamong rallies where the player served (explicitly marked, otherwise — hit first) and the winner is known — the share won.
Average rally lengthaverage number of shots in rallies the player took part in.
Average rally timeaverage (end − start) over the same rallies.
Distance per rallyсумма расстояний между соседними точками трека стоп внутри розыгрыша; шаги быстрее 8 м/с (сбой трекинга) отбрасываются. Среднее по розыгрышам.
Average speedtotal distance in rallies / total rally time.
Average distance from the Tсреднее расстояние точек трека в розыгрышах до точки T (3.2; 5.44).
Back to the Tпосле каждого удара игрока (кроме последнего в розыгрыше) — время до первой точки трека не дальше 1 м от T в окне 4 с. Доля удавшихся возвратов и среднее время по ним.
Time in front of the short lineдоля точек трека в розыгрышах с y < 5.44 м.
Shots from the front zoneshare of shots where the player (nearest track point, ≤ 0.3 s) was in front of the short line.
Volley sharevolleys / all shots with a type.
Floor heatmapan 8 × 12 grid of cells (0.8 × 0.81 m): the share of track points during rallies that fell in the cell.
Wall heatmapan 8 × 6 grid (0.8 × 0.76 m) from the marks on the front wall.
Shot × zonefor each shot type — the number of shots, winners and errors across 6 bounce zones: front (before the short line), middle, back (last ~2.2 m), left and right of the half-court line.

The benchmarks (“pros ≈ 50%”) come from open publications on squash analytics, not our own measurements. The formula code is open in the RANKID repository: src/lib/vision/metrics-core.ts, with tests.