process op• Datenarten: image2d → table
• Aufruf: import rangedoppler; rangedoppler.range_doppler_peaks(rdmap, range_bin_m=1.0, velocity_bin_ms=1.0, n_peaks=1, min_fraction=0.1, doppler_shifted=True) (oder opsrangedoppler.get("range_doppler_peaks"))
Detektionen aus einer Range-Doppler-Karte: Bin-Indizes zurück in Meter und m/s.
> Die ausführliche Beschreibung unten ist der Originaltext — Zusammenfassung und Überschriften sind übersetzt.
Finds strict local maxima of the 2-D magnitude map — greater than all eight
neighbours, cyclically along the Doppler axis (velocity really is
periodic in the FFT: the fastest receding bin is adjacent to the fastest
approaching one) and openly along the range axis (a cell in the first or
last range bin competes only against the neighbours that exist, so a target
in the last bin is a detection, not a discard) — keeps those at least
*min_fraction* of the global maximum, and returns the strongest *n_peaks*.
Range bin 0 is reported like any other. In a real receiver it is the
transmitter-leakage / DC bin rather than a target, but suppressing it here
would be a silent policy applied to somebody else's data; threshold it
yourself if you want it gone.
Index -> physical value, closed form and the exact inverse of
:func:fmcw_beat_simulate:
• `range_m = j * range_bin_m, with range_bin_m = c*f_s/(2*S*N_s)`
from :func:fmcw_design;
• `velocity_ms = (i - n_doppler//2) * velocity_bin_ms` when
*doppler_shifted* (the layout :func:range_doppler_map produces), or
`i wrapped into [-N_c/2, N_c/2)` when the map is unshifted.
The bin widths are required parameters with placeholder defaults of 1.0,
which means the default output is in bins, not metres. That is deliberate:
inventing a default waveform here would let a caller read metres off a map
that was never that waveform's.
Returns a `dict with peaks` (a list of per-detection dicts holding
`range_m, velocity_ms, magnitude, range_bin, doppler_bin`),
`n_found, max_magnitude and noise_floor` (the median of the map).
Raises `ValueError`: a non-2-D, complex, negative, or non-finite map; a
map whose maximum is 0 (an all-zero map has no cell to detect and returning
cell (0,0) — which is what `argmax` does — would be a fabricated
detection); a non-positive bin width; *n_peaks* < 1; a *min_fraction*
outside `[0, 1]`.
• Leitfaden zur Familie fmcw_range_doppler
• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).
• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.
• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.
• fmcw_range_doppler — py -3.11 examples/fmcw_range_doppler.py
table als Eingabe)—
process)fmcw_window_apply · range_doppler_map · fmcw_range_profile
*Provenance: rangedoppler.py — RANGEDOPPLER Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.