三维点云处理之点云配准

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

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=1Ny∣∣xiRyit2
流程

​ 获取两个点云之间的关联点一般是以二者距离最近的两个点为相互关联点,但若两初始点云相距较远,此时通过距离最近找到的关联点不一定是真正的关联点。在具有较好的初始位姿前提下,可通过迭代的方式,将当前迭代中变换后的点作为下一迭代的起始点,直到两关联点云达到预期的尽可能重合状态(较好的初始位姿是为了使经过迭代后两点云相互靠近,否则即使迭代多次后两点云仍不会达到预期重合状态)。其流程如下所示:
在这里插入图片描述
(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=1Ny∣∣xiRyitux+Ruy+uxRuy2                  =Ny1i=1Ny(∣∣xiuxR(yiuy)+(uxRuyt)2)                    =Ny1i=1Ny(∣∣xiuxR(yiuy)2+∣∣uxRuyt2           +2(xiuxR(yiuy))T(uxRuyt))                     =Ny1i=1Ny(∣∣xiuxR(yiuy)2+∣∣uxRuyt2)
​ 其中,uxu_xuxuyu_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=1Nxxi          uy=Ny1i=1Nyyi
​ 上述推导中去掉两点云的中心,其目的是: 中心到中心之间的距离就是两点云之间的平移,去中心之后两点云之间的约束只剩下旋转,这样可将平移和旋转解耦开。

​ 令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=1Ny(∣∣xiuxR(yiuy)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=1Ny∣∣uxRuyt2

那么,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,=xiuxyi,=yi−uyy_i^,=y_i-u_yyi,=yiuy
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=1Ny∣∣xiuxR(yiuy)2=Ny1i=1Ny∣∣xi,Ryi,2    =Ny1i=1Ny(xi,Txi,+yi,TRTRyi,2xi,TRyi,)=Ny1i=1Ny

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值