match_localize op• Datenarten: voxel × voxel → position
• Aufruf: import fullseye as fs; fs.ledger.match_curvature_3d(scene, template, device='cpu', mc=0.000625, subvoxel=True) (die Implementierung direkt: import match3d; match3d.match_curvature_3d(scene, template, device='cpu', mc=0.000625, subvoxel=True); aus dem Register: ops3d.get("match_curvature_3d"))
• Rückgabewert über das Register: fullseye.ledger.match_curvature_3d(...) liefert nur den Wert des deklarierten Out-Typs position (die zugrunde liegende Funktion gibt zusätzlich Hilfsinformationen zurück). Wird das Verworfene gebraucht, nutze fullseye.ledger.match_curvature_3d.raw(...) oder rufe match3d.match_curvature_3d direkt auf.
• GPU: Dieser Operator hat einen GPU-Pfad (device="cuda")
Krümmungs-(Shape-Index-)Matching. Die Spalte Voxel × Krümmung — der Kern des Linie-zu-Fläche-Lifts.
Wandelt scene/template in ein mit curvedness gewichtetes shape-index-Feld um → Lokalisierung mit dem vorhandenen 3D-NCC. Da die Übereinstimmung über die lokale Flächenform statt der Intensität gemessen wird, lassen sich Objekte gleicher Intensität, aber anderer Form (Kugel vs Zylinder/Sattel) unterscheiden. S ist rotationsinvariant, daher ist es auch gegenüber Rotation einigermaßen robust. Rückgabewert [score, d, h, w].
Ablauf: curvature_maps auf beide Volumes → das gewichtete shape-index-Feld S × curvedness × mask w bilden; auf der Template-Seite die bbox von |w| > 0.1·max|w| ausschneiden und an accel_match.ncc_locate_3d übergeben. Rückgabewert [NCC, z, y, x] float64, NCC ∈ [−1, 1].
• Die Position ist das Zentrum des ausgeschnittenen bbox-Templates, wie es in der Szene liegt. Gegenüber dem Zentrum des ursprünglichen Template-Volumes
ist sie um den bbox-Offset verschoben (um zu den ursprünglichen Template-Koordinaten zurückzukehren, das lo der bbox wieder addieren).
• mc: Gradientenmasken-Schwellwert von curvature_maps (wahre Gradienteneinheiten, pro Voxel). Schließt flache Bereiche aus, um
Krümmungsrauschen zu unterdrücken.
• Ist das Krümmungsfeld des Templates überall 0 (flach, mc zu hoch), wird [0,0,0,0] zurückgegeben.
• Krümmung ist eine Ableitung 2. Ordnung und daher rauschempfindlich. Verrauschte Volumes zuerst glätten, etwa mit
smooth von points_to_voxel. subvoxel=True verfeinert auf den Schwerpunkt der ±2-Nachbarschaft des NCC-Maximums.
• 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.
• matching_localize — py -3.11 examples_3d/matching_localize.py
position als Eingabe)refine_peak_newton · refine_translation_lk · refine_lm · fuse_to_voxel
match_localize)match_shape_3d · match_chamfer_3d · match_hough_3d · match_mip_2d · match_points_ncc
*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.