Уменьшите плотность трехмерных облаков точек

У меня есть данные облака точек в формате 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

person Tina J    schedule 16.06.2017    source источник
comment
@SardarUsama Я добавил образец файла.   -  person Tina J    schedule 16.06.2017
comment
@SardarUsama Извините, я пытался добавить наиболее связанные теги. Плохо, я ограничен до 5. Теперь он вернулся!   -  person Tina J    schedule 16.06.2017


Ответы (1)


Фильтр VoxelGrid выполнит то, что вы ищете. Это дает некоторые пояснения и пример кода: http://pointclouds.org/documentation/tutorials/voxel_grid.php

person brad    schedule 16.06.2017
comment
Работает ли это с моим предоставленным образцом файла? Это формат XYZRGB .ply. - person Tina J; 16.06.2017
comment
Да после загрузки облака точек. stackoverflow.com/questions/30764222 / - person brad; 16.06.2017