帮助中心帮助中心
采用CPD算法对两个点云进行配准
自从R2018b
Tform = pcregistercpd(移动,固定)
[tform,movingReg] = pcregistercpd(___)
[___,rmse] = pcregistercpd(___)
[___] = pcregistercpd(___名称=值)
例子
tform= pcregistercpd (移动,固定)返回使用CPD算法将移动点云注册为固定点云的转换。相干点漂移(CPD)算法[1]万博1manbetx支持非刚性转换。
tform= pcregistercpd (移动,固定)
tform
移动
固定
请注意
考虑使用下采样点云pcdownsample在使用pcregistercpd之前,提高了配准的准确性和效率。
pcdownsample
[tform,movingReg] = pcregistercpd(___)还返回与固定点云对齐的转换后的点云。
[tform,movingReg] = pcregistercpd(___)
movingReg
[___,rmse] = pcregistercpd(___)还返回对齐点云之间的欧几里得距离的均方根误差。
rmse
[___] = pcregistercpd(___,名称=值)使用一个或多个名称-值参数以及以前语法中的参数组合指定选项。例如,MaxIterations = 20在迭代20次后停止CPD算法。
[___] = pcregistercpd(___,名称=值)
名称=值
MaxIterations = 20
全部折叠
将点云数据加载到工作区中。从工作空间中的点云数据中提取运动点云和静止点云。
handData = load(“hand3d.mat”);moving = handData.moving;fixed = handData.fixed;
为了提高CPD配准算法的效率和精度,对运动点云和静止点云进行了降采样。
movingdownsamples = pcdownsample(移动,“gridAverage”, 0.03);fixeddownsamples = 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
移动点云,指定为apointCloud对象。
定点云,指定为apointCloud对象。
指定可选参数对为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是一个三维变换,它记录了移动的点云,移动到定点云,固定.类型的值决定输出类型变换论点。
位置
转换后的点云,返回为apointCloud对象。变换后的点云与不动点云对齐,固定.
均方根误差,作为正实数返回。rmse为对齐点云之间的欧氏距离。
数据类型:双
这两个MaxIterations而且宽容用作停止标准。当满足任意一个停止条件时,即迭代次数达到时,算法停止MaxIterations或者对数似然函数的绝对变化百分比小于或等于宽容.
[1]米罗年科,A.和X.宋。点集配准:相干点漂移IEEE模式分析与机器智能汇刊(TPAMI)2010年12月,第32卷第12期,第2262-2275页。
名称-值参数变换必须是编译时常数。
全部展开
从R2022b开始,大多数计算机视觉工具箱™函数使用预乘法约定创建和执行几何转换。因此,对于刚性和仿射变换类型,有pcregistercpd函数现在返回tform作为一个rigidtform3d或affinetform3d对象,它们使用前置乘法约定。之前,函数返回tform作为一个rigid3d或affine3d对象,它们使用后乘约定。有关更多信息,请参见将几何变换迁移到前置乘法约定.
pcregistercpd
rigid3d
affine3d
pcregistercorr
pcregistericp
pcregisterndt
pctransform
pcshow
pcshowpair
pcfitplane
pcdenoise
pcmerge
您有这个示例的修改版本。要使用编辑打开此示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您所在的位置,我们建议您选择:.
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
联系当地办事处