grind op• Data kinds: scalar × scalar × scalar → table
• Call: import fullseye as fs; fs.ledger.particle_image_synth(n: 'int' = 60, d_med: 'float' = 12.0, sigma_ln: 'float' = 0.35, shape=(256, 256), pitch: 'float' = 1.0, seed: 'int' = 0, gap: 'float' = 3.0, supersample: 'int' = 4) -> 'dict' (to call the implementation directly, import grind; grind.particle_image_synth(n: 'int' = 60, d_med: 'float' = 12.0, sigma_ln: 'float' = 0.35, shape=(256, 256), pitch: 'float' = 1.0, seed: 'int' = 0, gap: 'float' = 3.0, supersample: 'int' = 4) -> 'dict'; from the registry, opsdrive.get("particle_image_synth"))
Coverage image strewn with non-overlapping discs (particle projections), plus ground truth (log-normal diameters [µm], pitch µm/px).
Discs are kept at least gap px apart (fusion is a separate problem, handled by poc_particle_sizing). Default 3 px: with 2 px, the partial pixels on both sides became diagonal neighbours and 8-connected labelling merged 2 into 1 (4 of 12 images; the volume-basis D50 shifted by up to 8.5 %). Edges are anti-aliased with supersample.
Returns: image ((H, W) coverage), pitch, truth (diameters µm, centres px, touches_border). If some particles could not be placed, n_placed < n (it does not silently pack them in).
• 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.
• poc_dose_uniformity_from_grinding — py -3.11 examples/poc_dose_uniformity_from_grinding.py
• poc_powder_grinding_ae — py -3.11 examples/poc_powder_grinding_ae.py
table as input)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
grind)particle_size_read · particle_size_dx · particle_size_oversize · particle_size_synth · comminution_energy · comminution_law_fit · breakage_first_order_fit · replicate_compare
*Provenance: grind.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.