estimate_covariances — 3D gicp op

• Data kinds: points → descriptor

• Call: import fullseye as fs; fs.ledger.estimate_covariances(points, k: 'int' = 20, epsilon: 'float' = 0.001) -> 'np.ndarray' (to call the implementation directly, import gicp; gicp.estimate_covariances(points, k: 'int' = 20, epsilon: 'float' = 0.001) -> 'np.ndarray'; from the registry, ops3d.get("estimate_covariances"))

Usage

Plane-to-plane covariances (N,3,3): each point's local covariance with its eigenvalues replaced by (ε,1,1).

Eigen-decomposes the sample covariance of the k nearest neighbours (including the point itself) and reconstructs it with the eigenvalues replaced by 1 within the tangent plane and ε along the surface normal (direction of the smallest eigenvalue). The covariance magnitude is constant (ε,1,1) regardless of the neighbourhood spread, giving a scale-invariant "planar likelihood" model (the core of GICP).

Arguments:

points (N,3): point cloud.

k: number of neighbours (including itself). Covariance estimation is stable from about k≥4.

epsilon: small variance assigned to the normal direction (0<ε<1). The smaller, the more strongly

it constrains to the tangent plane. Scale-invariant (dimensionless ratio).

Returns:

(N,3,3) bundle of symmetric positive-definite covariances. The eigenvalues of each covariance are {ε,1,1}, and the eigenvector

corresponding to ε is the local surface normal direction.

Exceptions:

ValueError: points is not (N,3) / N<3 (normal undetermined, degenerate) /

epsilon outside (0,1) (fail-closed).

References (sample data, literature)

• 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.

Runnable examples (verified samples that actually call this op)

• gicp_register — py -3.11 examples_3d/gicp_register.py

Ops the type connects to (they accept descriptor as input)

fuse_to_voxel · shape_distance

Same category (gicp)

gicp


*Provenance: gicp.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.