slice_thickness_profile — DRIVE cutting op

• Datenarten: rgb × scalar × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.slice_thickness_profile(image, px_per_mm: 'float', board_row: 'float', z_band=None, win: 'int' = 4) -> 'dict' (die Implementierung direkt: import cutting; cutting.slice_thickness_profile(image, px_per_mm: 'float', board_row: 'float', z_band=None, win: 'int' = 4) -> 'dict'; aus dem Register: opsdrive.get("slice_thickness_profile"))

Verwendung

Bestimmt im Bild in Richtung der Schneide zeilenweise die Subpixelpositionen der "Stirnfläche des Schnittguts" und der "flachen Seite der Klinge"; die Differenz = Scheibendicke (mm).

Jedes Pixel wird linear entmischt in die Anteile von 3 Farben (Hintergrund, Lebensmittel, Klinge) (2 Kanäle — Buntheit R − B und Luminanz — plus Summe = 1). Der Hintergrundanteil ist eine reine Stufe, die an der Stirnfläche von 1 → 0 fällt, der Klingenanteil eine reine Stufe, die an der Klingenfläche von 0 → 1 steigt; daher ergibt die Summe innerhalb jedes Fensters die Kantenposition (Bedeckungsmethode). Unschärfe ändert die Summe der Anteile nicht; wird das Fenster gemäß der Unschärfeschätzung (zweites Moment σ der Stirnflächenstufe) auf ±(3σ + 1) px erweitert, bleibt es unverzerrt. Auch wenn die Scheibe dünner als das Fenster ist, stören sich die beiden Stufen nicht, da es getrennte Anteile sind. Die Referenzfarben werden zeilenweise lokal bestimmt (folgt Links-Rechts-Beleuchtungsgradienten). Die Klingenentscheidung nutzt das Verhältnis "wo die Klingenluminanz zwischen Hintergrund und Lebensmittel liegt" und ist daher unabhängig vom Helligkeitsfaktor (gain).

Stirnfläche und Klingenfläche sollten jeweils auf einer Geraden liegen: Zeilen mit mehr als 1.5 px Abweichung werden entfernt; weichen mehr als 30 % ab, ValueError (es wird nicht stillschweigend falsch). z_band: beschränkt die verwendeten Zeilen auf (z_lo, z_hi) mm (zum Ausschließen des Schneidenanschliffs einer einseitig geschliffenen Klinge). Rückgabe: z_mm, thickness_mm (pro Zeile), mean_mm, lean_deg (Neigung der Klingenfläche gegen die Senkrechte, atan2), face_line, end_line, n_rows, n_rejected, blur_px.

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_food_cutting_measure — py -3.11 examples/poc_food_cutting_measure.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 (cutting)

cutting_scene · cutting_face_render · cutting_edge_render · cutting_episode_synth · cutting_wrist_mjcf · knife_edge_track · cut_depth_from_side · cut_surface_roughness


*Provenance: cutting.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.