2017-06-16 52 views
-1

我有一個XYZRGB格式的點雲數據。文件大小很大,它包含數十萬個點。我怎樣才能減少點的密度?對於每10個鄰居說,我想要所有其他點(包括XYZ和RGB)的單點平均值。 Java或Matlab中的任何代碼都是受歡迎的。這裏是一個你可以使用的示例.ply點雲文件:https://drive.google.com/open?id=0B667VfPLdu3_RVpKV1liZ0ktRVU降低3D點雲的密度

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

@SardarUsama我添加了一個示例文件。 –

+0

@SardarUsama對不起,我試着添加最相關的標籤。不好,我只限於5人。現在回來了! –

回答

0

VoxelGrid過濾器將完成您正在尋找的東西。這提供了一些解釋和示例代碼: http://pointclouds.org/documentation/tutorials/voxel_grid.php

+0

它與我提供的示例文件一起工作嗎?這是XYZRGB .ply格式。 –

+0

是的,一旦點雲被加載。 https://stackoverflow.com/questions/30764222/how-to-read-ply-file-using-pcl – brad