transform op• Data kinds: points → voxel
• Call: import fullseye as fs; fs.ledger.points_to_voxel(points, size, bounds=None, device='cpu', smooth=0.0) (implementation को सीधे call करना हो तो import match3d; match3d.points_to_voxel(points, size, bounds=None, device='cpu', smooth=0.0), registry से लेना हो तो ops3d.get("points_to_voxel"))
• GPU: इस op का GPU path है (device="cuda")
point cloud (N,3) → density voxel (size³)। scatter_add से splat, वैकल्पिक रूप से gaussian smoothing।
bounds=(lo,hi) देने पर कई cloud को एक ही grid पर रखा जा सकता है (= matching की पूर्व-शर्त)।
प्रक्रिया: हर point को idx = floor((p − lo)/(hi − lo)·(size − 1)) से integer grid पर रखा जाता है, और उस voxel में 1 जोड़ा जाता है (मान = उस voxel में गिरे points की संख्या)। smooth > 0 हो तो σ=smooth (voxel इकाई में) वाला gaussian 3 axis के separable conv से लगाया जाता है (radius max(1, int(4σ + 0.5)), किनारे replicate)। Output का axis क्रम points के column क्रम जैसा ही है (points[:, 0] → axis 0), और (depth,row,col) में दोबारा क्रम नहीं बदला जाता।
• bounds: (lo, hi) के रूप में 3 dimension के 2 vector। None हो तो point cloud का अपना min/max (हर
cloud के लिए grid बदल जाता है, इसलिए 2 cloud की तुलना करते समय हमेशा वही bounds दें)। लंबाई 3 न हो, मान non-finite हों, या hi <= lo वाला axis हो तो ValueError (tsdf वाली ((xmin,xmax),...) शैली को लंबाई 2 मानकर reject किया जाता है)।
• Range से बाहर के points हटाए नहीं जाते, बल्कि किनारे के voxel पर clip होते हैं (किनारे पर नकली density जमा होती है)। काटना हो
तो पहले ही point cloud से हटा दें।
• size: एक side में voxel की संख्या। जिस axis का hi − lo 0 हो, उसे बिना warning के सिर्फ़ 1e-9 से बदल दिया जाता है।
• खाली point cloud और bounds=None होने पर numpy का min exception देता है।
• Return value: (size, size, size) float64 numpy (device पर गणना होने पर भी CPU पर लौटाया जाता है)। मान गिनती हैं
(smoothing के बाद गिनती का weighted distribution) और normalise नहीं किए जाते।
आगे: match_points_ncc / signed_distance_field / voxel_to_mesh के input के रूप में।
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• sh_descriptor_retrieval — py -3.11 examples_3d/sh_descriptor_retrieval.py
• shape_desc_pose — py -3.11 examples_3d/shape_desc_pose.py
voxel को input के रूप में लेते हैं)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
transform)gaussians_to_voxel · mesh_to_voxel · mesh_to_points · depth_to_points · voxel_to_mips · voxel_to_mesh · tsdf_from_depth · signed_distance_field
*Provenance: match3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.