Point set alignment
Semantic keypoints, shared surfels, NOCS coordinates, or trajectory timestamps already identify points. The objective is fixed, and SVD solves it in one step.
3D–3D Alignment & Point Cloud Registration
When RGB-D, stereo, or multiview reconstruction lifts observations into 3D, pose estimation becomes geometric alignment. Known correspondences permit a single SVD solve; unknown correspondences require alternating matching and transform updates. Their input contracts, convergence basins, and failure modes differ fundamentally.
Problem Contract
This site uses column vectors and {}^T T_S to map source-frame points into the target frame. Source points are qi and targets pi. The same equation can represent CAD→camera, previous→current frame, scan→map, or camera→robot base.
Semantic keypoints, shared surfels, NOCS coordinates, or trajectory timestamps already identify points. The objective is fixed, and SVD solves it in one step.
Raw point clouds have no shared point order. Nearest neighbors, local descriptors, or probabilistic models must infer which observations represent the same surface location.
Occlusion, fields of view, and scan paths create nonoverlapping regions. Forcing every source point to match a target inevitably brings outliers into the solution.
Data to move, such as CAD, a current scan, or camera frame t−1.
Rigid transform re-expressing source data in the target frame.
Fixed reference, such as an observed cloud, map, camera frame t, or robot base.
STT = [Rᵀ, −Rᵀt]; swapping source and target requires inversion.
Closed-form Alignment
Kabsch / Orthogonal Procrustes gives the optimal rigid rotation and translation for known correspondences with isotropic squared errors. Umeyama adds a global scale within the same structure and explicitly prevents mirrored rotations.
Usually the optimal rotation of centered point sets; adding centroid translation yields full rigid alignment.
The literature may allow translation, scale, or reflection. Check the permitted transform group when a method is called Procrustes.
Suitable for monocular trajectory scale alignment and category-level canonical coordinates; usually disable scale estimation when RGB-D and CAD both use meters.
Minimal geometry
Constrains only a translation combination; rotation is entirely unobservable.
Constrains one direction, but rotation around the connecting line remains free.
Three noiseless, identified points can define a handed rigid frame.
Rank deficiency or poor conditioning; some rotation directions remain unreliable even with small residuals.
If point precision differs, weight centroids and covariance by confidence. Directional uncertainty, such as greater depth uncertainty along a viewing ray, requires more than a scalar weight: use covariance, GICP, or a full maximum-likelihood objective. Robust kernels suit heavy-tailed noise, but many outlier correspondences still call for RANSAC consensus first.
Interactive Lab
The closed-form view performs 3×3 SVD on synthetic 3D correspondences, with scale and reflection toggles. The robust view samples noncollinear triples, scores all correspondences, and refits all inliers. The ICP view runs the same nearest-neighbor ↔ rigid-update mechanism as 3D point-to-point ICP on a 2D slice to expose convergence basins.
Interactive · 3D–3D Registration
Centroid
Spectrum
Handedness
Scale / translation
Fit
Consensus
Residual
Pose error
Sampling
Correspondence
Residual
Estimated transform
Convergence
Robust Paired Alignment
Semantic keypoints, feature matches, and network-predicted 3D–3D correspondences can contain gross errors. Instead of sending all points directly to SVD, generate models from minimal sets, establish full-data consensus, then refit the consensus set.
Check both source and target triangle areas, edge-length ratios, and duplicate indices; exclude ill-conditioned samples from model estimation.
Estimate R and t, rejecting nonfinite results, det(R) far from +1, or candidates clearly outside task priors.
Form inliers from 3D residuals, optionally using truncated loss, an M-estimator, or Mahalanobis distance normalized by point covariance.
A minimal triple only proposes a hypothesis. Recompute the final R and t by SVD on the best consensus set, then update inliers and quality metrics.
From Unknown Pose to Coarse Alignment
When source and target have unknown correspondences and a large relative pose, nearest neighbors are usually incorrect. Local geometric descriptors and robust consistency checks generate wide-baseline hypotheses. The aim is to enter the local optimizer's correct basin, before seeking final millimeter accuracy.
Check source / target direction, frames, meters or millimeters, timestamps, depth scale, and axes; first crop background irrelevant to the task.
Choose voxel downsampling to match object size and sensor noise; record normal-estimation radius, neighbor count, and orientation rules.
Compute FPFH or learned local descriptors and cross-check feature matches; propose coarse transforms with RANSAC, FGR, or other robust global methods.
Check edge-length preservation, normal angles, correspondence distances, transform validity, overlap, and symmetry equivalence alongside feature similarity.
Reduce voxel sizes and correspondence thresholds from coarse to fine; combine robust kernels and correspondence filtering with point-to-plane, GICP, or Colored ICP.
Report fitness, inlier RMSE, thresholds, overlap, pose errors, and failure causes; add rendering, silhouettes, collision, or loop-consistency checks as needed.
Canonical global-to-local chain
Shelves, gears, cylinders, and regular hole arrays create many locally similar descriptors, requiring global geometry or symmetry awareness.
Many descriptor matches can contain few correspondences from shared visible surfaces; estimate overlap explicitly.
FPFH and point-to-plane rely on normals. Flipped orientations, incorrect radii, and neighborhoods crossing boundaries can disrupt matching and optimization.
Symmetry can let multiple transforms align geometry equally well. Preserve the equivalence class instead of marking another correct symmetric pose as failure.
Local Registration
Classic ICP transforms source points with the current pose, finds target nearest neighbors, filters unreliable pairs, solves an incremental transform, and repeats until cost or pose changes are small. Pose-dependent correspondences make the objective nonconvex, so initialization determines the convergence basin.
Move source with the current T
Nearest-neighbor or projective correspondences
Distance, normals, boundaries, and cross-checks
Estimate and compose ΔT
Cost, increment, and iteration limit
| Method | Input | Main objective | Initialization | Strengths | Main risks |
|---|---|---|---|---|---|
| Kabsch / Orthogonal Procrustes | Known, consistently ordered 3D–3D correspondences | Squared point-to-point error | Not required | Closed-form SVD solution; suitable without outliers or for RANSAC inlier refitting | Mismatches directly corrupt the solution; det(R) = −1 must be handled |
| Umeyama | Known, consistently ordered 3D–3D correspondences | Squared point-to-point error under a similarity transform | Not required | Also estimates scale; common for trajectories, NOCS, and alignment across scales | Metric point clouds should usually fix s = 1; scale can absorb incorrect units or model bias |
| Point-to-point ICP | Two raw point clouds | Nearest-neighbor point-to-point distance | Usually needs an initial pose near ground truth | Simple implementation; no normals required | Slow convergence along planes; sensitive to density differences, partial overlap, and local optima |
| Point-to-plane ICP | Point clouds + target normals | Signed distance along target normals | Usually needs an initial pose near ground truth | Usually converges faster than point-to-point near smooth surfaces | Normal orientation, neighborhood scale, and local plane quality determine results |
| Generalized ICP | Point clouds + local covariances | Covariance-weighted local plane error | Usually needs a coarse initial pose | Unifies point-to-point and point-to-plane ideas using local structure on both sides | Sensitive covariance/neighborhood settings; higher computation cost |
| Colored ICP | Colored point clouds + normals | Geometric + photometric terms | Usually needs a coarse initial pose | Color gradients add tangential constraints in geometrically degenerate regions | Exposure, white balance, non-Lambertian reflection, and cross-frame color differences can mislead optimization |
| NDT | Source points + target voxel Gaussians | Likelihood of points under local probability distributions | Generally still affected by initialization | Compresses the target into voxel distributions; common in laser scan matching | Voxel resolution and optimization step size govern smoothness, speed, and local extrema |
| FPFH + RANSAC / FGR | Downsampled clouds + normals + local descriptors | Feature and geometric consistency | Can start from an unknown pose | Provides global or wide-baseline initialization for ICP | Repeated structure, low overlap, and incorrect normal/scale settings cause false matches |
Too small a threshold leaves no correspondences with poor initialization; too large a threshold draws nonoverlapping regions and wrong surfaces into optimization. Tighten it progressively across scales.
Huber, Cauchy, and Tukey kernels reduce remaining outlier weights through IRLS, but cannot create correct correspondences or missing overlap.
With approximate overlap known, discard the largest residual fraction. An incorrect overlap estimate may remove genuine matches or retain outliers.
Larger voxels smooth local geometry and reduce computation; decreasing voxel sizes and thresholds then restores detail.
Evaluation & Acceptance
Evaluate correspondence residuals, cloud coverage, ground-truth pose, surface distances, and downstream tasks. Each answers a different question; a good RMSE can hide low overlap, symmetry, or an incorrect local solution.
Inspect RMS, median, P90/P95, and residual histograms; means can hide long tails and local errors.
Check bidirectional nearest neighbors, overlap, and spatial distribution together to avoid aligning only a local plane.
With ground truth, report rotation, translation, and scale errors, accounting for transform direction and symmetry equivalence.
For reconstruction, check loop and surface consistency; for grasping, TCP, collisions, and approach direction; for 6D pose, CAD rendering and visible silhouettes.
Recommended log contract
source→target · units · voxel · normal radius · init source · solver · max correspondence · robust loss · iterations · inlier/all · fitness · RMSE/P95 · ΔR/Δt · overlap · stop reason Across Application Domains
Segment target depth, back-project a camera cloud, initialize with a network pose or global features, then refine with geometric/color ICP to estimate CTO. Handle partial overlap between the visible surface and full CAD model.
Consecutive frames provide useful motion initialization; ICP, GICP, or NDT recover relative motion. Mismatches accumulate into drift, requiring loop closures and pose-graph optimization.
Rigid transforms between corresponding geometry or scans enter the base–camera–tool chain. Synchronization, structural flex, and unit errors often exceed solver errors.
Transfer offline CAD grasp poses into the scene using sceneTmodel ; correct local surface alignment still does not guarantee correct global object pose, collision avoidance, or gripper reachability.
Engineering recipe · Open3D Python
# source -> target
source_down, source_fpfh = preprocess(source, voxel)
target_down, target_fpfh = preprocess(target, voxel)
coarse = o3d.pipelines.registration.registration_ransac_based_on_feature_matching(
source_down, target_down, source_fpfh, target_fpfh,
mutual_filter=True,
max_correspondence_distance=1.5 * voxel,
estimation_method=o3d.pipelines.registration.TransformationEstimationPointToPoint(False),
ransac_n=3,
checkers=checkers,
criteria=criteria,
)
fine = o3d.pipelines.registration.registration_icp(
source, target, 0.4 * voxel, coarse.transformation,
o3d.pipelines.registration.TransformationEstimationPointToPlane(),
) Most libraries return a 4×4 source-to-target transform. Swapping inputs should invert the result, rather than merely change the translation sign.
Before point-to-plane ICP, verify target normals exist at an appropriate scale with stable orientation. After downsampling, re-estimate or correctly aggregate them.
Save coarse and fine transforms, per-level metrics, and aligned clouds. A final matrix alone cannot distinguish global from local failures.
Debug Protocol
Registration errors often come from direction, units, depth back-projection, cloud filtering, and normals, beyond optimizer settings. Layered tests—from single points and known transforms to outlier-free closed-form solves and real unknown correspondences—locate the failing stage.
Compare AABBs, centroids, median point spacing, and depth ranges. Meter/millimeter errors invalidate thresholds and can be temporarily hidden by accidentally enabled scale estimation.
Calculate p = Rq+t by hand, check that library output is source-to-target, then verify T⁻¹(Tq)=q.
Kabsch should reach numerical-precision residuals with det(R)≈+1. If it fails, first check H direction, multiplication side, and centroid translation.
Change one factor at a time and log inlier ratio, pose error, and degenerate sample count; avoid guessing ten parameters at once in a real scene.
If coarse alignment enters the wrong symmetry branch, fine ICP can stay there despite a good fit. If correct coarse alignment worsens during refinement, inspect correspondence thresholds, normals, and nonoverlap.
Long lines near silhouettes/occlusions suggest partial overlap; consistent directional offsets suggest extrinsics or synchronization; links across repeated structures suggest descriptor ambiguity.
Inspect CAD rendering, surface coverage, pose jumps, collisions, or loop closures alongside converged=true.
Next systems topic · 08