遇见数据集

Full-field vibration mode shapes from arbitrarily timed still images

收藏
Zenodo2026-08-06 更新2026-08-13 收录
官方服务:

资源简介:

This dataset contains two parts: 1. The real measurement underlying the paper: 500 ordinary, arbitrarily timed still images of an aluminium beam (400 × 20 × 2.9 mm, free–free boundary conditions) under broadband (70–600 Hz) random excitation with an electrodynamic shaker, together with the synchronised reference record (force, accelerometer, and camera-exposure trigger). From these two files alone, the SIgMA method (Still-Image Modal Analysis) recovers the full-field deflection shapes of the first three bending modes (71, 220, 383 Hz) — see the paper and the accompanying code.2. A fully synthetic dataset with known ground truth, sharing the real measurement's image size, target frequencies and noise characteristics, but with exactly known per-mode image amplitude and phase. Because the real measurement has no independent ground truth, this dataset is what lets the paper's Fig. 3 compare SIgMA's recovered mode shapes against an analytically known answer via MAC. It is generated by `simulate_dataset.ipynb` (in the accompanying code) from a fixed random seed, so re-running that notebook reproduces these files byte-for-byte — they are included here purely for convenience, so the paper's results can be reproduced without regenerating them. Description of the data and file structure All files are Python pickles (protocol ≥ 4) or plain JSON. Loading the pickles requires only NumPy (see snippet below). Real measurement `20260324_055154_images.pkl` (≈136 MB) A `dict` with two entries: - `metadata` (`dict`) — acquisition parameters of the Basler acA2440-20gm global-shutter camera: `camera_model`, `serial_number`, `tick_frequency_hz` (125 MHz camera clock), `exposure_time_us` (150), sensor window (`width` 141, `height` 1934, `offset_x`, `offset_y`), `correct_for_exposure_midpoint` (True), `gpio_sync_enabled` (True), `software_trigger` (True), `total_captures` (500), `failed_grab_count` (0).- `images` (`list` of 500 `dict`s), each with: - `image` — `uint8` array, shape `(1934, 141)`: one still frame (vertical strip along the beam, zebra-stripe pattern); - `timestamp_s` — `float`: capture instant on the **camera clock** (s); mapped to the reference time base through the trigger channel (see below); - `timestamp_ticks` — `int`: the same instant in raw camera ticks (`tick_frequency_hz`); - `frame_id` — `int`: frame counter (0–499). Capture instants are pseudo-random, 0.08–0.31 s apart, spanning ≈52 s. `20260324_055246_NI_measurement.pkl` (≈166 MB) A `dict`: - `task` (`dict`): - `time` — `float64` array, shape `(5173907,)`: time axis, 0–101.1 s; - `channel_names` — `['Force', 'Acc', 'Trig']`; - `data` — `float64` array, shape `(5173907, 3)`, columns in the order of `channel_names`: excitation force (in-line force transducer), reference acceleration (ICP accelerometer, the phase reference of the method), and the camera's ExposureActive output (high during each exposure — this digital trace places every image on this time base with 19.5 µs accuracy); - `sample_rate` — `int`: 51200 (Hz).- `comment` (`str`): `'blue noise'` (excitation profile note). Instrumentation details and sensitivities are given in the paper's Methods ("Step 1: Acquiring pictures and reference signal"). Synthetic ground-truth dataset `simulated_images.pkl` (≈136 MB), `simulated_NI_measurement.pkl` (≈88 MB) Same structure as the real-measurement files above (images: `uint8`, `(1934, 141)`, 500 frames; NI record: `Force`/`Acc`/`Trig` at 51.2 kHz), except: - `simulated_images.pkl`'s `metadata` is `{"source": "simulate_dataset.ipynb", "synthetic": True, "bit_depth": 8}` instead of real camera metadata;- `simulated_NI_measurement.pkl`'s `comment` reads `'Synthetic data from simulate_dataset.ipynb, not a real measurement.'`;- the underlying displacement, acceleration, force and trigger signals are generated from known ground-truth amplitudes and phases (see `ground_truth.json`), not measured. `ground_truth.json` (≈0.5 KB) The exact per-mode parameters used to generate the synthetic dataset, and the noise levels applied to each channel: ```json{ "ground_truth": { "71.0": {"img_amp_px": 0.048, "acc_amp": 0.4, "phase": 0.8}, "220.0": {"img_amp_px": 0.039, "acc_amp": 1.2, "phase": 2.3}, "383.0": {"img_amp_px": 0.061, "acc_amp": 3.4, "phase": 4.6} }, "beam_top": 67, "beam_bottom": 1850, "bit_depth": 8, "include_acc_noise": true, "acc_noise_std": 0.3, "include_force_noise": true, "force_noise_std": 0.02, "include_image_noise": true, "image_noise_std": 3.0}``` `img_amp_px` is the true per-mode image-plane amplitude (px) at the point of maximum deflection; `acc_amp` the true acceleration amplitude (m/s²); `phase` the true phase (rad). `*_noise_std` are the Gaussian noise standard deviations added to each channel (accelerometer: m/s²; force: N; image: grey levels, 8-bit). Loading the data ```pythonimport jsonimport pickle with open("20260324_055154_images.pkl", "rb") as f: images = pickle.load(f) # images["images"][0]["image"] -> first frame with open("20260324_055246_NI_measurement.pkl", "rb") as f: reference = pickle.load(f) # reference["task"]["data"] -> Force/Acc/Trig with open("simulated_images.pkl", "rb") as f: sim_images = pickle.load(f) with open("simulated_NI_measurement.pkl", "rb") as f: sim_reference = pickle.load(f) with open("ground_truth.json") as f: ground_truth = json.load(f) # true per-mode amplitude/phase used to generate the synthetic data``` Code The SIgMA implementation and a reproduction notebook (`reproduce_results.ipynb`, which regenerates the paper's deflection shapes from exactly the real-measurement files above; set `DATA_SOURCE="simulated"` to instead run it on the synthetic dataset and check the recovered shapes against `ground_truth.json` via MAC) are available at https://github.com/ladisk/papers in the directory "Full-field vibration mode shapes from arbitrarily timed still images" (code under the PolyForm Noncommercial 1.0.0 license; the SIgMA method is the subject of patent application LU606975, University of Ljubljana). The same directory's `simulate_dataset.ipynb` generates the synthetic dataset from a fixed random seed — running it reproduces `simulated_images.pkl`, `simulated_NI_measurement.pkl` and `ground_truth.json` byte-for-byte. License This dataset is released under **CC BY 4.0**. The accompanying code is licensed separately (PolyForm Noncommercial 1.0.0, see the GitHub directory above).

提供机构:
Zenodo
创建时间:
2026-08-06
二维码
社区交流群
二维码
科研交流群
商业服务