1. ICP
(1)定义
对于两个点云source和target,求source经位姿变换后得到的点云与target尽可能重合的旋转RRR与平移ttt。由于实际中source和target两个点云中的点不一定完全对应,因此取二者能够相互关联的那些点(公共点)来参与位姿计算:
X={
x1,x2,⋯ ,xNx} Y={
y1,y2,⋯ ,yNy} Nx=Ny X = \{ x_1,x_2,\cdots,x_{N_x} \} \ \ \ \ \ \ \ \ \ \ Y = \{ y_1, y_2, \cdots, y_{N_y} \} \ \ \ \ \ \ N_x=N_y X={
x1,x2,⋯,xNx} Y={
y1,y2,⋯,yNy} Nx=Ny
目标:通过最小化损失函数计算旋转矩阵RRR和平移向量ttt
minE(R,t)=min1Ny∑i=1Ny∣∣xi−Ryi−t∣∣2 min E(R,t) = min \frac{1}{N_y}\sum_{i=1}^{N_y}|| x_i-Ry_i-t||^2 minE(R,t)=minNy1i=1∑Ny∣∣xi−Ryi−t∣∣2
流程
获取两个点云之间的关联点一般是以二者距离最近的两个点为相互关联点,但若两初始点云相距较远,此时通过距离最近找到的关联点不一定是真正的关联点。在具有较好的初始位姿前提下,可通过迭代的方式,将当前迭代中变换后的点作为下一迭代的起始点,直到两关联点云达到预期的尽可能重合状态(较好的初始位姿是为了使经过迭代后两点云相互靠近,否则即使迭代多次后两点云仍不会达到预期重合状态)。其流程如下所示:

