Extracting xyzpoints from Point Cloud
古いコメントを表示
I want to extract xyz points data from Point Cloud model.
pointCloud with properties:
Location: [14816040×3 single]
Count: 14816040
XLimits: [-122.5566 183.8412]
YLimits: [-214.3051 106.7991]
ZLimits: [-4.3266 6.3947]
Color: [14816040×3 uint8]
Normal: [14816040×3 single]
Intensity: []
I am using two provided ways but not getting any results.
1st Code
ptCloud = pcread('M.ply');
ptCloud;
xyzPoints = ptCloud.Location;
x = xyzPoints(:,:,1);
y = xyzPoints(:,:,2);
z = xyzPoints(:,:,3);
points3D = [x(:)'; y(:)', z(:)'];
ERROR
Index in position 3 exceeds array bounds. Index must not exceed 1.
Error in xyzextract (line 8)
y = xyzPoints(:,:,2);
2nd function is
ptCloud;
pts = rosReadXYZ(ptCloud)
ERROR
Error using rosReadXYZ
Expected input to be one of these types:
struct
Instead its type was pointCloud.
Error in rosReadXYZ (line 46)
validateattributes(msg,{'struct'},{'scalar'},'rosReadXYZ');
Error in xyzextract (line 13)
pts = rosReadXYZ(ptCloud,"PreserveStructureOnRead",true);
Kindly advise, I just want to extract xyz points from Point Cloud.
採用された回答
その他の回答 (2 件)
Walter Roberson
2022 年 4 月 23 日
編集済み: Walter Roberson
2022 年 4 月 24 日
0 投票
Location: [14816040×3 single]
That tells you that the position information is 14816040 x 3 . It is not a 3D array.
Pointclouds store scattered information, not grids of information.
In some cases it may make sense to reshape() the scattered coordinates into a grid after it is extracted.
The information you get from the Location property is already the points3D array that you are trying to construct.
(Opps, Sean is right, you would need to take the transpose like he shows.)
Naveed
2024 年 4 月 20 日
0 投票
Hi there!
How to access the features e.g (xyz, rgb values) in point cloud?
please help me out with this!
4 件のコメント
Walter Roberson
2024 年 4 月 20 日
xyz = YOURPOINTCLOUD.Location;
rgb = YOURPOINTCLOUD.Color;
Naveed
2024 年 4 月 20 日
But when i plug the line for rgb so it can't extract the values of rgb and i got the xyz points.....
Walter Roberson
2024 年 4 月 20 日
Are you getting an error message? If so, what is the error?
Note that rgb can come out empty if there is no RGB information stored in the point cloud.
Naveed
2024 年 4 月 20 日
clc;
clear all;
close all;
ptcloud = pcread("C:\Users\PMLS\Desktop\FYP\tape-ply.ply");
points = ptcloud.Location;
colors = ptcloud.Color;
disp(['Number of points: ', num2str(ptcloud.Count)]);
player = pcplayer(ptcloud.XLimits, ptcloud.YLimits, ptcloud.ZLimits);
view(player, ptcloud);
the output is: Number of points: 84062 but having no rgb values.
>>
カテゴリ
ヘルプ センター および File Exchange で Point Cloud Processing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!