space_carving opimages → voxelimport fullseye as fs; fs.ledger.carve(silhouettes: 'Sequence[np.ndarray]', Ks: 'Sequence[np.ndarray]', Rs: 'Sequence[np.ndarray]', ts: 'Sequence[np.ndarray]', bounds: 'Bounds', res: 'int') -> 'np.ndarray' (実装を直接呼ぶなら import visualhull; visualhull.carve(silhouettes: 'Sequence[np.ndarray]', Ks: 'Sequence[np.ndarray]', Rs: 'Sequence[np.ndarray]', ts: 'Sequence[np.ndarray]', bounds: 'Bounds', res: 'int') -> 'np.ndarray'、台帳から引くなら ops3d.get("carve"))bounds を res^3 voxel に離散化し、全シルエット内に射影される voxel を残す(空間彫刻)。
各 voxel 中心を全カメラ m に X_cam = R_m X + t_m で射影し、depth>0・画像内・
silhouettes[m] が前景、を すべて 満たす voxel だけ keep する(視錐の共通部分)。
シルエット/カメラは長さ M のリスト。
silhouettes : list of (H, W) bool array 各カメラの前景マスク(M 個)。 Ks, Rs, ts : list 各カメラの内部パラメータ・回転・並進(各 M 個)。 bounds : ((xmin,xmax),(ymin,ymax),(zmin,zmax)) 彫刻する直方体領域。 res : int 各軸の voxel 分割数(voxel 総数 = res^3)。
(res, res, res) bool ndarray 占有 voxel。indexing=’ij’ で軸は (x, y, z)。
vox[i,j,k] の中心は (xmin+(i+.5)dx, ymin+(j+.5)dy, zmin+(k+.5)dz)。
py -3.11 examples_3d/space_carving.pyvoxel を入力に取れる)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
space_carving)visual_hull · synthesize_silhouette · carve_look_at
Provenance: visualhull.py — 3D operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.