姓名:黄姣蕊
学号:21011110244
【嵌牛导读】三维点云数据融合的方法以及迭代最近点算法
【嵌牛鼻子】三维点云数据融合,迭代最近点算法,计算机视觉
【嵌牛提问】如何将三维点云数据融合在一起
【嵌牛正文】
一、迭代最近点算法(ICP)
基于人体三维模型寻找相邻帧对应点的变化,主要采用的算法如下:
ICP(Iterative Closest Point )基本思想:主要应用于刚性配准,使源点集和目标点集经过旋转和平移尽可能的对齐。
算法流程图:

具体步骤:
Step1:源点集P={P1,P2,...,Pn}的点坐标,在目标数据点集S={S1,S2,...,Sn}中搜索相应最近点的点集Q={q1,q2,...,qn}。
利用两点间的距离平方和为dis。公式如下

其中,j遍历整个点集S,通过不断比较,找到距离最近的点,根据该点序列号保存该点集Q中,记为qi。
Step2:计算两个点集P、Q的重心位置坐标,并进行点集重心化生成新的点集。
两个数据点集P、Q的重心坐标 公式如下:

其中,k为点集的当前点序号,n为数据点集总数。并将点集中的所有数据点扣除重心点坐标生成新的点集D、M。
Step3:由新的点集计算协方差矩阵,并求解由它组成的一个四元数矩阵的最大特征值及其最大特征向量[f0,f1,f2,f3]。
旋转矩阵R:

Step4:将两个重心坐标写成向量形式,分别为:

则平移向量T的计算公式下:

Step5:将待匹配数据点集 P 经过旋转、平移变换后得到新的点集P’。计算点集 P’ 与模板点集 Q 对应点对的距离平方和的均值,定义为I作为迭代判断数值:

式中,n为数据点集总数, 为模板的邻近点集坐标向量, 为待匹配数据点集的坐标向量。
Step7:设置阈值,当数值I小于阈值时,ICP配准算法就停止迭代,否则重复(1)至(3)步。
二、三维点云数据融合
点云融合算法
step1:数据获取步骤:
1)将深度相机摆放好,保证相机水平放置之后,对地面进行拍摄,得到第一幅深度点云数据;
2)将底座放置在距相机平面大概1.2 米左右的位置,然后用深度相机进行拍摄,得到第二幅地面+底座的深度点云数据;
3)将奶牛模型平行于相机平面放置在底座上,进行拍摄,得到第三幅奶牛的正面点云数据;
4)将奶牛逆时针旋转30度,进行拍摄得到第四幅点云数据;
5)再将奶牛顺时针旋转60度,拍摄第五幅点云数据;
6)将整个奶牛调转180度放置在底座上进行拍摄,的到第六幅点云数据;
7)然后将奶牛逆时针旋转30 度,拍摄第七幅点云数据;
8)之后再顺时针旋转60度,拍摄第八幅点云数据;
9)将第三到第六幅的点云数据进行去背景处理。




step2:利用ICP迭代最近点算法对得到的点云数据进行配准。
具体配准过程如下:

step3:将得到的Front和Back两点云,利用ICP算法进行配准,就可以得到完整的三维点云数据图。
注意:在最后配准的过程中,我们是以底座为基准进行配准的,因为如果以奶牛模型为基准进行配准那么相匹配的特征点太少无法实现。
三维点云融合的结果图:
