match_localize op• Data kinds: voxel × voxel → position
• Call: import fullseye as fs; fs.ledger.match_curvature_3d(scene, template, device='cpu', mc=0.000625, subvoxel=True) (to call the implementation directly, import match3d; match3d.match_curvature_3d(scene, template, device='cpu', mc=0.000625, subvoxel=True); from the registry, ops3d.get("match_curvature_3d"))
• Return value through the ledger: fullseye.ledger.match_curvature_3d(...) returns only the declared out type position (the underlying function also returns auxiliary values). When you need what was dropped, use fullseye.ledger.match_curvature_3d.raw(...) or call match3d.match_curvature_3d directly.
• GPU: this op has a GPU path (device="cuda")
Curvature (shape-index) matching. The voxel × curvature column — the heart of the line-to-surface lift.
Converts scene/template into a shape-index field weighted by curvedness → locates with the existing 3D NCC. Because it measures the match by local surface shape rather than intensity, it can distinguish objects of the same intensity but different shape (sphere vs cylinder/saddle). S is rotation invariant, so it is also fairly robust to rotation. Returns [score, d, h, w].
Procedure: curvature_maps on both volumes → build the weighted shape-index field S × curvedness × mask w; on the template side crop the bbox of |w| > 0.1·max|w| and pass it to accel_match.ncc_locate_3d. Returns [NCC, z, y, x] float64, NCC ∈ [−1, 1].
• The position is the centre of the cropped bbox template as placed in the scene. It differs from the centre of the original template volume
by the bbox offset (to go back to original template coordinates, add the bbox lo back).
• mc: gradient-mask threshold of curvature_maps (true gradient units, per voxel). Excludes flat regions to
suppress curvature noise.
• If the template's curvature field is all 0 (flat, or mc too high), returns [0,0,0,0].
• Curvature is a 2nd-order derivative, so it is sensitive to noise. Smooth a noisy volume first, e.g. with the
smooth of points_to_voxel. subvoxel=True refines to the centroid of the ±2 neighbourhood of the NCC peak.
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• matching_localize — py -3.11 examples_3d/matching_localize.py
position as input)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. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.