detect op• Data kinds: voxel → primitive
• Call: import fullseye as fs; fs.ledger.hough_plane_3d(vol, device='cpu', ndir=200, nd=128, mc=0.0, iso=0.5, tol=1.0) (implementation को सीधे call करना हो तो import match3d; match3d.hough_plane_3d(vol, device='cpu', ndir=200, nd=128, mc=0.0, iso=0.5, tol=1.0), registry से लेना हो तो ops3d.get("hough_plane_3d"))
• GPU: इस op का GPU path है (device="cuda")
plane detection (2D Hough line का 3D lift)। gradient=normal का उपयोग करके (normal n, distance d) space में vote करता है।
पतली boundary surface का हर voxel अपने normal-direction bin और d=n·p के लिए vote करता है → peak = dominant plane। normal को जीतने वाले bin के वास्तविक normal के औसत से refine किया जाता है, d को projection के mode से। point cloud/voxel से ज़मीन या दीवार निकालने के लिए। Return value (n(3,), d, inliers, total)।
प्रक्रिया: (vol > iso) की 1 voxel मोटी boundary surface लें (occupied voxel जो 3³ erosion में मिट जाते हैं), और उन voxel के unit gradient (sobel3d; mc raw output पर threshold है) को normal n बनाएँ। n को उस hemisphere में fold किया जाता है जहाँ axis 0 component ऋणात्मक न हो, d = n·p (p integer voxel index (z,y,x) है)। ndir reference direction (26 या कम पर 26-neighbourhood, उससे ज़्यादा पर fibonacci sphere) और nd d bin में vote किया जाता है, सबसे ज़्यादा vote वाले bin के वास्तविक normal के औसत से n, और उस n पर projection histogram के mode के पास के median से d refine होता है। Return value (n(3,), d, inliers, total): n (z,y,x) क्रम में unit normal है (numpy float32), plane n·(z,y,x) = d है (voxel इकाई में)। inliers |n·p − d| < tol वाले boundary voxel की संख्या है, total boundary voxel की कुल संख्या (inliers/total dominant plane का हिस्सा है)।
• boundary voxel 10 से कम हों तो None लौटाता है (exception नहीं)।
• density voxel को iso से binary (2-मान) किया जाता है (count density के लिए 0.5 का अर्थ "1 या अधिक point")।
• केवल 1 plane लौटाता है। कई plane के लिए inlier हटाकर फिर चलाएँ, या point cloud के लिए plane_segmentation
/ ransac_plane।
आगे: distance_point_plane / angle_between_planes से मापें।
• 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 के स्रोत।
• detect_primitives_3d — py -3.11 examples_3d/detect_primitives_3d.py
primitive को input के रूप में लेते हैं)fuse_to_voxel · angle_between_lines · angle_between_planes · angle_line_plane · distance_point_plane · distance_point_line · distance_line_line · distance_segment_segment
detect)*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.