process op• 数据种类:image2d → table
• 调用: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)(或 opsrangedoppler.get("range_doppler_peaks"))
由距离-多普勒图得到检测:把 bin 索引换回米与 m/s。
> 以下的详细说明为原文 —— 摘要与标题已翻译。
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]`.
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者・年份)与用途见上面的族使用指南。
• fmcw_range_doppler — py -3.11 examples/fmcw_range_doppler.py
table 作为输入)—
process)fmcw_window_apply · range_doppler_map · fmcw_range_profile
*Provenance: rangedoppler.py — RANGEDOPPLER 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.