网站未备案做经营被罚款,自己做网站卖什么,wordpress 抽奖,一个云主机 多个网站点云的配准是将不同的3D点云对齐成一个完成的点云模型#xff1b;配准的目标是找到两帧点云之间的相对旋转#xff08;rotation#xff09;与平移#xff08;translation#xff09;#xff0c;使得两份点云中有重叠的区域能够完好拼接。 点云配准示例图#xff08;来自…点云的配准是将不同的3D点云对齐成一个完成的点云模型配准的目标是找到两帧点云之间的相对旋转rotation与平移translation使得两份点云中有重叠的区域能够完好拼接。 点云配准示例图来自PCL 上图为初始的5份点云数据需要将着几份点云数据拼接成如下图中完整的模型 点云动态配准示例 常见的点云配准方式主要包含ICP配准以及NDT配准以及他们的配准当然还包括神经网络的点云配准方式。 1、点云配准理论
点云配准需要找到两份点云数据之间点的对应估计也就是找到两份点云中重叠的部分才可以进行配准这类配准对于有确定对应点的配准拥有闭式解closed form solution不需要迭代求解即可获取最优值。 对应点的寻找方式
1 若为深度相机则可以借助图像信息来寻找对应的匹配点并投影回3d空间
2 若为两帧点云信息则可以借助点云特征点来进行确立
不过上诉方法都会出现误匹配一般会借助RANSAC随机采样一致性来得到更为robust的估计。 1 ICP主要为point2point ICP和point2plane两种ICP方式
ICP配准点云时需要有较为准确的初始位姿后再使用该方法进行精配准ICP的点云配准大体步骤分为如下几步
1 点的匹配可以从图像中来或者点云中来 1.1 在两帧点云中找到对应的关键点点云中的关键点一般为特定的几何结构比如书本的边角与图像类似点云中的关键点包括NARF;SIFT;FAST当然也可以不适用关键点使用每一个点或者点云中的一部分点来进行配准不过那样的话会导致计算量过大。 1.2 特征的描述子与图像类似再找到点云的关键点后需要提取该关键点的描述子信息通过组合该结构的信息来生成对应的向量用于比对点云的中描述子包括NARF;FPFH;BRIEF;SIFT等。
2 匹配点估计给定两帧点云的特征向量集合通过关键点与描述子来找到重叠区域中相互对应的关键点对于关键点或特征的匹配可以使用暴力搜索kd-treeFLANN等方式来进行匹配
3 匹配点对估计类似与图像中关键点匹配点云中的关键点匹配也存在许多误匹配误匹配会影响最终的配准结果因此此处可以使用ransac或者根据匹配点对的百分位进行截取等方式来进行优化如果一帧中的某个关键点与另一帧中的多个关键点匹配则会取最小距离来确定匹配点
4 变换矩阵计算再得到准确的相互匹配的点云后则可以计算变换矩阵 其中point2point的评估误差为 point2plane的评估误差为其中np为点P的法线信息 估计两个点集的R和t可以使用使用SVD或者非线性优化求解 1 SVD方法 给定两对匹配点的点集和对其中第i对匹配点的误差项为 因此可以对所有点构建最小二乘问题求得使误差平方和达到极小的R和t 分别定义两组点的质心为(此处使用不带下标的项来代表质心) 在误差函数中进行展开 展开后最后一项元素求和为0(所有元素相加减去n个的质心为0),因此优化的结果仅与前两项相关即 上式中只有左边和旋转矩阵R相关右侧同时R与t。因此只要求得R后令右式为0即可求出t。
ICP的SVD方法流程如下 1、计算两组匹配点的质心与, 然后将每个点减去质心得到去质心的坐标 2、根据上述阐述的优化计算旋转矩阵 3、根据计算得到的旋转矩阵计算平移向量t 因此按照上面的步骤要先求取两组点集之间的旋转矩阵所以下面说重点一下R的计算 其中第一项与R无关第二项中因为R为正交矩阵因此也与R无关只有最后一项的与R有关,因此有如下推导 注 其中为trace(迹)有 然后可以使用SVD分解得出最优的旋转矩阵R。 可知W是一个n*n的矩阵n为点集的维度若是点云数据则n3则W是3*3的矩阵
若此时W是可逆矩阵则可以直接通过公式获得最优的旋转矩阵 但考虑到所有情况直接对W进行SVD分解也是可以的 其中为奇异值组成的对角矩阵对角线元素从大到小排列UV则为正交矩阵当W满秩时R为 若R的行列式为负数则去-R为最优数值。
对这块刚兴趣的同学可以参考Kabsch算法的实现
https://en.wikipedia.org/wiki/Kabsch_algorithmhttps://en.wikipedia.org/wiki/Kabsch_algorithm 2 非线性优化 2 open3d中使用ICP 更新中