两种点云密度的计算方式

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;
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