band_snr — MOTIONMAG temporal op

• 資料種類:video → table

• 呼叫: import fullseye as fs; fs.ledger.band_snr(video, f_lo, f_hi, fps) -> 'dict'(要直接呼叫實作,import motionmag; motionmag.band_snr(video, f_lo, f_hi, fps) -> 'dict';從台帳取用則 opsmotionmag.get("band_snr"))

用法

測量片段的時間頻帶裡有什麼、代價是什麼 -> dict。

> 以下的詳細說明為原文 —— 摘要與標題已翻譯。

Every quantity is a measured mean-square power obtained from the per-pixel temporal DFT (Parseval-normalised so that the bins of one pixel sum to that pixel's mean square), averaged over pixels:

• static_power — the DC bin. The scene that is simply *there*.

• band_power — the bins inside [f_lo, f_hi]. Coherent motion plus whatever noise happens to fall in the band.

• out_of_band_power / out_of_band_bins — everything else except DC. With broadband sensor noise this is the noise floor, and noise_power_per_bin is its per-bin density.

• noise_in_band = noise_power_per_bin * band_bins — how much of band_power is expected to be noise.

• motion_power = max(band_power - noise_in_band, 0) and motion_snr_db = 10*log10(motion_power / noise_in_band).

• image_snr_db = 10*log10(static_power / (band_power + out_of_band_power)) — the static scene against everything that flickers.

The two SNRs answer different questions and magnification moves only one of them. Scaling the in-band phase by alpha scales the in-band motion *and* the in-band noise by the same factor, so the true motion SNR cannot

improve: magnification never makes a measurement more certain than the recording was. What does change is image_snr_db, because the temporal fluctuation of the output frames grows like alpha^2 while the static scene does not.

A caveat that matters when this is run on an already-magnified clip. motion_snr_db here divides the in-band signal by a noise floor estimated from the *out-of-band* bins, and magnification does not touch those. Applied to a magnified video it therefore credits alpha^2 more in-band power against an unchanged noise estimate and reports an improvement that did not occur — measured, +6.86 dB at alpha = 2 on a clip whose true motion SNR cannot have moved. motion_magnify knows the gain and returns the corrected figure as motion_snr_out_db; use that one, not result["snr_out"]["motion_snr_db"].

snr_clamped is True when a reported dB hit the [-100, +100] window (a noiseless synthetic has zero out-of-band power, which is a division by zero rather than an infinite SNR).

詳細使用指南

• motion_magnification 族使用指南

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• motion_magnification — py -3.11 examples/motion_magnification.py

• poc_motion_magnification — py -3.11 examples/poc_motion_magnification.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

complex_steerable_reconstruct

同類別(temporal)

temporal_bandpass · temporal_band_power


*Provenance: motionmag.py — MOTIONMAG 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.