• admin
  • 584
  • 2025-08-24 05:39:53

两种点云密度的计算方式

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;