typed op• Data kinds: signal → image
• Call: fullseye.apply(img, "tb_spectrogram", a=0.5, b=0.5) (2-D model = एक image + दो scalar knobs a,b∈[0,1])

*Figure synthetic 128×128 input पर सच में चलाकर मिला output है। बाईं ओर input, दाईं ओर output। Point clouds ऊपर से देखे गए scatter के रूप में (brightness = z), 1-D series line के रूप में, volumes z दिशा में maximum-intensity projection के रूप में, videos बीच के frame के रूप में, complex images amplitude के रूप में, और जो return values चित्र नहीं बन सकते वे स्वयं values के रूप में दिखाए जाते हैं।*
*Knob a output नहीं बदलता (मापा गया: 0.1 / 0.5 / 0.9 पर एक जैसा)।*
Knob b को बदलकर (0.1 / 0.5 / 0.9, दूसरा knob default पर):
▸ tb_spectrogram: knob b को बदलने का figure (docs site)
Stages (पहले आने वाले ops → यह op, बाएँ से क्रम में):
▸ tb_spectrogram: stages का figure (docs site)
दूसरी images पर भी (synthetic scene / photo / coins। ऊपर की row में inputs, नीचे की row में उनके outputs। Knobs default पर):
▸ tb_spectrogram: दूसरी images पर output (docs site)
STFT magnitude spectrogram -> (freqs, times, S), जहाँ S का shape (n_freqs, n_frames) है। Hann window वाला; *hop* का default win//2 है।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
Same raw convention as spectrum, but a different divisor. Each column is the unnormalised |rfft(frame * hann(win))|, so it is not an amplitude either — and dividing by 2/win is *wrong* here, because the Hann window has already thrown away part of the signal. The correct one-sided amplitude conversion divides by the window's coherent gain::
w = np.hanning(win)
amp = S * (2.0 / w.sum()) # bins 1 .. win/2-1; DC / Nyquist: 1/w.sum()
Measured on a unit sine at a bin centre (rate = 16000 Hz, 1000 Hz, amplitude exactly 1.0, win = 256): the raw column peak is 63.7497786196906; * 2/win gives 0.49804514546633283 (too small by exactly the Hann coherent gain sum(w)/win = 0.498046875), while * 2/sum(w) gives 0.9999965273676957. Only the second one is the amplitude that was actually in the signal.
Peak *positions*, frame-to-frame ratios and any dB *difference* are unaffected by either factor. This function returns magnitudes only — the phase is discarded, so it cannot be inverted; use acoustics.stft / acoustics.istft for a round-trip.
Typed bridge of the 1d op spectrogram into the 2-D evolution registry: the same implementation, called under the op(v, a, b) convention. a drives rate (default 1) and b drives win (default 256).
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
नीचे का program सच में चलता है, यह जाँचा गया है (figure वाला ही input)। Studio की help में यह block buttons बन जाता है, जिनसे इसे वहीं load करके चलाया जा सकता है।
img_to_signal 0.50 0.50 tb_spectrogram 0.50 0.50
▸ यह pipeline load करें · Load करके चलाएँ
नीचे के उदाहरण मूल ledger op spectrogram को call करते हैं। यह bridge op वही implementation है, बस fn(v, a, b) convention के अनुसार ढाला गया है, इसलिए व्यवहार वैसा ही लागू होता है (केवल call का रूप अलग है)।
• acoustic_condition_monitoring — py -3.11 examples/acoustic_condition_monitoring.py
image को input के रूप में लेते हैं)identity · gaussian · mean_box · bilateral · unsharp · median · min_filter · max_filter
typed)tb_points_to_voxel · tb_estimate_point_normals · tb_iss_keypoints · tb_project_points · tb_render_point_depth · tb_statistical_outlier_removal · tb_radius_outlier_removal · tb_voxel_grid_downsample
*Provenance: ops.py — 2D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.