Computer Vision & Biomechanics
Co-founded venture · ongoing
SwingDNA
Two consumer cameras, no markers, and a 3D reconstruction of a golf swing accurate to roughly 9 to 11 mm per joint. I wrote the triangulation and biomechanics layer on top of RTMPose for 2D keypoints and OpenCV for the camera geometry. Every metric carries uncertainty propagated from that geometry, and joints the cameras could not see are flagged rather than filled in, so a change between two sessions can be told apart from the noise of the system.
Overview
SwingDNA reconstructs a 3D golf swing from two ordinary cameras — no markers, no suit — accurate to roughly 9 to 11 mm per joint. Every metric it reports carries uncertainty propagated from the camera geometry, and joints the cameras could not see are flagged rather than filled in.
The point is not the swing report. It is answering whether a change between two sessions is a real change or within the measurement noise of the system. The pipeline is three layers: RTMPose detects 2D keypoints (Halpe26, 26 per frame); OpenCV handles the classical camera geometry and calibration; and our own mv-pose code does the triangulation and the biomechanics on top.
The problem
The real question is not what the swing looks like once, but whether a change between two sessions is a real change or just within the measurement noise of the system. Marker-based motion capture is accurate but expensive, lab-bound, and slow; most markerless tools output confident-looking numbers with no sense of their own error, and silently fill in joints the cameras never actually saw.
How it works
- 01
2D keypoints with RTMPose
Each frame is reduced to 26 Halpe26 keypoints per view — the raw signal the rest of the pipeline builds on.
- 02
Classical camera geometry in OpenCV
Calibration and multi-view geometry establish where the two cameras sit relative to each other and the scene.
- 03
Triangulation + biomechanics in custom mv-pose code
Our own layer triangulates the two views into 3D and derives roughly 10 biomechanics metrics from the reconstructed motion.
- 04
Uncertainty on every metric
Measurement error is propagated through the geometry so each metric carries its own uncertainty, rather than being reported as a bare number.
- 05
Flag missing joints, never impute
When a joint is not reliably seen in both views it is flagged as missing instead of being guessed, so downstream analysis is never quietly misled.
Validation & rigor
Accuracy is benchmarked against a commercial launch monitor, and a Minimal Detectable Change (MDC) framework is used to say when a difference between swings is real rather than noise.
Per-joint accuracy sits at 9–11 mm and reconstructed segment lengths are within 0.5% of tape measurement — on the ~20-swing, 2-subject dataset validated so far.
“Every number ships with its uncertainty, and a joint we did not really see is flagged, not invented.”