Methodology & validation
How the numbers are made, what we have measured about them, what the literature says about single-camera pose estimation — and where it breaks.
Mocta-X Dashboard and the iPhone app run one pipeline: a markerless pose model on every frame, angles corrected for the camera, a sport grader with published weights, a capture-quality gate that refuses to grade what it cannot see, and a coach that reads the graded data before it writes.
We do not claim laboratory accuracy. We claim repeatability, traceability and honesty about limits — and we publish the measurements behind each.
The pipeline
- 01Pose
33 landmarks per frame
MediaPipe Pose (BlazePose GHUM, full-complexity model) on every frame of the clip. Uploaded clips are tracked on our servers; realtime practice runs the same model in the browser with self-hosted weights, so it works where Google's CDN does not.
- 02Normalise
Angles that survive the camera
Landmarks arrive normalised to the frame, so a 16:9 video skews every angle unless it is corrected — we measured a 25° lean reading as 15°. Angles are computed in pixel space, and the eight graded joints follow one fixed definition across web, server and iPhone.
- 03Grade
Phases, bands, partial credit
A sport grader segments the movement into phases — catch, drive, finish, recovery for rowing; gait events for running; address to follow-through for golf — and scores each metric with continuous partial credit against a target band. Weights and bands are published in the scoring guide. Any other movement is aligned to a reference with STCF-DTW, a phase-aware dynamic time warping, and compared joint by joint.
- 04Gate
Refuse what cannot be measured
Before the grade, a capture-quality check reads camera distance, off-axis angle and limb visibility from the skeleton itself. A clip that fails is flagged rather than quietly scored, and metrics whose events are unreliable are withheld with the reason.
- 05Explain
A coach with tools, not a template
The AI coach — a frontier language model with tools — queries the graded data — strokes, angles, consistency, history — before writing, shows the trail, and cites the stroke and frame behind each claim. It never receives raw video.
The rubric itself is public: scoring guide.
What we measured
Internal measurements on our own corpus and test rigs. Not peer-reviewed; reproducible from the repository's regression harness, which fails the build if any of them regress.
Re-grading the 57 stored rowing sessions used to move a score by up to 24 points between runs of the same footage. After replacing pass/warn/fail cliffs with continuous credit and down-weighting low-visibility joints, the worst case is 3 and the mean is 0.6.
The running norms module reproduces the published subgroup means of its source cohort within 1.2 units on every variable, and predicted 77.6 mm of vertical oscillation against 77.2 mm measured by a commercial instrumented-treadmill report.
The lighter MediaPipe complexity setting is about 4× faster and about 8° worse on knee and elbow angles on our clips. Uploaded analyses run the full model; the speed is not worth the error.
Transcoding a clip before grading shifted knee angles by 2.24° against a 0.00° noise floor, so the grading path never re-encodes video.
The two-phone 3D Lab reconstructs joints at 6.23 mm RMSE after refinement (10.0 mm live) on a synthetic rig with realistic landmark noise. It has not yet been validated on real phones, and the product labels it beta.
The single-camera 3D lift recovers trunk and knee angles to 0.51° and 0.68° at 3 px landmark noise in simulation — and 3.5° on the elbow, which is why elbow-dependent metrics carry lower confidence.
What the literature says
Independent, peer-reviewed work on the same pose model and on the reference data the product uses. None of it is ours; all of it shaped what we built.
Hii C.S.T. et al. Automated gait analysis based on a marker-free pose estimation model. Sensors. 2023;23(14):6489.
doi:10.3390/s2314648931 adults, MediaPipe Pose (BlazePose GHUM Heavy) against a 10-camera Vicon system. Gait events detected at 95–99 %; temporal parameters within 20–40 ms mean absolute error; stance and step time ICC 0.92–0.96.
Why it matters here: The model and the sagittal single-camera setup are the same as ours. It is why our running module trusts timing from a good side-on clip and withholds it from a poor one.
Huang Y.-T. et al. Evaluating degenerative lumbar disease with markerless 3D motion capture: reliability and validity in sit-to-stand test. Sensors. 2025;25(10):3122.
doi:10.3390/s2510312221 participants, MediaPipe on two iPhone 14 cameras against an 11-camera VICON system. Test–retest ICC 0.81–0.99 across hip, knee and ankle; concurrent validity r 0.84–0.99; joint-position RMSE 8–55 mm depending on joint and axis.
Why it matters here: Two consumer phones, the same pose model, a clinical task. It is the closest published analogue to the 3D Lab, and the RMSE range is a reminder of where single-model depth estimation is weak.
Malisoux L., Napier C., Gette P., Delattre N., Theisen D. Reference values and determinants of spatiotemporal and kinetic variables in recreational runners. Orthopaedic Journal of Sports Medicine. 2023;11(10).
doi:10.1177/23259671231204629860 healthy recreational runners on an instrumented treadmill. Reference values and regression equations for spatiotemporal variables — contact time, flight time, step length and their derivatives — and for kinetic variables, as functions of sex, age, height, mass and speed.
Why it matters here: These equations are the running targets in the product — personalised to the athlete instead of one band for everyone.
Bramah C., Preece S.J., Gill N., Herrington L. Is there a pathological gait associated with common soft tissue running injuries? American Journal of Sports Medicine. 2018;46(12):3023–3031.
doi:10.1177/036354651879365772 injured runners (patellofemoral pain, ITB syndrome, medial tibial stress syndrome, Achilles tendinopathy) and 36 healthy controls. Injured runners showed greater contralateral pelvic drop and forward trunk lean at midstance, and a more extended knee and dorsiflexed ankle at initial contact. Pelvic drop was the strongest single discriminator: each extra degree raised the odds of being classified as injured by about 80 %.
Why it matters here: The basis of the Injury Load Index and of the rear-view pelvic-drop metric.
Where it breaks
One camera has no depth
Rotations perpendicular to the image plane are inferred, not measured. The 3D reconstruction says so on the panel, and metrics that depend on depth carry lower confidence.
Occlusion and loose clothing
A rigger in front of the legs, a baggy hoodie, or a hand crossing the hip moves landmarks by several degrees. Low-visibility joints are down-weighted; whole strokes with hidden legs are excluded from the rowing grade.
Frame rate and sampling
Timing metrics need enough samples. A 60 fps clip sampled every third frame arrives at 20 Hz, so the free plan withholds running contact-time metrics and says which limit — your camera or your plan — caused it.
The model is not deterministic
Two identical runs of MediaPipe on the same clip can differ by a frame or two. That is why grader repeatability is measured on our corpus instead of assumed, and why the same clip is never expected to score identically to the decimal.
Camera placement matters
Side-on and level is the assumption. The capture-quality check flags off-axis clips, and the perpendicularity warning turns hard past about 20–25°.
No peer-reviewed study of our own yet
We have not run a marker-based validation of the product, and nothing here has been through peer review. The numbers above are internal measurements, labelled as such. If you run a biomechanics lab and want to change that, write to us.
Run a validation with us.
If you have marker-based capture and athletes, we will bring the pipeline, the corpus tooling and the time. Methodology and results would be published, whichever way they come out.