帮助中心帮助中心
采用CPD算法对两点云进行配准
tform = pcregistercpd(移动、固定)
[tform, movingReg] = pcregistercpd (___)
[___, rmse] = pcregistercpd (___)
[___) = pcregistercpd (___名称=值)
例子
tform= pcregistercpd (移动,固定)返回使用CPD算法将移动点云注册为固定点云的转换。相干点漂移(CPD)算法[1]支持非刚性的转换。
tform= pcregistercpd (移动,固定)
tform
移动
固定
请注意
考虑使用下采样点云pcdownsample之前使用了pcregistercpd来提高配准的准确性和效率。
pcdownsample
[tform,movingReg) = pcregistercpd (___)还返回与定点云对齐的转换后的点云。
[tform,movingReg) = pcregistercpd (___)
movingReg
[___,rmse) = pcregistercpd (___)也返回对齐点云之间欧氏距离的均方根误差。
[___,rmse) = pcregistercpd (___)
rmse
[___) = pcregistercpd (___,名称=值)指定选项,使用一个或多个名称-值参数以及来自以前语法的参数的任何组合。例如,MaxIterations = 20在20次迭代后停止CPD算法。
[___) = pcregistercpd (___,名称=值)
名称=值
MaxIterations = 20
全部折叠
将点云数据加载到工作区中。从工作空间中的点云数据中提取移动点云和不动点云。
handData =负载(“hand3d.mat”);移动= handData.moving;固定= handData.fixed;
为了提高CPD配准算法的效率和精度,对移动点云和不动点云进行了下采样。
movingDownsampled = pcdownsample(移动,“gridAverage”, 0.03);fixedDownsampled = pcdownsample(固定的,“gridAverage”, 0.03);
显示注册前的下采样点云。
图pcshowpair (movingDownsampled fixedDownsampled,“MarkerSize”, 50)包含(“X”) ylabel (“Y”) zlabel (“Z”)标题(“注册前的点云”)({传奇“移动点云”,固定的点云的},“输入TextColor”,' w ')传说(“位置”,“southoutside”)
使用CPD算法执行非刚性配准。
[tform, movingReg] = pcregistercpd (movingDownsampled fixedDownsampled);
显示注册后的下采样点云。
图pcshowpair (movingReg fixedDownsampled,“MarkerSize”, 50)包含(“X”) ylabel (“Y”) zlabel (“Z”)标题(“注册后的点云”)({传奇“移动点云”,固定的点云的},“输入TextColor”,' w ')传说(“位置”,“southoutside”)
pointCloud
移动点云,指定为pointCloud对象。
定点云,指定为pointCloud对象。
指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
Name1 = Value1,…,以=家
的名字
价值
例子:MaxIteration = 20在20次迭代后停止CPD算法。
MaxIteration = 20
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。
变换
“非刚性的”
“刚性”
“仿射”
转换的类型,指定为“非刚性的”,“刚性”,或“仿射”.
数据类型:字符|字符串
字符
字符串
OutlierRatio
0.1
异常值相对于正态分布的期望百分比,指定为范围[0,1)中的标量。增加此值可减少异常值和噪声的影响。
数据类型:单|双
单
双
MaxIterations
20.
CPD停止前的最大迭代次数,指定为正整数。
MaxIterations而且宽容都是CPD算法的停止条件。当满足任意一个停止条件时,算法停止。
宽容
1 e-5
连续CPD迭代之间的公差,指定为标量。当连续迭代之间测量的对数似然函数值的绝对百分比变化达到或低于指定的容差值时,算法停止。减少这个值可以增加更好的对齐的可能性。
InteractionSigma
2.0
点之间的相互作用,指定为正标量,表示高斯滤波器的标准偏差。典型值在[1.5,3]的范围内。增加这个值可以增加点云中点之间的交互。因此,你可以观察到点云中的相干运动,每个点都经历相同的位移。或者,减少这个值可以减少点云中点之间的交互。可以观察到点的局域位移,输出位移场出现局域变形。
要使用这个名称-值参数,变换必须“非刚性的”.
SmoothingWeight
3.0
运动平滑权值,指定为正标量。典型值在[0.1,10]的范围内。增加这个值可以在输出位移场中产生更连贯的运动。
详细的
假
真正的
显示进度信息,指定为数字或逻辑0(假)或1(真正的).如果需要显示进度信息,请设置详细的来真正的.
0
1
rigidtform3d
affinetform3d
转换,返回为rigidtform3d对象,一个affinetform3d对象,或者位移场。tform是一个记录移动点云的三维变换,移动对定点云,固定.的值决定输出类型变换论点。
位置
转换后的点云,返回为pointCloud对象。变换后的点云与定点云对齐,固定.
均方根误差,返回为正实数。rmse为对齐点云之间的欧氏距离。
数据类型:双
这两个MaxIterations而且宽容用作停止标准。当满足任意一个停止条件时,即迭代次数达到时,算法停止MaxIterations或者说对数似然函数变化的绝对百分比小于等于宽容.
[1]米罗连科,A.和X.歌。点集配准:相干点漂移IEEE模式分析与机器智能汇刊(TPAMI)“第32卷,第12期,2010年12月,第2262-2275页。
名称-值参数变换必须是编译时常量。
全部展开
从R2022b开始,大多数计算机视觉工具箱™函数使用预乘法约定创建和执行几何变换。因此,对于刚性和仿射变换类型pcregistercpd函数现在返回tform作为一个rigidtform3d或affinetform3d对象,它们使用前置乘法约定。之前,函数返回tform作为一个rigid3d或affine3d对象,该对象使用后乘约定。有关更多信息,请参见将几何变换迁移到预乘法约定.
pcregistercpd
rigid3d
affine3d
pcregistercorr
pcregistericp
pcregisterndt
pctransform
pcshow
pcshowpair
pcfitplane
pcdenoise
pcmerge
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
Ha hecho clic en unenlace que对应一个este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB。Los navegadores web no admit comandos de MATLAB。
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您的地理位置,我们建议您选择:.
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。
联系当地办事处