主要内容

pcregistericp

采用ICP算法对两个点云进行配准

描述

例子

tform= pcregistericp (移动固定返回一个刚性转换,该转换将一个移动点云注册为一个固定点云。

配准算法基于“迭代最接近点”(ICP)算法。这个迭代过程的最佳性能需要调整数据的属性。为了提高配准的准确性和效率,可以考虑使用下采样点云pcdownsample使用前pcregistericp

配准算法需要点云法线“pointToPlane”或者是“planeToPlane”(也称为广义icp或G-ICP)度量。如果正常的属性的输入点云是空的,函数填充它。

tformmovingReg= pcregistericp(移动固定另外,返回与固定点云对齐的转换后的点云。

___rmse= pcregistericp(移动固定额外返回的欧几里得距离的均方根误差的内线对齐点之间,使用任何前面的语法。

___= pcregistericp(移动固定名称=值使用一个或多个名称-值参数以及以前语法中的参数组合指定选项。例如,pcregistericp(移动、固定指标=“planeToPlane”)将最小化度量设置为“planeToPlane”

例子

全部折叠

将点云数据加载到工作区中。

ptCloud = pcread(“teapot.ply”);

显示加载的点云。

pcshow (ptCloud)标题(“茶壶”

创建一个转换对象,沿z轴旋转30度,平移为[5 5 10]。

rotationAngles = [0 0 30];翻译= [5 5 10];tform1 = rigidtform3d(rotationAngles,translation);

变换点云并可视化结果。

ptcloudtform = pctransform(ptCloud,tform1);pcshow (ptCloudTformed)标题(“把茶壶”

登记点云。

tform = pcregistericp(ptCloudTformed,ptCloud,Extrapolate=true);

将结果与真实变换进行比较。

disp (tform1.A);
0.8660 -0.5000 0 5.0000 0.5000 0.8660 0 5.0000 00 1.0000 10.0000 000 1.0000
Tform2 =反转(tform);disp (tform2.A);
0.8660 -0.5000 -0.0000 5.0000 0.5000 0.8660 -0.0000 5.0000 0.0000 0.0000 1.0000 10.0000 000 1.0000

将点云数据加载到工作区中。

Ld =负载(“livingRoom.mat”);moving = ld.livingRoomData{1};fixed = ld.livingRoomData{2};

可视化点云,并设置显示y轴的方向。

图pcshowpair(移动、固定VerticalAxis =“Y”VerticalAxisDir =“向下”

下采样点云使用nonuniformGridSample方法提高配准的效率和准确性。

maxNumPoints = 12;fixeddownsamples = pcdownsample(固定,“nonuniformGridSample”, maxNumPoints);movingdownsamples = pcdownsample(移动,“nonuniformGridSample”, maxNumPoints);

使用平面到平面(Generalized-ICP)配准对齐点云。

[~,movingReg] = pcregistericp(movingDownsampled,fixedDownsampled,Metric=“planeToPlane”);

可视化点云对齐,并设置显示y轴的方向。

图pcshowpair (movingReg、固定VerticalAxis =“Y”VerticalAxisDir =“向下”

输入参数

全部折叠

移动点云,指定为apointCloud对象。

定点云,指定为apointCloud对象。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“planeToPlane”将ICP算法的最小度量设置为“planeToPlane”

最小化度量,指定为“点到点”“pointToPlane”,或“planeToPlane”.迭代最近邻点(ICP)算法根据指定的度量,通过最小化两个点云之间的距离来估计移动点云和固定点云之间的刚性转换。

指定度规作为“pointToPlane”“planeToPlane”(也称为广义icp算法)可以减少配准所需的迭代次数。然而,这些指标在每次迭代中都需要额外的算法步骤。使用“pointToPlane”或者是“planeToPlane”度量来提高平面表面的配准。

下样方法选择
下采样点云使用pcdownsample函数。配准算法需要点云法线“点到点”指标。的“nonuniformGridSample”算法在降采样之前计算原始数据上的法向量,从而得到更精确的法向量。因此,使用“nonuniformGridSample”下采样法可以得到更准确的结果“点到点”登记。使用“随机”“gridAverage”,或“nonuniformGridSample”方法。pcdownsample根据此表函数。

度规 移动点云下采样法 定点云下采样法
“点到点” “随机” “随机”
“gridAverage” “gridAverage”
“pointToPlane” “gridAverage” “gridAverage”
“随机” “nonuniformGridSample”
“planeToPlane” “gridAverage” “gridAverage”
“nonuniformGridSample” “nonuniformGridSample”

外推,指定为逻辑0)或1真正的).当您将此参数指定为真正的时,函数添加了一个外推步骤,在注册状态空间中跟踪路径,如中所述三维形状的配准方法.启用外推可以减少点云收敛所需的迭代次数。您不能指定推断属性时的名称-值参数“planeToPlane”指标。

内嵌的百分比,指定为(0,1]之间的标量。此值指定要用作内线的匹配对的百分比。如果两点之间的欧几里得距离小于匹配点云中任意两点之间最大欧几里得距离的指定百分比,则该函数将一对匹配点视为内线。缺省情况下,该函数使用所有匹配的对。

最大迭代次数,指定为正整数。此值指定函数试图使两个点云收敛的最大迭代次数。

“点到点”而且“pointToPlane”Metrics,此参数的默认值为20..为“planeToPlane”Metric,默认值为30。

连续ICP迭代之间的公差,指定为形式为[TdiffRdiff),Tdiff而且Rdiff分别为连续ICP迭代中估计的平移和旋转绝对差值。Tdiff测量两个平移向量之间的欧氏距离。Rdiff以度为单位测量角差。当最近三个连续迭代中估计的刚性变换之间的平均差值小于指定的公差值时,算法停止。

初始刚变换,用a表示rigidtform3d对象。当你提供一个外部粗略估计时,初始刚性变换是有用的。

显示指定为逻辑的进度信息0)或1真正的).指定详细的作为真正的显示进度信息。

输出参数

全部折叠

刚性变换,返回为arigidtform3d对象。刚性变换将一个移动的点云注册为一个固定的点云。的rigidtform3d对象描述刚性三维变换。迭代最近邻点(ICP)算法估计运动点云与静止点云之间的刚性变换。

转换后的点云,返回为apointCloud对象。变换后的点云与不动点云对齐。

均方根误差,返回为一个正数值标量,表示较近的对齐点之间的欧氏距离。

算法

全部折叠

完整的点云配准工作流程说明。

提示

参考文献

[1]贝丝,pj,尼尔·d·麦凯。3-D形状的注册方法模式分析与机器智能汇刊14日,没有。2(1992年2月):239-256。https://doi.org/10.1109/34.121791。

[2]陈、杨、Gérard Medioni。多距离图像配准的对象建模图像与视觉计算10,不。3(1992年4月):145-155。https://doi.org/10.1016/0262 - 8856 (92) 90066 - c。

[3]西格尔,A.,海内尔,D.和S.特龙。“Generalized-ICP”。机器人学:科学与系统机器人:科学与系统基金会,.(2009年6月):435-442。https://doi.org/10.15607/RSS.2009.V.021。

扩展功能

版本历史

在R2018a中引入

全部展开