feature_register op• Data kinds: points × normals → descriptor
• Call: import fullseye as fs; fs.ledger.compute_fpfh(points, normals, k=60, n_bins=11) (to call the implementation directly, import feat_fpfh; feat_fpfh.compute_fpfh(points, normals, k=60, n_bins=11); from the registry, ops3d.get("compute_fpfh"))
Compute the FPFH descriptor (N, 3*n_bins) (Rusu 2009).
1) SPFH: for each pair of a point p and its k neighbour points, compute (α,φ,θ) and histogram each feature into n_bins bins.
2) FPFH(p) = SPFH(p) + (1/k)Σ_j (1/d_pj) SPFH(j): combines the neighbour SPFHs with distance weights.
The 3 sub-histograms are each L1-normalised and concatenated (default 33 dimensions). The angular features are rigid-body invariant.
Arguments: points (N,3), normals (N,3), k (number of FPFH neighbours), n_bins (number of bins per 1 feature).
Returns: descriptor matrix of shape (N, 3*n_bins). Raises ValueError: if points/normals are not (N,3), row counts differ, values are non-finite, or N<4 (because k-NN requires k>=3).
• blas_threads_and_memory — Why matrix decompositions are slow — BLAS threads, caches, memory layout
• 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.
• fpfh_correspondence — py -3.11 examples_3d/fpfh_correspondence.py
descriptor as input)fuse_to_voxel · shape_distance
feature_register)harris3d_keypoints · iss_keypoints · shot_descriptor · register_spin · register_fpfh · register_shot
*Provenance: feat_fpfh.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.