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.npzresults/plots/YYYY-MM-DD_mean_curve.pngresults/data/YYYY-MM-DD_mean_curve.csvresults/logs/*.log
results/cache/*_main_roi_frames.npzcontains:
frames:ROI frame sequenceshape:
(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 pathfps: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)