When an earthquake simulator shakes a full-scale suspended ceiling, hundreds of connection points move at once, each one telling a different part of the story about how the system survives seismic loading. Measuring that motion has long been a logistical headache for structural engineers: contact sensors such as linear variable differential transformers, string potentiometers, and accelerometers are accurate but impractical at high spatial densities, demanding sprawling cable networks, fragile connectors, and added sensor mass that can disturb lightweight specimens. A newly published open-source software suite, described in the journal SoftwareX by researchers led by Mearge Kahsay Seyfu of National Taipei University of Technology, promises to replace that instrumentation burden with nothing more exotic than two consumer action cameras, printed paper markers, and a standard laptop.
The suite, called ParaStereoSync and KineViz-3D, is distributed under the MIT license and runs on Windows, Linux, and macOS using freely available Python libraries including OpenCV, NumPy, SciPy, Matplotlib, and Tkinter. It is organized as five standalone graphical applications linked by CSV files and video streams. Three utility tools, VidTrim, tkCalib2, and TempArUco, prepare the inputs; ParaStereoSync performs the tracking and three-dimensional reconstruction; and KineViz-3D turns the resulting coordinate histories into interactive spatial and kinematic visualizations. No commercial software, hardware dongle, or paid cloud service is required at any stage of the pipeline.
The team’s motivation stems from a well-known mismatch between existing measurement tools and the realities of large-scale testing. Digital image correlation, or DIC, has become the dominant vision-based technique in structural engineering, tracking small patches of a speckle-coated surface between images to recover full displacement fields. Mature packages such as Ncorr, OpenCorr, py2DIC, D²IC, and commercial systems like GOM ARAMIS and VIC-3D have made the method widely accessible. Yet, the authors argue, these tools were all designed for a specific experimental setting: a densely painted surface, uniform controlled illumination, high image resolution, small displacement ranges, and hardware-synchronized cameras. None of those conditions reliably holds on a full-scale ceiling system in a test hall, where speckling an entire bay is impractical, lighting varies, and consumer cameras run on independent internal clocks.
That last problem, camera synchronization, is the suite’s headline technical innovation. When two cameras lack a shared trigger signal, they record on separate clocks and accumulate temporal offsets, so each camera effectively sees a slightly different moment in time. In stereo photogrammetry, the resulting three-dimensional coordinates contain spurious apparent displacements proportional to the structure’s velocity multiplied by the timing error. ParaStereoSync attacks this in software. Its synchronization algorithm tests a range of candidate frame lags between the two videos, interpolating the second camera’s coordinates at each lag, triangulating the matched points, and computing the mean-square reprojection error. The lag producing the lowest error is selected, and a cubic spline fit around the minimum refines the result to sub-frame precision. Crucially, a separate lag is estimated for each tracked point, which absorbs point-specific timing offsets including those caused by the rolling-shutter readout of CMOS sensors, without requiring any explicit sensor timing calibration or special hardware.
Tracking itself relies on the Enhanced Correlation Coefficient criterion under an affine warp model, which is more robust to changes in illumination than simpler sum-of-squared-differences approaches. A multi-step initialization propagates the converged transform from each frame into the next, restricting the search to a localized region and allowing the tracker to follow the large inter-frame displacements that occur during strong-motion excitation. If convergence fails under the affine model, the tracker automatically retries with a simpler Euclidean model, then a pure translation model, with progressively heavier Gaussian smoothing at each retry level. Rather than tracking every pixel the way full-field DIC does, the software follows sparse targets at structurally meaningful locations: printed ArUco fiducial markers, or even natural features such as bolts, connection hardware, and panel corners, eliminating the need for speckle preparation entirely.
Speed comes from camera-level parallelism. Both cameras are dispatched as independent worker processes through Python’s ProcessPoolExecutor, each running the full tracking pipeline on its own video file. The authors deliberately rejected point-level parallelism, noting that video decoding is input-output-bound and many small processes reading the same file would saturate the storage bus. On an Intel Core i7-11800H laptop, the approach achieved speedups of 1.44 to 1.74 times. In their demonstration, tracking 322 ceiling panel points across 2,300 frames took 14.63 minutes sequentially and 8.42 minutes in parallel, with a 100 percent tracking success rate. Tracking 64 T-bar grid intersections over the same frames took 1.95 minutes with parallelism versus 3 minutes without.
The utility tools tackle the setup bottlenecks that historically made high-node-count campaigns tedious. VidTrim wraps FFmpeg in a lightweight graphical interface and trims raw footage losslessly using stream-copy mode, so no frames are re-encoded or degraded; it also offers a motion preview that lets users confirm a target is trackable before committing to a full run. tkCalib2 supports two calibration methods: a standard multi-image checkerboard procedure, and a single-image approach that solves camera pose from known three-dimensional control points, valuable when a specimen is too large for a big calibration board. TempArUco is perhaps the biggest time-saver: it reads the first frame from each camera, enhances contrast with CLAHE preprocessing, detects all ArUco markers, matches them across cameras by their unique binary IDs, and writes template files automatically. In the team’s demonstration, it produced templates for 322 markers in roughly 90 seconds, replacing what would otherwise have been a two-hour interactive clicking session.
The pipeline was put to the test at the Carleton University seismic resilience laboratory on a suspended lay-in ceiling system spanning 5.156 by 5.156 meters, comprising 81 panels on a T-bar grid mounted on a purpose-built shaking table. One-hundred-millimeter ArUco markers sat at every panel corner and 50-millimeter black-and-white markers at every grid intersection, yielding 324 and 64 targets. Two GoPro HERO12 Black cameras recorded at 4K resolution and 60 frames per second from a stereo baseline of 2.08 meters at an average standoff of 3.87 meters. Synchronization analysis found a well-defined minimum at 27 frames, refined to an average of 27.22 frames, with per-node lags ranging from 26.60 to 28.88. Validation against accelerometer-derived displacements in prior large-scale experiments showed a root-mean-square error of at most 2.970 millimeters and a mean absolute error below 1.708 millimeters across all configurations.
KineViz-3D then turns the raw tracking output into engineering insight. Its centerpiece is an animated three-dimensional heatmap of displacement interpolated onto a 50 by 50 grid, with colormap bounds fixed to global extremes so amplitudes remain comparable across frames. A six-panel profile evolution dashboard synchronizes out-of-plane and in-plane displacement profiles, three phase-space orbit plots, and a live bar chart of instantaneous displacement magnitude, and it automatically annotates the frame and node pair with the maximum displacement differential, a direct quantitative indicator of emerging connection failure. Selecting four nodes on a rigid body invokes the Kabsch algorithm to decompose six-degree-of-freedom motion. In the ceiling test, the analysis identified a 4.91-millimeter displacement differential between outermost and innermost grid nodes, and the rigid-body decomposition revealed a 0.3-degree panel rotation about the Y axis, later confirmed by visual inspection of a loosened grid connection.
The implications extend well beyond ceiling research. Any experiment using two or more unsynchronized consumer cameras to observe dynamic phenomena faces the same inter-camera timing problem, and the reprojection-error synchronization approach applies wherever stereo pairs can see identifiable features in motion, from biomechanics to geotechnical centrifuge testing to field bridge monitoring. The modular design lets researchers feed data from commercial systems directly into KineViz-3D, or use ParaStereoSync as a standalone stereo photogrammetry pipeline. The authors identify vectorized, batched triangulation with optional GPU offload as the path to scaling to higher node densities. For now, the message to cash-strapped laboratories is striking: a laptop, two action cameras, and a sheet of printed markers can now capture three-dimensional structural motion across hundreds of points, at a fraction of the cost of equivalent commercial instrumentation.
Subject of Research: Open-source stereo-vision software for tracking 3D structural displacements in earthquake engineering experiments
Article Title: ParaStereoSync and KineViz-3D: A Python suite for parallelized stereo-vision tracking and spatio-temporal visualization of structural displacements
Article References: ParaStereoSync and KineViz-3D: A Python suite for parallelized stereo-vision tracking and spatio-temporal visualization of structural displacements. (n.d.). https://doi.org/10.1016/j.softx.2026.103139
Image Credits: AI Generated
DOI: 10.1016/j.softx.2026.103139
Keywords: stereo vision, structural engineering, earthquake engineering, digital image correlation, camera synchronization, shake-table testing, open-source software, Python, suspended ceilings, displacement measurement, ArUco markers, computer vision
Cite Scienmag News
Denise Maddox. (October 16, 2026). Open-Source Python Suite Turns Cheap Cameras Into 3D Structural Motion Trackers. Scienmag. https://scienmag.com/open-source-python-suite-turns-cheap-cameras-into-3d-structural-motion-trackers/
Denise Maddox. "Open-Source Python Suite Turns Cheap Cameras Into 3D Structural Motion Trackers." Scienmag, 16 October 2026, https://scienmag.com/open-source-python-suite-turns-cheap-cameras-into-3d-structural-motion-trackers/. Accessed 16 October 2026.
Denise Maddox. "Open-Source Python Suite Turns Cheap Cameras Into 3D Structural Motion Trackers." Scienmag. October 16, 2026. https://scienmag.com/open-source-python-suite-turns-cheap-cameras-into-3d-structural-motion-trackers/

