Active development. No license granted yet. Industrial-grade video vibrometry (WIP): ROI caching, phase-based subpixel displacement, and physics-oriented vibration features.
This repo measures transmission tower vibration from video.
Current pipeline:
- Extract and cache a golden ROI video clip (default 200 frames) to
.npz - Run a lightweight ROI mean-curve sanity check and export
.png/.csv
data/: input videos (e.g.demo_tower.mp4)scripts/extract_roi.py: cache ROI frames toresults/cache/*.npzroi_mean_curve_check.py: compute ROI mean curve and save plot/csvrun_pipeline.py: end-to-end runner (extract ROI + mean curve)
results/cache/: cached ROI.npzplots/: mean curve plot.pngdata/: mean curve.csvlogs/: run logs
pip install -r requirements.txtpython scripts/run_pipeline.pyAfter running,you should get:
-
results/cache/YYYY-MM-DD_main_roi_frames.npz -
results/plots/YYYY-MM-DD_mean_curve.png -
results/data/YYYY-MM-DD_mean_curve.csv -
results/logs/*.log
results/cache/*_main_roi_frames.npzcontains:
-
frames:ROI frame sequence-
shape:
(T,H,W,3)for color ROI (OpenCV default BGR) -
(optional future)
(T,H,W)for grayscale ROI
-
-
roi:ROI coordinates(x,y,w,h) -
video:source video path -
fps:frames per second
-
ROI mean curve is used as a sanity check:
-
verifies ROI extraction correctness
-
help detect abnormal frames via sudden instensity jumps
-
-
ROI is currently set in
scripts/run_pipeline.pyas(x,y,w,h)