slice_thickness_profile — DRIVE cutting op

• 数据种类:rgb × scalar × scalar → table

• 调用: import fullseye as fs; fs.ledger.slice_thickness_profile(image, px_per_mm: 'float', board_row: 'float', z_band=None, win: 'int' = 4) -> 'dict'(要直接调用实现,import cutting; cutting.slice_thickness_profile(image, px_per_mm: 'float', board_row: 'float', z_band=None, win: 'int' = 4) -> 'dict';从台账取用则 opsdrive.get("slice_thickness_profile"))

用法

在沿刃口方向的图像中,逐行求出“食材端面”和“刀刃平面”的亚像素位置,差 = 切片厚度(mm)。

将每个像素 线性分解 为 3 种颜色(背景、食材、刀刃)的比例(彩度 R − B 与亮度 2 个通道 + 和 = 1)。背景比例在端面处 1 → 0 下降,是纯粹的阶跃;刀刃比例在刀面处 0 → 1 上升,也是纯粹的阶跃,因此各窗口内的和即为边缘位置(覆盖率法)。模糊不会改变比例之和,因此只要将窗口按模糊估计(端面阶跃的 2 阶矩 σ)扩大到 ±(3σ + 1) px 就不会有偏差。即使切片比窗口薄,两个阶跃是不同的比例,也不会相互干扰。参考颜色按行在局部取得(跟随照明的左右梯度)。刀刃的判定使用"刀刃亮度位于背景与食材之间何处"的比值,不依赖于亮度倍率(gain)。

端面和刀面应各自位于直线上:剔除偏离超过 1.5 px 的行,偏离超过 3 成则 ValueError(不会默默地出错)。z_band:以 (z_lo, z_hi) mm 限定使用的行(用于排除单刃刀的刃部)。返回值:z_mm、thickness_mm(逐行)、mean_mm、lean_deg(刀面相对铅直的倾角,atan2)、face_line、end_line、n_rows、n_rejected、blur_px。

参考(示例数据、文献)

• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。

• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。

• 算法的正典(作者、年份)与用途见上面的族使用指南。

可运行的示例(实际调用该算子并已验证的样例)

• poc_food_cutting_measure — py -3.11 examples/poc_food_cutting_measure.py

类型可衔接的下一个算子(可接受 table 作为输入)

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

同类别(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 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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