Iterative Closest Point
迭代最近点ICPAdvancedA classic registration algorithm that repeatedly finds nearest-point pairs and solves for rotation and translation to align two point clouds.
Iterative closest point is the classic algorithm for point cloud registration (aligning two point clouds into the same coordinate frame), independently proposed by Chen and Medioni (1991) and Besl and McKay (1992). It loops through four steps: for every point in the source cloud, find its nearest point in the target cloud as a correspondence; solve for the rotation and translation that minimizes the sum of squared distances between these corresponding points; transform the source cloud accordingly; and repeat until the error stops decreasing. Common variants are point-to-point and the normal-vector-based point-to-plane, with the latter usually converging faster. ICP only performs local fine alignment and needs a roughly correct initial pose, or it easily gets stuck in a local optimum — so it is usually preceded by a global coarse registration step. It is widely used in lidar odometry, stitching together multiple scans, and refining object pose, with ready-made implementations in both PCL and Open3D.
ExampleRefining an object pose in Open3D: first do global coarse registration with FPFH features plus RANSAC, then feed that result as an initial guess to point-to-plane ICP, which outputs a 4×4 transform matrix along with a fitness score measuring overlap and an inlier_rmse measuring correspondence error.
- Also called
- ICP, Point-to-Point ICP, Point-to-Plane ICP
- Related
- Point Cloud Registration · Point Cloud · Fast Point Feature Histograms · Normal Distributions Transform · 6D Object Pose Estimation · LOAM (LiDAR Odometry and Mapping)
- Sources
- Wikipedia: Iterative closest point
Open3D Tutorial: ICP registration