match_chamfer_3d — 3D match_localize op

• Data kinds: voxel × voxel → position

• Call: import fullseye as fs; fs.ledger.match_chamfer_3d(scene, template, device='cpu', thr=0.3, edt='scipy') (implementation को सीधे call करना हो तो import match3d; match3d.match_chamfer_3d(scene, template, device='cpu', thr=0.3, edt='scipy'), registry से लेना हो तो ops3d.get("match_chamfer_3d"))

• Ledger के ज़रिए return value: fullseye.ledger.match_chamfer_3d(...) केवल घोषित out type position का value लौटाता है (मूल function सहायक जानकारी भी लौटाता है)। जो हिस्सा छोड़ दिया गया है उसकी ज़रूरत हो तो fullseye.ledger.match_chamfer_3d.raw(...) का उपयोग करें, या match3d.match_chamfer_3d को सीधे call करें।

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

chamfer / distance-field matching (partial और occlusion के प्रति robust)। voxel × chamfer column।

टेम्पलेट के किनारे बिंदु को दृश्य के किनारे के EDT पर रखें (प्रत्येक स्वर से निकटतम किनारे तक की दूरी)। दूरियों का योग न्यूनतम करें. स्कोर(pos)=Σ_{टेम्पलेट एज} DT_scene(pos+edge)/n. कम बेहतर मिलान है। यह तब भी काम करता है जब किनारे के कुछ बिंदु गायब हों (एनसीसी की तुलना में अवरोध के प्रति अधिक प्रतिरोधी)। सहसंबंध (conv3d) हमेशा GPU होता है। दूरी क्षेत्र है edt='scipy' (CPU, डिफ़ॉल्ट) या edt='jfa' (edt_jfa, सभी GPU, कोई CPU राउंड ट्रिप नहीं, बिल्कुल scipy से मेल खाता है)। वापसी मान [चैम्फर दूरी, डी, एच, डब्ल्यू]।

चरण: |∇| के साथ किनारे स्वर > thr·max|∇| दोनों खंडों में (thr अधिकतम है ढलान का सापेक्ष अनुपात, जहां ढलान sobel3d है)। दृश्य किनारे के लिए एक दूरी परिवर्तन डीटी बनाएं और टेम्पलेट का उपयोग करें किनारे के बाइनरी मान वॉल्यूम को कर्नेल में परिवर्तित करें और इसे किनारों की संख्या n से विभाजित करें। रिटर्न मान का dist [dist, z, y, x] टेम्प्लेट के प्रति स्वर किनारे, निकटतम दृश्य किनारे तक है। "औसत दूरी (स्वर इकाइयों में)" और 0 एकदम मेल है। स्थिति टेम्पलेट केंद्र (T//2) का दृश्य निर्देशांक है पूर्णांक(सबवोक्सल कोई परिशोधन नहीं है। यदि आवश्यक हो, तो refine_translation_lk पर जाएं। चूंकि यह एक कोने का सम्मेलन है टी//2) घटाएं। वे स्थितियाँ जहाँ टेम्प्लेट पूरी तरह से फिट नहीं होता, अधिकतम मान +1 से भर दिया जाता है और बाहर कर दिया जाता है। यदि टेम्पलेट में कोई किनारा नहीं है (थ्र बहुत अधिक है, आदि), तो स्कोर सभी 0 होगा और सूचकांक (0,0,0) वापस कर दिया जाएगा। यदि दृश्य में कोई किनारा नहीं है, तो दूरी फ़ील्ड का कोई अर्थ नहीं है (निचला थ्र)। edt='jfa'' edt_jfa का उपयोग करता है और डिवाइस'' पर पूरा होता है, अन्यथा scipy (सीपीयू)। यदि टेम्प्लेट में कोई किनारा नहीं है, तो स्कोर सभी 0 होगा, और वैध श्रेणी की शुरुआत (pd, ph, pw) वापस कर दी जाएगी।

खाली इनपुट (दृश्य 0 तत्वों के साथ) के परिणामस्वरूप वैल्यूएरर होता है।

संदर्भ (sample data, साहित्य)

• 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 के स्रोत।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• matching_localize — py -3.11 examples_3d/matching_localize.py

वे अगले ops जिनसे type जुड़ता है (position को input के रूप में लेते हैं)

refine_peak_newton · refine_translation_lk · refine_lm · fuse_to_voxel

इसी category के (match_localize)

match_shape_3d · match_curvature_3d · match_hough_3d · match_mip_2d · match_points_ncc


*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.