space_carving op• データ種: images → voxel
• 呼び出し: import 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 のリスト。
Parameters
----------
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)。
Returns
-------
(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)`。
• blender_interop — Blender との併用 — 形を作って fullseye で測る(軸・単位・正解データの罠)
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。
• space_carving — py -3.11 examples_3d/space_carving.py
voxel を入力に取れる)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.