scoop op• Datenarten: image2d × scalar × scalar × scalar × scalar → table
• Aufruf: import fullseye as fs; fs.ledger.scoop_volume_read(side, rim_row: 'int', a_px: 'float', h_px: 'float', pitch: 'float', *, opaque: 'bool' = True, assume_level: 'bool' = False, heap_min_frac: 'float' = 0.005, level_tol: 'float' = 0.01, rim_full_frac: 'float' = 0.95, fit_angle: 'bool' = True) -> 'dict' (die Implementierung direkt: import scoop; scoop.scoop_volume_read(side, rim_row: 'int', a_px: 'float', h_px: 'float', pitch: 'float', *, opaque: 'bool' = True, assume_level: 'bool' = False, heap_min_frac: 'float' = 0.005, level_tol: 'float' = 0.01, rim_full_frac: 'float' = 0.95, fit_angle: 'bool' = True) -> 'dict'; aus dem Register: opsdrive.get("scoop_volume_read"))
Liest das geschöpfte Volumen aus einem Seitenbild des Löffels.
• opaque=True (Metallschale): unterhalb des Randes ist nichts sichtbar, daher wird der Haufen über dem Rand mit revolution_volume_side gemessen und zur geschlossenen Form des glatt gestrichenen Zustands (spoon_bowl_volume) addiert: V = V_struck + V_above. Ist über dem Rand nichts, lässt sich von der Seite nicht unterscheiden, ob glatt gestrichen oder zu wenig — sofern nicht assume_level=True, ValueError (es wird nicht stillschweigend "glatt gestrichen" behauptet).
• opaque=False (durchsichtige Schale / Schnittbild): integriert das Ganze in Pappus-Form; liegt es unter 1 − level_tol des glatt gestrichenen Zustands, wird als under die Tiefe über die Umkehrung (Bisektion) der geschlossenen Form V_fill(y) zurückgegeben (ebene Pulveroberfläche angenommen).
• fit_angle: Ist der Haufen groß genug (mindestens 8 Punkte links und rechts), wird der Rand als Boden betrachtet und der Böschungswinkel des Haufens mit granulars repose_angle_silhouette gelesen (zum Abgleich mit dem Schüttwinkel; bei kleinen Haufen None).
Rückgabe: V, V_struck, V_above, state (heaped / level / under), heap_angle_deg, heap_base_frac (Breite des Haufens in der Randzeile / Randdurchmesser), rim_full (heap_base_frac ≥ rim_full_frac: der Fuß des Haufens reicht bis zum Rand = die Schale ist voraussichtlich bis zum Rand gefüllt. Bei einem "beginnenden Haufen", der ihn nicht erreicht, ist der Bereich am Rand nicht ganz gefüllt, und die opake Ablesung fällt um den Betrag der geschlossenen Form zu hoch aus — in MuJoCo +9 % bei 0.90, +1 % bei 0.99), axis_col, fill_depth_px (bei Transparenz). Raises ValueError: rim_row außerhalb des Bildes / über dem Rand leer und nicht assume_level (bei opak) / Argumentbereiche.
• 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.
• poc_powder_scoop_pour — py -3.11 examples/poc_powder_scoop_pour.py
table als Eingabe)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
scoop)spoon_bowl_volume · scoop_synth_side · revolution_volume_side · two_view_volume · scoop_count · scoop_image_limit · tilt_wedge_retained · tilt_pour_rate
*Provenance: scoop.py — DRIVE 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.