How to use the ROM & Motion Tracker

A guide to measuring joint range of motion and landmark movement from a video. Everything runs in your browser — your videos are never uploaded. Open the tracker →

Overview

Pick a measurement (knee flexion, shoulder ROM, pelvic tilt, a single drifting landmark, …), place its landmarks on one frame of a clip, and the app follows every point across the whole video with Lucas–Kanade optical flow. The result is a value series — a joint angle or a displacement per frame — with a chart, summary statistics (ROM, min/max, RMS), and CSV exports for your own analysis.

Step by step

1

Load a video

Drag a clip onto the drop zone or click to choose a file. It stays on your device. The tracking engine loads once in the background.

2

Choose what to measure

Pick a measurement in the panel on the right. It lists the landmarks to place (e.g. hip–knee–ankle for knee flexion) and how to set the camera up.

3

Scrub to a good start frame

Use the slider, the frame-step buttons, or the ←/→ keys to land on a frame where every landmark is clearly visible.

4

Place the points

Click the video to place each landmark in turn. Scroll to zoom and drag the image to pan for pixel-level precision; drag any placed point to fine-tune it.

5

(Optional) Calibrate to millimetres

For single-point measures you can click the two ends of a reference object of known length (a ruler, two tape dots a measured distance apart), so displacements report in mm instead of px. Placement matters: the reference must be at the same distance from the camera as the joint and facing the camera flat-on — never running from the camera toward the body (see the FAQ). Angles are always in degrees — no calibration needed.

6

Track

Press “Track from this frame” and watch it run live, with the angle or displacement drawn on the video. Pause any time to rewind and fix a drifting point.

7

Review, refine, save

When tracking ends you land in review: scrub the whole clip, drag any point that drifted, and re-track forward from the corrected frame. Save when it looks right.

8

Analyse & export

Charts, ROM/stats tables, session comparison overlays, per-session raw CSVs, and a one-row-per-session summary CSV. Sessions persist in your browser between visits.

Measurements

  • Joint angles (3 points): knee, hip, ankle, shoulder, elbow, and wrist flexion/extension. Three landmarks define two limb segments; the included angle at the middle point is charted per frame, and its range over the clip is the ROM.
  • Pelvic tilt (2 points): mark the ASIS and PSIS from a side view; the angle of that line versus horizontal tracks anterior/posterior tilt.
  • Lateral pelvic shift (1 point): mark the sacrum midpoint from the front or back; its horizontal drift from the start position is the shift.
  • Single point: the classic stability mode — track any landmark and chart its horizontal and vertical drift (px, or mm when calibrated).

Refining a track

  • Zoom & pan: scroll on the video to zoom (up to 8×), drag to pan, and use the toolbar to reset. Works while placing points, while paused, and in review.
  • Rewind while tracking: pause, scrub backwards through the already-tracked frames, drag a point back onto the landmark, and resume — tracking re-runs from the frame you fixed.
  • Review pass: after tracking, step through the clip frame by frame (←/→ keys, shift for ×10). Any point can be dragged to correct it; “Re-track from here” re-runs the tracker forward from that frame.
  • Tracking profiles: Strict pauses for your input as soon as a point looks lost; Forgiving auto-recovers and never interrupts; Balanced sits in between.

Notes & FAQ

  • Where do I put the ruler for mm calibration? At the same distance from the camera as the joint you are tracking, facing the camera flat-on. Best options, in order: two skin markers a measured distance apart on the limb itself; a ruler taped to a wall or stand right beside the joint; or a ruler on the floor running across the frame (left–right as the camera sees it) directly below the subject. A ruler pointing from the camera toward the body will not work — it is foreshortened, so its pixel spacing does not represent the scale at the joint. Longer references and zooming in before clicking both improve accuracy.
  • Why not just enter the camera distance instead? Distance alone cannot give a px-to-mm scale — that also depends on the lens field of view, zoom, crop, and stabilisation, none of which are knowable from the video file. Clicking a known length measured in the actual footage captures all of that in one number.
  • Tracking keeps losing a point? Start on a frame with visible texture at each landmark (skin markers help a lot), or pick the Forgiving profile. You can always pause, rewind, and fix it.
  • Timeline looks wrong? The frame rate is auto-detected; override the fps in the Measurement panel if needed.
  • 2-D angles are projections. Film square-on to the plane of movement — out-of-plane rotation makes an on-screen angle differ from the true joint angle.
  • Is my video uploaded? No. All processing happens locally in your browser via WebAssembly; nothing is sent to a server.
  • Old CSVs still work. Files exported by the previous knee tracker (or the desktop app) import as single-point sessions.