fusion op• 数据种类:any → voxel
• 调用: import fullseye as fs; fs.ledger.fuse_to_voxel(items, size=64, bounds=None, device='cpu', smooth=0.8)(要直接调用实现,import fuse3d; fuse3d.fuse_to_voxel(items, size=64, bounds=None, device='cpu', smooth=0.8);从台账取用则 ops3d.get("fuse_to_voxel"))
• 经台账调用的返回值: fullseye.ledger.fuse_to_voxel(...) 只返回声明的 out 类型 voxel 的值(底层函数还会返回辅助信息)。需要被丢弃的部分时,使用 fullseye.ledger.fuse_to_voxel.raw(...),或直接调用 fuse3d.fuse_to_voxel。
• 底层返回: (voxel, bounds)
• GPU:该算子有 GPU 路径(device="cuda")
把多种结构融合到共同的密度体素(TRIZ 集成)。items=[(data,kind,params_dict), ...]。
将 mesh(topology)+ points(sample)+ depth(观测)等互补的结构合为 1 种表示。返回值 (voxel, bounds)。
步骤: 用 to_points(data, kind, **params) 把各 (data, kind, params) 转为点云后纵向拼接,再用 match3d.points_to_voxel splat 到 size^3 的密度网格(每个点落入的 cell +1,若 smooth > 0 则用 σ = smooth voxel 的 Gaussian 平滑)。bounds=None 时以拼接后点云的 (min, max) 作为网格范围。
参数:
• items: 非空的 list/tuple,各元素为长度 3 的 (data, kind, params_dict) (params_dict 必须是 dict)。若要改变 to_points 的 samples,则在 params 中放入 samples=。
• size: 每 1 轴的 voxel 数(固定为立方网格)。
• bounds: (lo, hi),各自长度为 3。把多个点云放到同一网格上时(比较、voxel_iou)务必显式指定。
• device: torch 设备("cpu" / "cuda")。smooth: Gaussian σ [voxel]。
返回值: (voxel, bounds) —— voxel 是 (size, size, size) float64 的 点数密度(总和 ≈ 总点数,不是概率),bounds 是实际使用的 (lo, hi)。网格 index 为 points_to_voxel 的 floor((p - lo) / span * (size - 1)), 轴 0 对应点的 x 分量(voxel 的轴顺序 = 点的分量顺序)。
校验(ValueError): items 不是 list/tuple、为空、元素不是 3 元组、params 不是 dict(在入口处阻止直接传入原始数据的误用)。
• depth_sensors — 深度传感器知识 —— 测距原理、实机数值、缺测的表现
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• transforms_repr — py -3.11 examples_3d/transforms_repr.py
voxel 作为输入)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
fusion)*Provenance: fuse3d.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.