tilted_surface_read — DRIVE scoop op

• Datenarten: image2d × scalar × scalar × scalar × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.tilted_surface_read(side, lip_row: 'float', lip_col: 'float', theta_deg: 'float', L_px: 'float', *, wall_px: 'float | None' = None, threshold: 'float' = 0.5, shell_px: 'float' = 0.0, smooth_px: 'int' = 1) -> 'dict' (die Implementierung direkt: import scoop; scoop.tilted_surface_read(side, lip_row: 'float', lip_col: 'float', theta_deg: 'float', L_px: 'float', *, wall_px: 'float | None' = None, threshold: 'float' = 0.5, shell_px: 'float' = 0.0, smooth_px: 'int' = 1) -> 'dict'; aus dem Register: opsdrive.get("tilted_surface_read"))

Verwendung

Liest aus einem Seitenbild (Bedeckungsgrad) des gekippten Behälters die Querschnittsfläche des verbleibenden Pulvers und die Höhe der ebenen Fläche hinten.

Gefäßkoordinaten: Ursprung an der Öffnung (lip_row, lip_col; Pixelkanten sind ganzzahlig), x entlang des Bodens nach hinten (Boden mit abgesenkter Öffnung um θ gekippt = im Bild nach rechts oben ansteigend), y senkrecht zum Boden. Die Summe der Bedeckung innerhalb von 0 ≤ x ≤ L_px und 0 ≤ y ≤ wall_px (None = L_px) ist die Querschnittsfläche [px²] (Strömung außerhalb der Öffnung wird nicht gezählt). Die Kontur des Seitenbilds der Körner ist die äußere Einhüllende der Körner, daher ist entlang der freien Oberfläche eine Schale von etwa einem Kornradius Dicke zu viel enthalten —— zurückgegeben wird auch shell_px, bei dem smooth_px (den Kornradius [px] übergeben) × Länge der freien Oberfläche (Länge des Polygonzugs der Pulveroberfläche jeder Spalte im Gefäß, über area_corrected Spalten gleitend gemittelt) abgezogen ist. Höhe der flachen Fläche hinten plateau_px = Median der Höhe der Pulveroberfläche über dem Boden in der hinteren Hälfte des Gefäßes (im Keilmodell ändert sie sich nicht, solange θ < θ_b; die reale Schicht fließt und wird dünner —— im PoC betrachten).

Rückgabe: area_px, area_corrected, surface_len_px, plateau_px (None, wenn in der hinteren Hälfte keine Pulveroberfläche ist). Raises ValueError: keine Bedeckungskarte / Gefäßinneres leer / Argumentbereiche.

Referenzen (Beispieldaten, Literatur)

• 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.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_powder_scoop_pour — py -3.11 examples/poc_powder_scoop_pour.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

Gleiche Kategorie (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. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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