Разделенная область интереса (ROI) облака точек на непрерывные кубы и фоновая фильтрация - PullRequest
0 голосов
/ 06 августа 2020

Дорогие друзья, у меня есть результат лидара, состоящий из X, Y, Z в файле matlab, и для каждой ячейки / кадра я хочу разделить пространство области интереса (ROI) (X: от -150 м до 150 м; Y: -100 м до 100 м; Z: от -15 до 15 м) на непрерывные кубы (длина куба 0,1 м) и вычислите плотность точек в каждом кубе. Мне нужна подсказка, чтобы справиться с отдыхом, состоящий из 1 - вычислить плотность точек в каждом кубе. 2- фоновая фильтрация.

`clc
close all
fileDir = 'D:\Examps2';                 % the target data directory
outfile = 'D:\100Frames.las';
fid=fopen(outfile,'w');
d=dir(fullfile(fileDir,'*.csv'));         % dir() struct of *.csv files in directory
N=numel(d);                               % total number files found
for i = 1:N                                   % iterate over them...
XYZ=readmatrix(fullfile(fileDir,d(i).name),'NumHeaderLines',1);
data=XYZ(:,1:3);                      % select the three columns only         
fmt=[repmat('%f,',1,numel(data)-1) '%f\n'];
fprintf(fid,fmt,data);
[m,n]=size(data);
X=XYZ(1:m,1);
Y=XYZ(1:m,2);
Z=XYZ(1:m,3);
end
fid=fclose(fid);
figure
pc = pointCloud(cat(3,X,Y,Z));
pcshow(pc.Location,'r')
title('Clustered Point Cloud')
xlim([-100 100]); % meters
ylim([-100 100]);
zlim([-5 5]);
hold on
figure
minDistance = 0.1;
[labels,numClusters] = pcsegdist(ptCloud,minDistance);
%Plot the labeled results. The points are grouped into two clusters.
pcshow(ptCloud.Location,labels)
colormap(hsv(numClusters))
figure 
pcshow(ptCloud)
xlim([-100 100]); % meters
ylim([-100 100]);
zlim([-5 5]);
title('Unclustered Point Cloud')
% maxDistance = 0.3;`
...