sh_descriptor — 3D describe op

• Datenarten: voxel → descriptor

• Aufruf: import fullseye as fs; fs.ledger.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu') (die Implementierung direkt: import match3d; match3d.sh_descriptor(vol, L=8, nradii=12, ntheta=32, nphi=64, device='cpu'); aus dem Register: ops3d.get("sh_descriptor"))

• GPU: Dieser Operator hat einen GPU-Pfad (device="cuda")

Verwendung

Der Kugelflächenfunktions-Deskriptor. Liefert die SH-Bandenergie ‖f_l(r)‖ konzentrischer Schalen als (Radius × Frequenz).

Ein Linie → Fläche-Lift der Darstellung einer geschlossenen 2D-Kontur durch 1D-Fourier-Deskriptoren: Eine geschlossene 3D-Fläche wird mit SH dargestellt, und die Bandenergie ist rotationsinvariant, weil Rotation m nur innerhalb eines Bandes mischt (Kazhdan 2003). Alle Shells werden mit grid_sample abgetastet, Skalarprodukte mit einer festen SH-Basis → Quadratsumme je Band. Eine globale Signatur für retrieval/verification. Rückgabewert (nradii,L+1).

Ehrliche Offenlegung (gemessen im Review 2026-08-30): Die Kugelquadratur ist eine gleichmäßige θ×φ-Gittersumme (nicht Gauss-Legendre), daher sind die Werte eine Näherung der exakten SH-Bandenergie (mit dem Standard 32×64 ist das l=4-Eigenskalarprodukt ~0.62-mal der theoretische Wert, konvergiert mit Auflösung ↑ gegen 1). match_sh_descriptor nutzt L2-Normierung + Kosinus- Ähnlichkeit und ist daher bei Vergleichen mit gleichem ntheta/nphi nicht betroffen, aber die Absolutwerte als physikalische Größen zu verwenden oder über verschiedene Auflösungseinstellungen zu vergleichen ist nicht zulässig.

Argumente: vol wird als Würfel (N,N,N) vorausgesetzt. Für das Zentrum c = (N−1)/2 und die Koordinatennormierung wird nur die Länge N von Achse 0 verwendet, bei Nicht-Würfeln sind die Abtastpositionen auf Achse 1,2 verzerrt (es gibt keine Validierung). Shell-Radien sind nradii gleiche Schritte von 0.2·rmax bis rmax = N/2 − 1 (Voxel-Einheiten), jede Shell wird auf einem ntheta × nphi-(θ,φ)-Gitter trilinear abgetastet. L ist der Maximalgrad. Rückgabewert (nradii, L+1) float32 numpy; [i, l] ist die Energie vom Grad l der i-ten Shell (nicht negativ). Das Objekt in die Mitte des Volumes legen (ein verschobenes Zentrum zerstört die Rotationsinvarianz; vorher mit dem Schwerpunkt aus moment_axes zentrieren). scipys sph_harm_y/sph_harm wird beim Aufruf importiert.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• sh_descriptor_retrieval — py -3.11 examples_3d/sh_descriptor_retrieval.py

• shape_descriptor — py -3.11 examples_3d/shape_descriptor.py

Typkompatible Folge-Operatoren (nehmen descriptor als Eingabe)

fuse_to_voxel · shape_distance

Gleiche Kategorie (describe)

match_sh_descriptor


*Provenance: match3d.py — 3D Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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