MATLAB点云处理:点云赋色 | 显示自定义颜色的点云

Posted 借我十斤肉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB点云处理:点云赋色 | 显示自定义颜色的点云相关的知识,希望对你有一定的参考价值。

1 区别

点云赋色改变的是点的Color属性,是质的改变。

显示自定义颜色的点云没有改变点云的Color属性,仅仅是表现形式。

2 点云赋色

直接上代码

clc;
clear;
ptCloud = pcread('treeXYZRGB.pcd');
figure;
pcshow(ptCloud);                    % 显示原始点云
title('原始点云');
hold on;
ptCloud                           % 打印原始点云ptCloud详情

xyzpoints = ptCloud.Location;       % 将点云的位置信息赋给xyzpoints
ptCloudXYZ = pointCloud(xyzpoints);
figure;
pcshow(ptCloudXYZ);                 %显示只有位置信息的点云,MATLAB会按高程进行渲染
title('只有位置信息的点云');
hold on;
ptCloudXYZ                           % 打印ptCloudXYZ详情

% 点云赋色
cmatrix = ones(size(ptCloudXYZ.Location)).*[1 0 1];
ptCloudXYZRGB = pointCloud(xyzpoints,'Color',cmatrix);

figure;
pcshow(ptCloudXYZRGB); %显示赋色后的点云
title('赋色后的点云');
hold off;
ptCloudXYZRGB                          % 打印ptCloudXYZRGB详情

显示结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意: 当点云没有颜色信息时,pcshow()函数会对点云按高程进行渲染显示,但并不会为点云赋上颜色信息,Color为空[],仅限于表现形式。可以从下面的输出结果中验证。

打印输出结果:


ptCloud = 

  pointCloud - 属性:

     Location: [5746×3 single]
        Color: [5746×3 uint8]
       Normal: []
    Intensity: [5746×1 single]
        Count: 5746
      XLimits: [64.7470 67.8900]
      YLimits: [-54.1659 -50.9061]
      ZLimits: [-20.1166 -13.2595]


ptCloudXYZ = 

  pointCloud - 属性:

     Location: [5746×3 single]
        Color: []
       Normal: []
    Intensity: []
        Count: 5746
      XLimits: [64.7470 67.8900]
      YLimits: [-54.1659 -50.9061]
      ZLimits: [-20.1166 -13.2595]


ptCloudXYZRGB = 

  pointCloud - 属性:

     Location: [5746×3 single]
        Color: [5746×3 uint8]
       Normal: []
    Intensity: []
        Count: 5746
      XLimits: [64.7470 67.8900]
      YLimits: [-54.1659 -50.9061]
      ZLimits: [-20.1166 -13.2595]

3 显示自定义颜色的点云

这个更简单

clc;
clear;
ptCloud = pcread('treeXYZ.pcd');    % 从输入点坐标创建点云对象
figure;
pcshow(ptCloud);                    % 显示原始点云
title('原始点云');
hold on;
ptCloud                           % 打印原始点云详情

figure;
pcshow(ptCloud.Location,[1,0,1]); % 显示自定义颜色的点云
title('显示自定义颜色的点云');
hold off;
ptCloud                           % 再次打印ptCloud详情

显示结果:
在这里插入图片描述
在这里插入图片描述

尽管在外观上,与点云赋色的效果一致,但本质上颜色字段依然为空[],可以从下面的输出结果中验证.

打印输出结果:


ptCloud = 

  pointCloud - 属性:

     Location: [5746×3 single]
        Color: []
       Normal: []
    Intensity: []
        Count: 5746
      XLimits: [64.7470 67.8900]
      YLimits: [-54.1659 -50.9061]
      ZLimits: [-20.1166 -13.2595]


ptCloud = 

  pointCloud - 属性:

     Location: [5746×3 single]
        Color: []
       Normal: []
    Intensity: []
        Count: 5746
      XLimits: [64.7470 67.8900]
      YLimits: [-54.1659 -50.9061]
      ZLimits: [-20.1166 -13.2595]

以上是关于MATLAB点云处理:点云赋色 | 显示自定义颜色的点云的主要内容,如果未能解决你的问题,请参考以下文章

matlab那个版本可以进行点云

PCL:Visualizer 可视化❤️自定义颜色显示

PCL进阶:点云渲染渐变赋色(Blue>Green>Yellow>Red)

急!!在MATLAB下怎样处理点云

MATLAB点云处理(二十六):将无序点云转换为有序点云(pcorganize),删除无效点(removeInvalidPoints)

MATLAB点云处理(二十六):将无序点云转换为有序点云(pcorganize),删除无效点(removeInvalidPoints)