synthesize_silhouette — 3D space_carving op

• 数据种类:points → image2d

• 调用: import fullseye as fs; fs.ledger.synthesize_silhouette(points, K, R, t, size: 'Tuple[int, int]', *, fill: 'bool' = True, dilate: 'int' = 1) -> 'np.ndarray'(要直接调用实现,import visualhull; visualhull.synthesize_silhouette(points, K, R, t, size: 'Tuple[int, int]', *, fill: 'bool' = True, dilate: 'int' = 1) -> 'np.ndarray';从台账取用则 ops3d.get("synthesize_silhouette"))

用法

把 3-D 点群投影到 (K,R,t) 相机,返回占据像素为 True 的轮廓(H,W bool)。

用于生成 GT。将 points (N,3) 按 X_cam = R X + t 投影,把 depth>0 且落在图像内的像素设为 True。稀疏点云的投影像会出现空洞,因此默认进行孔洞填充(fill, scipy.ndimage.binary_fill_holes),得到内部填实的前景掩模。再仅按 dilate 个像素进行膨胀,使其成为“pixel 只要稍微接触物体就算前景”这一覆盖(coverage)意义上的轮廓 —— 这是为了在离散化误差下也能保证 visual hull 的 recall(不漏掉物体 voxel )而采取的保守侧取整。

Parameters

points : (N, 3) array_like 世界坐标下的点云(物体表面/内部的采样)。

K : (3, 3) 内参。

R, t : (3, 3), (3,) 世界->相机的旋转、平移。

size : (H, W) 输出图像尺寸。

fill : bool 填充投影像的空洞使其成为 solid(默认 True)。

dilate : int 作为覆盖余量进行膨胀的像素数(默认 1,0 表示不启用)。

Returns

(H, W) bool ndarray 前景为 True 的轮廓。

背景知识指南(该算子背后的物理与约定)

• blender_interop — 与 Blender 配合使用 —— 在 Blender 中建形、用 fullseye 测量(坐标轴、单位、真值数据的陷阱)

参考(示例数据、文献)

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

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

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

• space_carving — py -3.11 examples_3d/space_carving.py

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

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

同类别(space_carving)

carve · visual_hull · carve_look_at


*Provenance: visualhull.py — 3D 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*

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