【问题标题】:Generate point cloud from struct type data in matlab从matlab中的结构类型数据生成点云
【发布时间】:2018-12-18 01:59:39
【问题描述】:

我在 matlab 中有一个结构文件。我想将结构中的表中的 x,y,z 可视化为云点。怎么可能?

【问题讨论】:

  • 你尝试过什么,你现有的代码是什么?
  • 好吧,我已经用 python 阅读了它,并生成了一个带有 x、y、z 和强度的 csv 文件。但是我在 github 上看到的所有现有示例都使用 pcd、bin 或 ply 格式。所以我很困惑如何在python本身中使用csv,或者是否可以在matlab中使用struct文件。

标签: python matlab point-clouds


【解决方案1】:

Matlab's documentation 提供您开始解决此问题所需的所有信息!

这里只是让您开始使用 Matlab 的visualizing point clouds 的链接。

请注意,Matlab 倾向于希望您使用computer vision toolbox 进行点云处理。

这是一个快速示例 (original link),加载茶壶的点云文件。

查看旋转的 3-D 点云

加载点云。

ptCloud = pcread('teapot.ply');

定义一个旋转矩阵和 3-D 变换。

x = pi/180; 
R = [ cos(x) sin(x) 0 0
     -sin(x) cos(x) 0 0
      0         0   1 0
      0         0   0 1];

tform = affine3d(R);

计算 x-y 限制以确保旋转的茶壶不被剪裁。

lower = min([ptCloud.XLimits ptCloud.YLimits]);
upper = max([ptCloud.XLimits ptCloud.YLimits]);

xlimits = [lower upper];
ylimits = [lower upper];
zlimits = ptCloud.ZLimits;

创建播放器并自定义播放器轴标签。

player = pcplayer(xlimits,ylimits,zlimits);

xlabel(player.Axes,'X (m)');
ylabel(player.Axes,'Y (m)');
zlabel(player.Axes,'Z (m)');

围绕 z 轴旋转茶壶。

for i = 1:360      
    ptCloud = pctransform(ptCloud,tform);     
    view(player,ptCloud);     
end

【讨论】:

    【解决方案2】:

    如果您想要gridPoints.XgridPoints.YgridPoints.Z 格式为 (x, y) 为 points3D(x, y, [1 2 3]),只需这样做:

    cacheAxes = char(fieldnames(gridPoints));
    points3D = double.empty();
    for i = 1:3
        points3D(:, :, i) = gridPoints.(cacheAxes(i));
    end
    

    【讨论】:

      【解决方案3】:

      您可以使用pcshow() 命令。 使用您想要的 x,y,z 值作为输入,例如

      pcshow(x,y,z)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-21
        • 1970-01-01
        • 2010-09-12
        • 2017-10-04
        • 2013-12-02
        • 1970-01-01
        • 2016-03-15
        相关资源
        最近更新 更多