pctransform
将三维点云
描述
适用于指定的三维仿射变换,ptCloudOut
= pctransform (ptCloudIn
,tform
)tform
点云,ptCloudIn
。转换可以是刚性的,相似,或者仿射变换。
应用位移场ptCloudOut
= pctransform (ptCloudIn
,D
)D
点云。点云转换使用位移场定义翻译对每个点的点云。
例子
使用刚性变换旋转三维点云
读点云。
ptCloud = pcread (“teapot.ply”);
绘制点云。
图pcshow (ptCloud)包含(“X”)ylabel (“Y”)zlabel (“Z”)
创建一个转换对象沿z轴旋转45度。
rotationAngles = [0 0 45];翻译= (0 0 0);tform = rigidtform3d (rotationAngles、翻译);
将点云。
ptCloudOut = pctransform (ptCloud tform);
转换后的点云。
图pcshow (ptCloudOut)包含(“X”)ylabel (“Y”)zlabel (“Z”)
三维点云的刚性和非刚性的转换
这个例子适用于刚性变换(旋转)和非刚性的转换(剪切)三维点云。
读点云到工作区中。
ptCloud = pcread (“teapot.ply”);
绘制原始三维点云。
图1 =图;axes1 =轴(父=图1);pcshow (ptCloud、家长= axes1 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(三维点云的字形大小= 14)
旋转的三维点云
创建一个刚性变换对象,定义了一个45度旋转沿z设在。
rotationAngles = [0 0 45];翻译= (0 0 0);tform = rigidtform3d (rotationAngles、翻译);
将点云。
ptCloudOut1 = pctransform (ptCloud tform);
绘制旋转点云。
figure2 =图;axes2 =轴(父= figure2);pcshow (ptCloudOut1、家长= axes2 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({三维点云的旋转},字形大小= 14)
三维点云的剪切
创建一个仿射变换对象,定义剪切的x设在。
0.75 - 0.75 A = [1 0;…0 1 0 0;…0 0 1 0;…0 0 0 1);tform = affinetform3d(一个);
将点云。
ptCloudOut2 = pctransform (ptCloud tform);
转换后的点云。
图3 =图;axes3 =轴(父=图3);pcshow (ptCloudOut2、家长= axes3 AxesVisibility =“上”);包含(“X”);ylabel (“Y”);zlabel (“Z”);标题({三维点云的剪切},字形大小= 14)
点云转换使用位移场
读点云到工作区中。
ptCloud = pcread (“teapot.ply”);
创建一个位移场D
同样大小的点云。
D = 0(大小(ptCloud.Location));
设置位移场值x设在第一一半的点到7。
pthalf = ptCloud.Count / 2;D (1: pthalf, 1) = 7;
提取指数的内点(ROI)使用pointCloud
方法findNeighborsInRadius
。沿着设置位移场值x- - - - - -,y- - - - - -,z设在ROI到4点,4,分别和2。
指数= findNeighborsInRadius (ptCloud] [0 0 3.1, 1.5);D(指标,1:2)= 4;D(下标3)= 2;
使用位移场变换的点云。
ptCloudOut = pctransform (ptCloud D);
显示原始和点云转换。
图pcshow (ptCloud)包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(原始三维点云的)
图pcshow (ptCloudOut)包含(“X”);ylabel (“Y”);zlabel (“Z”);标题(三维点云转换使用位移场的)
输入参数
ptCloudIn
- - - - - -点云
pointCloud
对象
点云,指定为一个pointCloud
对象。
tform
- - - - - -三维几何变换
rigidtform3d
对象|simtform3d
对象|affinetform3d
对象
三维几何变换,指定为一个rigidtform3d
,simtform3d
,或affinetform3d
对象。看到指定变换矩阵有关如何设置一个仿射3 dtform
输入。
D
- - - - - -位移场
米3矩阵|米——- - - - - -N3组
位移场,指定为米3或米——- - - - - -N3数组。位移场是一组位移向量指定大小和方向的翻译为每个点的点云。位移场的大小必须一样的大小位置
财产的pointCloud
对象。
数据类型:单
|双
输出参数
ptCloudOut
——转变点云
pointCloud
对象
将点云,作为一个返回pointCloud
对象。转换适用于点的坐标和法向量。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
GPU的代码生成
生成NVIDIA的CUDA®代码®GPU使用GPU编码器™。
版本历史
介绍了R2015aR2022b:金宝app支持新的几何变换对象
从R2022b,大多数计算机视觉工具箱™函数创建和使用自左乘公约执行几何转换。因此,您现在可以指定tform
作为一个rigidtform3d
,simtform3d
,或affinetform3d
对象,该对象使用自左乘公约。
尽管你仍然可以指定tform
作为一个rigid3d
对象或一个affine3d
对象,这些对象不推荐,因为他们使用自右乘公约。你可以简化几何变换工作流通过切换到新的自左乘几何变换对象。有关更多信息,请参见几何转换迁移到自左乘公约。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。