describe op• Data kinds: voxel → descriptor
• Call: import fullseye as fs; fs.ledger.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu') (implementation को सीधे call करना हो तो import match3d; match3d.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu'), registry से लेना हो तो ops3d.get("sh_descriptor"))
• GPU: इस op का GPU path है (device="cuda")
spherical harmonic descriptor। concentric sphere shells की SH band energy ‖f_l(r)‖ को (radius × frequency) के रूप में लौटाता है।
2D closed contour को 1D Fourier descriptor से दर्शाने का line → surface lift: 3D closed surface को SH से दर्शाया जाता है, और band energy rotation invariant है क्योंकि rotation केवल band के भीतर m को मिलाता है (Kazhdan 2003)। सभी shell को grid_sample से लिया जाता है, fixed SH basis के साथ inner product → हर band का sum of squares। retrieval/verification के लिए global signature। Return value (nradii,L+1)।
honest खुलासा (2026-08-30 review में मापा गया): spherical quadrature एक uniform θ×φ grid sum है (Gauss-Legendre नहीं), इसलिए मान exact SH band energy का सन्निकटन (approximation) हैं (default 32×64 पर l=4 का self inner product सैद्धांतिक मान का ~0.62 गुना, resolution ↑ होने पर 1 की ओर converge)। match_sh_descriptor L2 normalisation + cosine similarity उपयोग करता है, इसलिए समान ntheta/nphi वाली तुलना पर असर नहीं पड़ता, पर absolute value को physical quantity की तरह उपयोग करना या अलग resolution setting के बीच तुलना करना मान्य नहीं है।
Arguments: vol को cube (N,N,N) माना जाता है। center c = (N−1)/2 और coordinate normalisation के लिए केवल axis 0 की लंबाई N उपयोग होती है, इसलिए non-cube पर axis 1,2 के sample position बिगड़ जाते हैं (validation नहीं है)। shell radius 0.2·rmax से rmax = N/2 − 1 तक nradii बराबर भागों में (voxel इकाई) हैं, और हर shell को ntheta × nphi के (θ,φ) grid पर trilinear sample किया जाता है। L maximum degree है। Return value (nradii, L+1) float32 numpy, [i, l] i-वें shell की degree l वाली energy है (non-negative)। object को volume के center में रखें (center खिसका हो तो rotation invariance टूटती है। पहले moment_axes के centroid से center मिलाएँ)। scipy का sph_harm_y/sph_harm call के समय import होता है।
• 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 के स्रोत।
• sh_descriptor_retrieval — py -3.11 examples_3d/sh_descriptor_retrieval.py
• shape_descriptor — py -3.11 examples_3d/shape_descriptor.py
descriptor को input के रूप में लेते हैं)fuse_to_voxel · shape_distance
describe)*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.