hausdorff_distance — 3D metrics op

• Data kinds: points × points → measurement

• Call: import fullseye as fs; fs.ledger.hausdorff_distance(a, b) (implementation को सीधे call करना हो तो import metrics3d; metrics3d.hausdorff_distance(a, b), registry से लेना हो तो ops3d.get("hausdorff_distance"))

उपयोग

symmetric Hausdorff distance = max(max_a min_b, max_b min_a)। → scalar। worst-case अंतर।

Raises ValueError: यदि दोनों में से कोई खाली हो या (N,3) न हो (खाली का maximum numpy का कच्चा exception बन जाता)।

गणना: cKDTree से a के हर point से b तक की nearest neighbour दूरी, और b से a तक की nearest neighbour दूरी लेकर, दोनों दिशाओं के अधिकतम मान में से बड़ा वाला लौटाता है। यह वह न्यूनतम radius है जो "एक cloud का हर point दूसरे cloud से इस दूरी के भीतर है" की गारंटी देता है। इकाई coordinate की इकाई है।

इनपुट: a, b (N, 3) / (M, 3) के point cloud हैं (points की संख्या अलग हो सकती है, correspondence की ज़रूरत नहीं)। sibling chamfer_distance की तरह यह भी प्रवेश पर _require_cloud से गुज़रता है: खाली point cloud या (N, 2) जैसा 3 columns वाला न होने वाला input इस op के अपने संदेश वाले ValueError से अस्वीकार होता है (पहले खाली cloud पर max() numpy के "zero-size array" से विफल होता था, और 3 columns वाला न होने वाला input cKDTree के dimension mismatch से विफल होता था — दोनों में से कोई नहीं बताता कि गलत क्या है)।

return value: Python float, [0, inf)। एक जैसे point cloud के लिए 0। normalise नहीं किया जाता।

ध्यान दें: 1 outlier point से मान तय होता है (mean नहीं, maximum)। noise वाले scans के मूल्यांकन के लिए chamfer_distance या fscore (threshold tau के भीतर का अनुपात) अधिक स्थिर हैं; Hausdorff का उपयोग तब करें जब "सबसे बुरी स्थिति में भी यह सटीकता" का दावा करना हो (tolerance सत्यापन, LOD के max_error जैसी ही प्रकृति)।

पृष्ठभूमि guides (इस op के पीछे की physics और conventions)

• blender_interop — Blender के साथ उपयोग — shape बनाएँ, fullseye से मापें (सावधानियाँ: axes, units, ground truth)

• measurement_uncertainty — Measurement uncertainty और calibration — 'हम माप रहे हैं' कहने के लिए क्या चाहिए

संदर्भ (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 करते हैं)

• mesh_lod_download — py -3.11 examples_3d/mesh_lod_download.py

• pointcloud_downsampling — py -3.11 examples_3d/pointcloud_downsampling.py

• poisson_surface_recon — py -3.11 examples_3d/poisson_surface_recon.py

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

vol_gaussian_psf · fuse_to_voxel · fresnel_reflectance · snell_angle

इसी category के (metrics)

chamfer_distance · m3c2_distance · fscore · rmse_correspondence · normal_consistency · voxel_iou · pose_error


*Provenance: metrics3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.