rle_region op• 数据种类:voxel → rle_region
• 调用: import fullseye as fs; fs.ledger.vol_rle_encode(vol_binary) -> 'VolRLE'(要直接调用实现,import volregion; volregion.vol_rle_encode(vol_binary) -> 'VolRLE';从台账取用则 ops3d.get("vol_rle_encode"))
把二值体编码为 x 方向 run(3-D 的 HALCON region 表示)。
非 {0, 1} 的输入以 > 0.5 做阈值(volops 的约定)。NaN / Inf 被拒绝。空掩模编码为 0 个 run —— 这是合法的 region,decode 后全为背景。
内存: 与 run 数成正比(约等于每个平面行的表面复杂度),而不是与 voxel 数成正比 —— 在真实的 384**3 零件上实测为密集 bool 掩模的 1/145。
生成什么: 把 (D, H, W) 的二值 volume 转换为沿 x 轴(最后一轴)方向的连续前景区间(run)的列表。VolRLE 是持有 rows(平面行 id z*H + y,int32,升序)、starts / ends(run 的 x 范围 [start, end),end 为开区间)、shape (原始的 (D, H, W))的 frozen dataclass。run i 表示 vol[z, y, starts[i]:ends[i]]。
参数与校验(fail-closed(失败即拒绝)):
• vol_binary: 3-D 数组。bool 原样使用,其他类型转换为 float64, 有 NaN/Inf 则 ValueError,以 > 0.5 二值化。
• 不是 3-D,或 voxel 数超过 MAX_VOXELS(1 << 27 ≈ 1.34 亿)时 ValueError。
• 空掩模成为 run 数为 0 的 VolRLE(不是错误)。
注意: 轴顺序为 [z, y, x](depth, row, col)。run 只沿 x 方向延伸,因此在 x 方向上细碎断开的形状(条纹、噪声)run 数越多,压缩的好处越少。vol_rle_volume / vol_rle_bbox / vol_rle_centroid 不做 decode, 直接在 run 上作答。集合运算为 vol_rle_union / vol_rle_intersect / vol_rle_difference,转回密集数组用 vol_rle_decode。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• rle_region_efficiency — py -3.11 examples_3d/rle_region_efficiency.py
rle_region 作为输入)vol_rle_decode · vol_rle_volume · vol_rle_bbox · vol_rle_centroid · vol_rle_union · vol_rle_intersect · vol_rle_difference · fuse_to_voxel
rle_region)vol_rle_decode · vol_rle_volume · vol_rle_bbox · vol_rle_centroid · vol_rle_union · vol_rle_intersect · vol_rle_difference · vol_rle_components
*Provenance: volregion.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.