两种点云密度的计算方式
1.距离密度(常用)
即为每个离它最邻近点的距离的平均值。
clear all
clc
% 读取matlab自带的点云文件
ptCloud = pcread('teapot.ply');
% 读取点云xyz值
xyz = ptCloud.Location;
% 通过knnsearch即‘k'临近计算xyz集合里面每个点离xyz集合里面的最近点
% 由于第一个搜索的点是他本身,所以k临近个数选择了2
[idx,d] = knnsearch(xyz,xyz,'k',2);
% idx是最邻近点的索引项,用不到;d是每个点离它最邻近点的距离值
% 计算平均距离,即距离密度,单位:m
p = mean(d(:,2));
2.通过《GB/T 36100—2018 机载激光雷达点云数据质量评价指标及计算方法-规范》计算
clear all
clc
% 读取matlab自带的点云文件
ptCloud = pcread('teapot.ply');
% 读取点云xyz值
xyz = ptCloud.Location;
% 凸包计算茶壶的二维占地面积
% 凸包需要双精型,读取的xyz为单精
xyz = double(xyz);
% K返回边界索引,V返回面积
[K,V] = convhull(xyz(:,1),xyz(:,2));
% size和length都可查看点云的数量,这里以size为例
% n和m返回点云的行和列
[n,m] = size(xyz);
% n行就是点云的数量
% 由于无水域区域,所以点云的密度为总数量/面积
p = n/V;