我有一个XYZRGB
格式化的点云数据。文件大小很大,它包含数十万个点。如何降低积分密度?假设每10个邻居,我希望所有其他点(XYZ和RGB)的单点平均值。欢迎使用Java或Matlab中的任何代码。以下是您可以使用的示例.ply点云文件:https://drive.google.com/open?id=0B667VfPLdu3_RVpKV1liZ0ktRVU
我在Matlab中尝试了一些插值,如下所示。但这不是我想要的。我需要降低密度。
% Load Point Cloud:
Point_Cloud = importdata(‘Point_Cloud_1.txt')
x = Point_Cloud(1,:)';
y = Point_Cloud(2,:)';
z = Point_Cloud(3,:)';
% Interpolate inspection points:
Density = 300;
[X,Y] = meshgrid(linspace(min(x), max(x), Density), linspace(min(y), max(y), Density));
F = scatteredInterpolant(x, y, z, 'natural','linear');
Z = F(X,Y);
Int_PC = [reshape(X,Density^2,1) reshape(Y,Density^2,1) reshape(Z,Density^2,1)];
Int_PC(any(isnan(Int_PC{i}),2),:) = [];
% Plot results:
scatter3(x, y, z, 20, 'r', 'fill'); % Original data
hold on;
scatter3(Int_PC(:,1), Int_PC(:,2), Int_PC(:,3), 20, 'r', 'fill'); % Interpolated data
答案 0 :(得分:0)
VoxelGrid过滤器将实现您的目标。这提供了一些解释和示例代码: http://pointclouds.org/documentation/tutorials/voxel_grid.php