feature op• Data kinds: voxel → sdf
• Call: import fullseye as fs; fs.ledger.edt_jfa(seed_bool, device='cpu') (implementation को सीधे call करना हो तो import match3d; match3d.edt_jfa(seed_bool, device='cpu'), registry से लेना हो तो ops3d.get("edt_jfa"))
• Ledger के ज़रिए return value: fullseye.ledger.edt_jfa(...) केवल घोषित out type sdf का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.edt_jfa.raw(...) का उपयोग करें, या match3d.edt_jfa को सीधे call करें।
• GPU: इस op का GPU path है (device="cuda")
3D Euclidean distance transform = Jump Flooding Algorithm (GPU)। हर voxel → निकटतम seed की दूरी।
मापने पर scipy EDT से बिल्कुल मेल खाता है (max|err|=0, N≤160, JFA+2)। scipy (C implementation) छोटे N पर तेज़ है, पर GPU-JFA N≥96 पर आगे निकल जाता है (RTX5090 पर मापा गया: 96→2.6× / 128→4.7×)। सभी voxel parallel चलते हैं, यह GPU पर ही रह सकता है; असली बात chamfer को CPU के आने-जाने के बिना पूरी तरह GPU pipeline बनाना है। आख़िरी step=1 को 2 pass (JFA+2) में करने से बड़े N पर approximation error भी ख़त्म हो जाता है। Return value distance field (D,H,W) का torch tensor है।
Argument seed_bool (D,H,W) का bool है (True=seed, distance 0)। Return value torch float32 tensor (D,H,W) है (device पर, numpy नहीं; ledger fs.ledger.edt_jfa से होकर आने पर यह numpy में बदल जाता है)। Distance voxel केंद्रों के बीच की Euclidean distance है (voxel इकाई में)। 1 भी seed न हो तो सभी voxel 1e6 पर saturate हो जाते हैं (exception नहीं आता)। यह 26 दिशाओं × log2(max(D,H,W)) चरणों में jump करता है, इसलिए memory कुछ (3,D,H,W) float32 arrays जितनी लगती है।
उपयोग: signed_distance_field (दोनों तरफ़), match_chamfer_3d(edt="jfa")। CPU version scipy.ndimage.distance_transform_edt(~seed) जैसे ही मान देता है।
• 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 के स्रोत।
• diff_features — py -3.11 examples_3d/diff_features.py
sdf को input के रूप में लेते हैं)sdf_to_occupancy · fuse_to_voxel · integrate · extract_surface_points · query_distance · sdf_union · sdf_intersect · sdf_subtract
feature)sobel3d · hessian3d · curvature_maps · edt_jfa_vector · vol_frangi · vol_local_std · vol_local_thickness · vol_orientation_coherence
*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.