stream_areal_density — DRIVE scoop op

• Data kinds: image2d × scalar → image2d

• Call: import fullseye as fs; fs.ledger.stream_areal_density(coverage, radius_px: 'float', *, c_max: 'float' = 0.95, mode: 'str' = 'raise') -> 'np.ndarray' (to call the implementation directly, import scoop; scoop.stream_areal_density(coverage, radius_px: 'float', *, c_max: 'float' = 0.95, mode: 'str' = 'raise') -> 'np.ndarray'; from the registry, opsdrive.get("stream_areal_density"))

Usage

Inverts the Boolean model to get the areal density of particle centers [particles / px²] from the coverage, n = −ln(1 − c) / (π r²).

The coverage of a union of independently placed discs of radius r is c = 1 − exp(−n π r²) (overlaps are not undercounted). The naive c / (π r²) undercounts by nearly a factor of 2 at c = 0.8 (PoC gate). As c approaches 1 the inverse diverges (a thick stream hides what is behind it):

mode="raise" raises ValueError if any pixel has c ≥ c_max, "clip" clips to c_max (giving a lower-bound estimate). In dense streams where grain positions are not independent (near the outlet, grains touching) the model fails —— a limitation. Raises ValueError: not a coverage fraction / saturated (mode="raise") / misspelling.

References (sample data, literature)

• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).

• Operator provenance and references — the sources of the research/methods this op family came from.

• The canonical algorithm (author, year) and its uses are named in the family usage guide above.

Runnable examples (verified samples that actually call this op)

• gallery_drive_soil_tactile — py -3.11 examples/gallery_drive_soil_tactile.py

Ops the type connects to (they accept image2d as input)

flow_from_depth_motion · ttc_truth · ttc_from_flow · foe_from_flow · perlin2 · fbm_height · fbm_gradient · radial_periodogram

Same category (scoop)

spoon_bowl_volume · scoop_synth_side · revolution_volume_side · two_view_volume · scoop_volume_read · scoop_count · scoop_image_limit · tilt_wedge_retained


*Provenance: scoop.py — DRIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*

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