Track points on high-speed footage and get scientific results in real units, each with its uncertainty: speeds, accelerations, strain, impact and rebound, natural frequencies, RPM, projectile velocity and joint angles. Pick the application, place or auto-pick points, track, and read the results; export them to Excel or a PDF report. Open it from AI > Motion Studio ().
Opening the studio pauses the workflow, hides the toolbox and closes the editor and the viewer; closing it brings back the toolbox and playback. On first open it asks what you are measuring. Each tile is a customer application, not a tracking technique: it opens its own studio, with its own name, colour, named points, tracking settings, result cards and charts. Custom lets you choose everything yourself. The button in the top bar brings this page back to switch application.
Pick an application, or describe it in the bar above and the AI sets everything up from the clip.
The launcher. Each tile sets up points, tracking method, group model, filters, analyses and charts for that application.
After you pick the application, the studio opens on its first step, Source. The studio's state (application, clip, points, keys, scale, settings) is saved in the workflow file, so a saved workflow reopens the studio exactly as you left it.
Everything fits on one screen: the frame on the left with the timeline, the tracking buttons and one lane per point; the current step's pane on the right. The four steps, Source, Points, Track and Results, are in the middle of the top bar; you can move between them at any time. On the right of the top bar: Reset all, this guide, and ✕ to close.
Crash Analysis Studio on the Points step. Lanes: ■ sure, ■ uncertain, ■ placed by the group, ■ lost. The faint line is the whole path, the solid part the last 30 frames; the white arrow is the motion vector.
| Key / mouse | What it does |
|---|---|
| ← →, timeline, | Previous / next frame (no tracking) |
| Click on the frame | Add a point (to the active body, or the next named point) |
| Drag a point | Move it; a magnifier (loupe) beside the cursor shows the pixels. Moving a point sets a key on that frame |
| Right-click a point | Remove it |
| Esc | Close the studio |
The Source step starts with one choice: One camera (2D), a clip or a reader in the workflow (below), or Multi-camera (3D), a rig saved in Camera Studio whose clips open side by side, synced (see Multi-camera (3D)). Switching back to one camera brings your one-camera session back as you left it.
Pick the clip to measure. The list shows the workflow's Movie Reader and Photron Movie Reader nodes; click one to use its clip. Open... opens IW's file browser to pick any other MP4 or Photron MRAW (Assets, Downloads, Documents); it is listed under Opened. The clip is read where it is, never copied or uploaded. The card below shows its size, frame count and playback rate. Next: points goes on; clicking on the frame also goes straight to placing points.
The Source step: the workflow's movie readers, Open... for any other clip, and the clip's facts.
Most applications name their points, and the pane asks for them in order: e.g. Gauge top and Gauge bottom for material testing, Object and Second point for a drop, Hip, Knee, Ankle, Toe, Trunk for biomechanics, Centre and Rim mark for rotating machinery, Projectile for ballistics. Click each on the frame, then drag to fine-tune with the loupe.
The Time & scale card decides what the numbers mean. Both choices show as chips in the top bar and are saved with the studio.
Track forward or back from the current frame, or one frame at a time. Stop at any time; fix a point by dragging it and track again from there.
| Button | Action |
|---|---|
| Track | Track forward to the last frame |
| Track backward to the first frame | |
| / | Track one frame forward / back |
| Cancel | |
| Key | Set a key: the points as they are now on this frame. The tracker never moves a key; tracking restarts there from your positions. |
While it tracks, the frame shows the newest tracked frame with its points and trails, the timeline follows it, and the lanes fill in. The preview skips frames when tracking is faster than the display; every frame is still tracked.
Every point gets a state on every frame, shown by its colour on the frame and in its lane:
Results use sure frames only. Uncertain, placed and lost frames are gaps, so no peak comes from a doubted position.
Lanes after tracking from keys: tracking starts at the first key; the toe drops to uncertain where it passes the other leg, then is re-keyed.
The Tracker card on the Track step picks the method. New sessions start on Auto (recommended): when you press Track, the studio takes a quick look (well under a second) at the placed points over the next 10 frames and picks the method, then says why in one line, e.g. Auto chose Template: textured targets, steady look. Printed dots on a plain background get Marker centroid; points whose look changes in a short template trial (rotation, blur, cover) get NanoTrack when its package is installed (up to 12 points; otherwise Template with a looser look-alike margin); large moves between frames, or many points on smooth texture, get Optical flow; anything else keeps the application's own method. The choice is made again at every Track. Choosing a method yourself in the list overrides Auto; sessions saved before Auto existed keep their method.
Each application's own method suits it; you rarely need to change it. The speed tag is measured end to end, decoding included (28 points on a 1280 × 674 clip): Fast ≥ 200 fps, Medium 60–200, Slow < 60.
| Method | How it works | Good at | Limits | Speed |
|---|---|---|---|---|
| Template (NCC, sub-pixel) default | Remembers a small patch around each point on the first frame and finds the best match in a search area around where the point should be now (normalised cross-correlation, so brightness changes do not matter). A parabola through the best match gives a position finer than one pixel. | Most accurate on textured surfaces; ignores brightness changes; matching the first patch means no drift on long clips. | Needs texture in the patch; the search area must cover the largest move between two frames; strong rotation or scale change needs a group model. | Fast · 328 fps |
| Optical flow (pyramidal LK) | Estimates how the patch's brightness pattern shifted, coarse to fine over an image pyramid, then tracks back again and rejects points that do not return to where they started. The first patch then refines the result. | Follows fast or large moves with a small search. | Needs texture; weaker on repeated patterns, motion blur and occlusion. | Medium · 154 fps |
| Marker centroid | Finds the dot (dark or bright) near the point and takes the centre of its area. | Painted or stuck-on dots: exact centre, very fast, immune to texture. | Needs a clear dot on a plain background, one dot per point; touching dots merge. | Fast · 236 fps |
| AI box: NanoTrack | A small neural network (OpenCV's NanoTrack) learns what is inside a box around each point on the first frame and finds it again in an area about four boxes wide, scoring how sure it is. The box centre is the point; the score is its confidence. All points go through the network together in one pass per frame. Needs the NanoTrack feature package. | Big changes in look: rotation, blur, scale, partial cover. On a test object turning 120° in 40 frames it stayed sure on every frame, where template matching was sure on 6 %. | Box-level: 2–3 px RMS on that test, not sub-pixel. Cost grows with every point. Can jump to a look-alike next to the target. | Slow · 48 fps |
| AI box: DaSiamRPN | A larger siamese network (OpenCV's DaSiamRPN) on the GPU, the same idea as NanoTrack with a stronger model. | The most robust choice for a few targets (up to 8) that turn or change their look. | Box-level, not sub-pixel; up to 8 points (each needs its own 200 MB network); without a GPU it runs at about 3 fps; needs the DaSiamRPN feature package. | Medium · 75 fps (8 points) |
Use an AI box method only when the target turns over, tumbles or changes its look so much that template and optical flow lose it; for measurement on a target that keeps its look, template and optical flow are over ten times more accurate (under 0.1 px on the synthetic tests). Both run on the GPU following the FP16 setting (without a GPU NanoTrack uses every CPU core, 29 fps with 28 points). Each appears in the Tracker card only when its optional feature package (NanoTrack, DaSiamRPN) is installed; a saved session that used a missing one opens with Template.
Group model: points of one body move together. Similarity (move, turn, scale), affine (plus shear) or perspective fit all the body's points each frame; a point that disagrees is rejected, a hidden point is placed by the others (shown as placed by the group), and the fit's rotation and scale turn each patch so matching keeps working. Each point alone uses no fit (independent points, e.g. droplets).
Advanced values (changes apply to the next track run; Defaults restores the application's values):
Results shows the application's own cards and four charts, synced with the frame: the crosshair on the charts follows the current frame. Every value carries its uncertainty (± one standard deviation unless it says 95 %), and charts draw a ±1σ band. The fit window is chosen from the data (the longest window whose residuals still match the tracking noise), and the cards show Computing... until the server's analysis arrives.
Results in the Custom application: cards with ±, four synced charts, and the three exports.
Two to eight synchronized cameras see the same points from different directions. Camera Studio calibrates them as a 3D rig (each camera's lens,
position and time offset, from a wand; see Camera Studio's 3D rig mode) and saves a .rig file. Motion Studio opens that rig, shows its clips side by side
on one timeline, and keeps every point paired across the views. Results come in 3D: x, y, z in mm with ± for every point seen by two or more cameras, or per view in image pixels.
${assets}/rigs, with each rig's wand error)
and two rendered demos with an exact calibration: the Demo 3D rig (an LED flash, a wand and a thrown ball) and the
Demo: drill drop test (3 cameras), a photoreal test bay at 1,000 fps where a cordless drill with four printed bullseye targets falls 1 m onto concrete,
bounces and tumbles (impact at 4.43 m/s; camera A is level, so −y is up and a bounce reads straight off the y chart).
Camera Studio's 3D rig mode offers the same two demos for the wand calibration. Open rig... opens a
.rig from anywhere in Assets; Camera Studio takes you there to calibrate a new one.Points in a 3-camera rig: the point placed in A, its epipolar lines in B and C, and the free cell showing the selected point at native pixels in every view. Ring colours: on the line (snapped), found by Find match, proposed (dashed), white: placed by hand.
Track runs the same tracker in every view, with the same settings (Auto included: Auto picks a method per view from a quick look at each), one frame of every view in turn, so all views fill in live. Points stay paired by name: a row always belongs to the same 3D point in every view. The Track pane shows, per view, the frames tracked, the states on this frame and the method used; per point, its chips on this frame and the reprojection error now and over the tracked frames (median / worst). A worst value of several pixels points to a frame where one view jumped to another feature. The lanes show one band per point with a thin row per view. Speed is shown as world frames per second with every view tracked.
A run only rewrites the rows of the points it tracks: a point placed later (say a part that comes into view on frame 500) keeps its own track when you track the others again from an earlier frame, and a key set on an earlier frame leaves a point that did not exist yet alone.
Results opens on 3D (rig): on every frame, each point seen surely by two or more cameras is triangulated (a linear start, then the position that best fits all its marks). The left shows the 3D path: every point's path in mm, coloured by speed (scale on the right), the cameras as frustums (or as markers on the edge when they are off screen), camera A's x, y, z axes and a floor grid. Drag to orbit, Shift+drag to pan, the wheel zooms, double-click (or ) resets; the marker on each path is the current frame and follows the timeline and Play. Views switches the left back to the cameras. The right shows the usual cards and charts in mm: displacement, speed (m/s) and acceleration (g) in 3D, each with ±, and Distance 1-2 in 3D (on the Demo's wand it reads its 500 mm). The time and CFC settings work as with one camera. The chips A, B, C switch to one camera alone, in its image pixels.
Where the ± comes from (the info line and the 3D position ± card show it):
Checked against the Demo 3D rig's truth: with the exact cameras, the tracked ball is within 0.12 mm RMS and 1σ covers 73 % of the frames (68 % is ideal). With a rig calibrated through Camera Studio's wand, the error is 0.45 mm RMS (a common scale of 0.015 %); the stated ± is cautious there, because it carries the wand's full stated tolerance. Placed by hand in the studio (zoomed in, clicks with a person's aim, Find match, snap), both wand ends come out at 0.6 mm RMS with 1σ covering 68 %. A point seen by only one camera has no 3D value: it is named in the info line, never guessed. Export CSV and Excel gain z and the ± per axis; the PDF report adds the 3D path view as shown.
Each application adds its own analysis on top of the tracked points. The numbers in the mockups are real results from the sample clips.
Gauge top and Gauge bottom form a virtual extensometer: strain, elongation, gauge length and the failure frame (the first frame below half the running peak). Add grid points for a strain map (εxx, εyy, εxy, principal and equivalent strain) drawn over the specimen; triangles outside the gauge are masked.
Motion relative to the Sled reference. Each body's position and rotation come from a rigid fit of all its sure points; a point that disagrees with the rest is dropped on that frame (red cross on the chart). Rotation is withheld when the points are too close or the body stretches. Filter: auto, or CFC 60/180/600/1000 (SAE J211), refused when the capture rate is too low for it.
Vehicle reference: put 4-6 points on rigid structure on both sides of the dummy (pillars, sill, door striker; not the dash or the seat). Their mean motion is subtracted: an on-board camera shakes and turns during the pulse (NHTSA 11500: up to 52 g of apparent acceleration; with 6 reference points the head's RMS difference to the accelerometer fell from 15 to 7 g). See docs/motion_studio_accel_validation.md.
Crash templates (the Points step's template list, the launcher and AI setup): Frontal (Head, Chest, Pelvis, Vehicle reference), Side impact (Head, Thorax, Pelvis, Door / B-pillar, Vehicle reference), Pedestrian headform (Headform, Fixed reference) and Drop tower (Impactor, Specimen, Fixed reference). Each body gets its SAE J211 class (head, headform, impactor and pelvis CFC 1000; chest and thorax CFC 180; structure CFC 60; the filter shows template) and a one-line hint for where to place its points. HIC is read for the head, headform or impactor. A class the capture rate cannot carry (CFC 1000 needs over 4,155 fps) is refused for that body with a note, and the body is smoothed from the data instead.
Sensor... (Results): import an accelerometer CSV (choose or drop the file). Map the time column (s or ms), 1-3 acceleration channels (g or m/s²; tick the ones in the image plane, e.g. X and Z for a side view), an optional reference to subtract (the sled), an optional CFC on the sensor, and the alignment: a frame column (best), the time zero plus an offset, or auto by cross-correlation (can be off by several ms on a smooth pulse). The sensor is compared at the video's bandwidth (integrated to position, then smoothed exactly like the video): the acceleration chart shows it dashed (the faint line is the sensor with its own filter), and a card shows the RMS and mean difference, the correlation and both peaks with their times. The sensor's HIC15 / HIC36 (all channels, no reference) is shown next to the video HIC, even when the video HIC is refused. Excel gets a Sensor comparison sheet; the PDF a Video vs sensor section. Without a sensor, acceleration charts say verify against a sensor.
Fall and rebound arcs fitted with one shared gravity: impact and rebound speed, coefficient of restitution, contact time, mean contact deceleration, compression (with the Second point), and drop / bounce heights (inferred). e and the times need no scale.
| Mode | Peak | Ring-down fn | ζ |
|---|---|---|---|
| 1 | 931.9 ± 7.3 Hz | 932.07 ± 0.03 Hz | (1.67 ± 0.21)e-4 |
| 2 | 2216.9 ± 7.3 Hz | 2219.05 ± 0.15 Hz | (1.18 ± 0.08)e-3 |
Drift-free displacement, Welch amplitude spectrum, spectrogram and ring-down per point. A modes table gives each natural frequency and its damping ratio ζ from the decay after a pluck; click a row to see its ring-down. Needs the capture rate.
Centre and Rim mark (or 3+ marks, with the centre in their middle): RPM with a 95 % interval, a periodicity cross-check, angular acceleration, run-out once per turn (TIR) and the centre orbit. An oblique view is handled as a tilted circle. Needs the capture rate.
One Projectile point, tracked from two keys: velocity, direction, the change of speed across the frame, and with a Mass the kinetic energy and momentum. A drag check says whether the slow-down is consistent with air drag, not drag, or below what the frames resolve. Needs the capture rate.
Hip, Knee, Ankle, Toe, Trunk: knee, hip and ankle angles, angular velocity, hip speed, a stick figure, and segment lengths that flag frames where a marker slid. Mark events by eye (foot off, touchdown). The ± includes a 2D bound per segment: one side camera gives angles to a few degrees.
Airbag (bag area, height and width, impactor plate speed and deceleration), Spray & Droplet (droplet speeds, spray width, penetration and angle), Robot Path (tool path, deviation, speed along the path), Physics Lab (pendulum swing angle, phase plot, rise heights), Line QA (every machine cycle against a golden cycle, cycle times) and Blast (front position and speed, bright area). Custom gives displacement, speed, acceleration and the path for any points.
The Results pane has three exports, all built from exactly what is on screen (sure frames, time zero, analysis window, capture rate and units):
| frame | time_s | p1_x | p1_y | p1_state | strain_% | strain_sigma |
|---|---|---|---|---|---|---|
| 22 | 0.000367 | 141.62 | 88.04 | sure | 2.41 | 0.07 |
| 23 | 0.000383 | 141.60 | 87.71 | sure | 2.64 | 0.07 |
| 24 | 0.000400 | 141.59 | 87.37 | sure | 2.82 | 0.07 |
The PDF report and the Excel workbook's per-frame sheet (illustrative values).
Video (next to the analysis frames) opens a dialog with two tabs.
iw_motion_studio_exports. It is encoded as MPEG-4 (mp4v): it plays in desktop players
(Windows Media Player, VLC) but not inside a browser page.Fit fits a model to one point or body over a frame interval: x or y position, displacement, speed or acceleration.
| Model | Use | Reports |
|---|---|---|
| Linear | constant velocity | velocity |
| Quadratic | constant acceleration, free fall | acceleration in m/s² and in g |
| Damped sine | vibration, ring-down | frequency, damping ratio, natural frequency |
| Exponential decay | settling, decay | time constant |
Each parameter has ±1σ from the fit covariance scaled by the residuals, plus R² and the residual RMS. The chart shows the data, the fit curve and the residuals. Keep for the export adds the fit to a Fits sheet in Excel and a Model fits table in the PDF.
Fit positions where you can. Speed and acceleration samples are smoothed, so their ± is a lower bound. With a scale from gravity, a free-fall fit cannot measure g: the studio says so.
Compare opens trial A against trial B on one screen.
AI setup (the button in the top bar) opens a dialog that takes a plain sentence, e.g. "head acceleration of the dummy in g"; suggestion chips show typical requests for the application, including the crash templates. The dialog shows the proposed setup as a table (application, method, group, template / search, start frame, filter, smoothing, units) and nothing changes until Apply. Later requests refine it ("use optical flow", "smooth more", "it tumbles"). With an empty prompt, Set up from the clip proposes a setup from what Knowledge Studio knows about the clip: its notes, timed boxes, activity, detections and calibration. The AI only reads this text, never the frames. Without an AI, built-in rules are used (AI unavailable: rules used).
Reset all in the top bar starts the studio again from scratch: the application, points, keys, tracking results, scale and settings are removed, and the studio goes back to the application picker and the Source step. It asks first:
This removes the application, points, keys, tracking results, scale and settings, and starts again from the Source step. Your clips and the workflow's nodes are not changed.
The confirmation. Esc or a click outside cancels.
The studio runs on the C++ node Multi-Point Tracker (cv.multi_point_tracker, Tracking category, CUDA and CPU builds), which you can also use
in any live workflow:
.calib) and world_homography inputs.The tracker's fixed cost is under 1 ms a frame on both builds; the studio shows its tracking speed (fps best) after each run.
For box tracking in other workflows, Multi Box Tracker (cv.multi_box_tracker, NanoTrack feature package) follows N boxes (x, y, w, h) at once and
outputs the boxes, a confidence per box and a preview; Start or new boxes restart it. Demo: demos/Inference/Multi Box Tracker.json.