Skip to content

With default settings (no filter), slow drift swamps the audio: 0.3 px of drift cuts in-band level by 12 dB #14

Description

@joeljose

Severity: High. The README tip says "Start with default settings and adjust from there", but the defaults fail on realistic footage.

Problem

Without -fl/-fh, postprocess_phase_signals applies no filtering. The phase signals are measured relative to frame 0, so any slow motion (camera or tripod creep, thermal drift, the object settling) appears as a large low-frequency ramp. After sub-bands are added, the output is min/max normalised to [−1, 1], so the ramp takes up almost all of the range and the audio shrinks to a small fraction of it. Any DC offset also affects the cross-correlation alignment.

Evidence (synthetic, 0.05 px, 440/660/250 Hz tones, 2200 fps, 0.5 s)

added linear drift over the clip default: correlation with truth default: in-band (100–1000 Hz) RMS -fl 100: correlation -fl 100: in-band RMS
0 px 1.000 0.504 0.997 0.485
0.3 px 0.264 0.127 (−12 dB) 0.998 0.504
3 px −0.025 0.016 (−30 dB) 0.952 0.426

A drift of 0.3 px over half a second is small for real footage, yet it makes the default output nearly useless.

Suggested fix

  • Make a gentle high-pass the default, e.g. -fl defaulting to max(20 Hz, fps/200). Keep --no-filter for raw analysis.
  • Always remove the mean and linear trend of each band before alignment and summing.
  • Normalise robustly: scale by a high percentile (e.g. the 99.9th of |x|) or to a target RMS, and clip, instead of min/max, which a single transient (a knock or a dropped frame) can dominate.
  • Update the README tip.

Acceptance criteria

  • Default settings on the synthetic 0.3 px drift case give correlation ≥ 0.95.
  • A test covers drift rejection with the default settings.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions