Java 降低三维点云的密度

Java 降低三维点云的密度,java,matlab,point-cloud-library,point-clouds,meshlab,Java,Matlab,Point Cloud Library,Point Clouds,Meshlab,我有一个XYZRGB格式的点云数据。文件大小巨大,由数十万个点组成。如何降低点的密度?比如说,对于每10个相邻点,我希望得到所有其他点(XYZ和RGB)的单点平均值。欢迎使用Java或Matlab编写任何代码。以下是您可以使用的.ply点云文件示例: 我在Matlab中尝试了一些插值,如下所示。但这不是我想要的。我需要降低密度 % Load Point Cloud: Point_Cloud = importdata(‘Point_Cloud_1.txt') x = Poi

我有一个
XYZRGB
格式的点云数据。文件大小巨大,由数十万个点组成。如何降低点的密度?比如说,对于每10个相邻点,我希望得到所有其他点(XYZ和RGB)的单点平均值。欢迎使用Java或Matlab编写任何代码。以下是您可以使用的.ply点云文件示例:

我在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

体素栅格过滤器将完成您所寻找的内容。这提供了一些解释和示例代码:

@SardarUsama我添加了一个示例文件。@SardarUsama抱歉,我尝试添加了大多数相关的标记。很糟糕,我只限于5人。现在又回来了!它是否适用于我提供的示例文件?它是XYZRGB.ply格式的。加载点云后为“是”。