curvilinear op• Data kinds: voxel → voxel
• Call: import fullseye as fs; fs.ledger.cylinder_unwrap(vol, center=None, r_in=0.0, r_out=None, ntheta=180, nr=32, device='cpu') (implementation को सीधे call करना हो तो import match3d; match3d.cylinder_unwrap(vol, center=None, r_in=0.0, r_out=None, ntheta=180, nr=32, device='cpu'), registry से लेना हो तो ops3d.get("cylinder_unwrap"))
• GPU: इस op का GPU path है (device="cuda")
voxel की cylindrical surface को (height×θ×r) में unwrap करता है (cylindrical parts/pipes की अंदरूनी-बाहरी surface का inspection)। axis=z (D axis)।
θ axis बिना endpoint वाला periodic grid है (polar_unwrap जैसा ही 2026-08-30 का सुधार)।
Raises ValueError: इनपुट में NaN/Inf/float32 overflow हो तो।
Args: vol (D,H,W) है, center=(cy, cx) हर z slice के भीतर (row, column) है (default slice का केंद्र)। r_in-r_out (voxel, default min(H,W)/2 − 1) को nr बराबर भागों में, कोण को ntheta बराबर भागों में बाँटा जाता है। output (D, ntheta, nr) float32: axis 0 z है (ऊँचाई, इनपुट जैसा), row k का कोण θ = k·2π/ntheta, column j की त्रिज्या। sample points (z, cy + r sinθ, cx + r cosθ) हैं, volume के बाहर 0। जिन axes में D, H, W का मान 1 हो, वहाँ normalisation में 0 से भाग होता है (polar_unwrap से अलग, कोई जाँच नहीं)।
आगे: [:, :, j] लेने पर त्रिज्या j की बेलनाकार सतह (D×θ) की 2-D image बन जाती है, और 2-D scratch inspection और ncc_locate उपयोग किए जा सकते हैं।
• 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 के स्रोत।
• curvilinear_proj — py -3.11 examples_3d/curvilinear_proj.py
voxel को input के रूप में लेते हैं)voxel_to_mips · voxel_to_mesh · signed_distance_field · to_points · sobel3d · hessian3d · curvature_maps · edt_jfa
curvilinear)*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.