curvature op• Data kinds: points → normals
• Call: import fullseye as fs; fs.ledger.estimate_normals(points, k=25) (implementation को सीधे call करना हो तो import curvature3d; curvature3d.estimate_normals(points, k=25), registry से लेना हो तो ops3d.get("estimate_normals"))
बाहर की ओर (neighbourhood centroid से दूर) एकरूप किए गए point cloud normals। → (N,3)।
प्रक्रिया (हर point पर, Python loop): cKDTree से point सहित k+1 neighbours लिए जाते हैं (k को N-1 तक काटा जाता है), और query point को origin मानकर neighbour coordinates के scatter matrix local.T @ local का सबसे छोटा eigenvector normal बनता है (unit length)। orientation: "neighbourhood centroid के साथ dot product धनात्मक हो तो उलट दें" = neighbourhood centroid से दूर वाली ओर संरेखित।
• जिन points का neighbourhood 5 points से कम है वे स्थिर मान (0, 0, 1) लौटाते हैं (अनुमान नहीं किया जाता)।
• orientation एक local heuristic है: बंद convex आकार में यह बाहर की ओर होती है, पर open surface, पतली plate और concave हिस्सों में पड़ोसी points की orientation आपस में मेल नहीं खा सकती (global consistency की गारंटी नहीं)। global रूप से संरेखित करने के लिए orient_normals से गुज़ारें या शुरू से estimate_oriented_normals इस्तेमाल करें। organized depth image के लिए normals_from_depth viewpoint की ओर oriented और तेज़ है।
• return value float64 (N,3) है। k का default 25। Deterministic।
• अंदर से यह principal_curvatures वाली ही गणना से गुज़रता है (normal estimation में भी quadric surface fit तक चलता है), इसलिए points ज़्यादा हों तो धीमा है।
• blas_threads_and_memory — Matrix decompositions धीमे क्यों हैं — BLAS threads, caches, memory layout
• 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 के स्रोत।
• cylinder_axis_metrology — py -3.11 examples_3d/cylinder_axis_metrology.py
• feature_register — py -3.11 examples_3d/feature_register.py
• oriented_normals — py -3.11 examples_3d/oriented_normals.py
normals को input के रूप में लेते हैं)icp_point2plane · compute_fpfh · shot_descriptor · fuse_to_voxel · reflect · refract · normal_consistency · ransac_cylinder
curvature)principal_curvatures · mean_curvature · gaussian_curvature · shape_index
*Provenance: curvature3d.py — 3D operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.