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 패밀리 가이드
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• motion_magnification — py -3.11 examples/motion_magnification.py
• poc_motion_magnification — py -3.11 examples/poc_motion_magnification.py
table 를 입력으로 받는 것)temporal)temporal_bandpass · temporal_band_power
*Provenance: motionmag.py — MOTIONMAG 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.