(2)ICP公式推导
根据定义可知,目标函数如下:
E(R,t)=1Ny∑i=1Ny∣∣xi−Ryi−t−ux+Ruy+ux−Ruy∣∣2 =1Ny∑i=1Ny(∣∣xi−ux−R(yi−uy)+(ux−Ruy−t)∣∣2) =1Ny∑i=1Ny(∣∣xi−ux−R(yi−uy)∣∣2+∣∣ux−Ruy−t∣∣2 +2(xi−ux−R(yi−uy))T(ux−Ruy−t)) =1Ny∑i=1Ny(∣∣xi−ux−R(yi−uy)∣∣2+∣∣ux−Ruy−t∣∣2) E(R,t)=\frac{1}{N_y}\sum_{i=1}^{N_y}||x_i-Ry_i-t-u_x+Ru_y+u_x-Ru_y||^2 \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac{1}{N_y}\sum_{i=1}^{N_y}(||x_i-u_x-R(y_i-u_y)+(u_x-Ru_y-t)||^2) \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac{1}{N_y}\sum_{i=1}^{N_y}(||x_i-u_x-R(y_i-u_y)||^2+||u_x-Ru_y-t||^2 \\ \ \ \ \ \ \ \ \ \ \ \ +2(x_i-u_x-R(y_i-u_y))^T(u_x-Ru_y-t)) \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =\frac{1}{N_y}\sum_{i=1}^{N_y}(||x_i-u_x-R(y_i-u_y)||^2+||u_x-Ru_y-t||^2) E(R,t)=Ny1i=1∑Ny∣∣xi−Ryi−t−ux+Ruy+ux−Ruy∣∣2 =Ny1i=1∑Ny(∣∣xi−ux−R(yi−uy)+(ux−Ruy−t)∣∣2) =Ny1i=1∑Ny(∣∣xi−ux−R(yi−uy)∣∣2+∣∣ux−Ruy−t∣∣2 +2(xi−ux−R(yi−uy))T(ux−Ruy−t)) =Ny1i=1∑Ny(∣∣xi−ux−R(yi−uy)∣∣2+∣∣ux−Ruy−t∣∣2)
其中,uxu_xux和uyu_yuy分别是点云X和Y的质心,即:
ux=1Nx∑i=1Nxxi uy=1Ny∑i=1Nyyi u_x=\frac{1}{N_x}\sum_{i=1}^{N_x}x_i \ \ \ \ \ \ \ \ \ \ u_y=\frac{1}{N_y}\sum_{i=1}^{N_y}y_i ux=Nx1i=1∑Nxxi uy=Ny1i=1∑Nyyi
上述推导中去掉两点云的中心,其目的是: 中心到中心之间的距离就是两点云之间的平移,去中心之后两点云之间的约束只剩下旋转,这样可将平移和旋转解耦开。
令E1(R,t)=1Ny∑i=1Ny(∣∣xi−ux−R(yi−uy)∣∣2E_1(R,t)=\frac{1}{N_y}\sum_{i=1}^{N_y}(||x_i-u_x-R(y_i-u_y)||^2E1(R,t)=Ny1i=1∑Ny(∣∣xi−ux−R(yi−uy)∣∣2E2(R,t)=1Ny∑i=1Ny∣∣ux−Ruy−t∣∣2E_2(R,t)=\frac{1}{N_y}\sum_{i=1}^{N_y}||u_x-Ru_y-t||^2E2(R,t)=Ny1i=1∑Ny∣∣ux−Ruy−t∣∣2
那么,E(R,t)=E1(R,t)+E2(R,t)E(R,t)=E_1(R,t)+E_2(R,t)E(R,t)=E1(R,t)+E2(R,t)。
在求解minE(R,t)minE(R,t)minE(R,t)的过程中,由于第一项E1(R,t)E_1(R,t)E1(R,t)只和RRR有关,因此只要根据minE1(R,t)minE_1(R,t)minE1(R,t)求出RRR,令第二项E2(R,t)E_2(R,t)E2(R,t)取最小值0,即可求出平移ttt。
求解旋转矩阵RRR
- 化简:将原始点云转换为去质心点云
记两点云的去质心点云分别为:xi,=xi−uxx_i^,=x_i-u_xxi,=xi−uxyi,=yi−uyy_i^,=y_i-u_yyi,=yi−uy则
E1(R,t)=1Ny∑i=1Ny∣∣xi−ux−R(yi−uy)∣∣2=1Ny∑i=1Ny∣∣xi,−Ryi,∣∣2 =1Ny∑i=1Ny(xi,Txi,+yi,TRTRyi,−2xi,TRyi,)=1Ny∑i=1Ny(xi,Txi,+yi,Tyi,−2xi,TRyi,) E_1(R,t)=\frac{1}{N_y}\sum_{i=1}^{N_y}||x_i-u_x-R(y_i-u_y)||^2=\frac{1}{N_y}\sum_{i=1}^{N_y}||x_i^,-Ry_i^,||^2 \\ \ \ \ \ =\frac{1}{N_y}\sum_{i=1}^{N_y}(x_i^{,T}x_i^,+y_i^{,T}R^TRy_i^,-2x_i^{,T}Ry_i^,) =\frac{1}{N_y}\sum_{i=1}^{N_y}(x_i^{,T}x_i^,+y_i^{,T}y_i^,-2x_i^{,T}Ry_i^,) E1(R,t)=Ny1i=1∑Ny∣∣xi−ux−R(yi−uy)∣∣2=Ny1i=1∑Ny∣∣xi,−Ryi,∣∣2 =Ny1i=1∑Ny(xi,Txi,+yi,TRTRyi,−2xi,TRyi,)=Ny1i=1∑Ny

本文介绍了三维点云处理中的点云配准技术,重点讲解了两种主流方法:ICP(Iterative Closest Point)和NDT(Normal Distributions Transform)。ICP通过迭代最小化点对之间的距离实现配准,而NDT则是通过优化点云分布的匹配度。NDT在某些情况下表现出更好的鲁棒性和效率。实践中,点云配准涉及数据预处理、初始位姿获取和迭代优化等多个步骤。
5163

被折叠的 条评论
为什么被折叠?



