当前位置: 首页 > news >正文

点云密度计算

 

 1 def _compute_density_stats(values: np.ndarray) -> dict:
 2     """Compute summary statistics for a density array."""
 3     return {
 4         "mean": float(np.mean(values)),
 5         "std": float(np.std(values)),
 6         "min": float(np.min(values)),
 7         "max": float(np.max(values)),
 8         "median": float(np.median(values)),
 9         "percentile_5": float(np.percentile(values, 5)),
10         "percentile_25": float(np.percentile(values, 25)),
11         "percentile_75": float(np.percentile(values, 75)),
12         "percentile_95": float(np.percentile(values, 95)),
13     }
14 
15 
16 def _density_knn(pcd: o3d.geometry.PointCloud, k: int) -> np.ndarray:
17     """KNN-based density: k / volume_of_sphere(r_k)."""
18     kdtree = o3d.geometry.KDTreeFlann(pcd)
19     points = np.asarray(pcd.points)
20     n = len(points)
21     densities = np.zeros(n, dtype=np.float64)
22 
23     for i in range(n):
24         _, idx, dists_sq = kdtree.search_knn_vector_3d(pcd.points[i], k + 1)
25         neighbor_dists = np.sqrt(np.array(dists_sq[1:], dtype=np.float64))
26         r_k = neighbor_dists[-1]
27         if r_k > 1e-10:
28             volume = (4.0 / 3.0) * np.pi * (r_k**3)
29             densities[i] = k / volume
30 
31     return densities
32 
33 
34 def _density_radius(pcd: o3d.geometry.PointCloud, radius: float) -> np.ndarray:
35     """Radius-based density: count of neighbors within fixed radius."""
36     kdtree = o3d.geometry.KDTreeFlann(pcd)
37     n = len(pcd.points)
38     densities = np.zeros(n, dtype=np.float64)
39 
40     for i in range(n):
41         count, _, _ = kdtree.search_radius_vector_3d(pcd.points[i], radius)
42         densities[i] = count - 1
43 
44     return densities
45 
46 
47 def _density_voxel(pcd: o3d.geometry.PointCloud, voxel_size: float) -> np.ndarray:
48     """Voxel-based density: points in enclosing voxel / voxel_volume."""
49     points = np.asarray(pcd.points)
50     voxel_indices = np.floor(points / voxel_size).astype(np.int64)
51 
52     voxel_keys = (
53         voxel_indices[:, 0].astype(np.int64) * 73856093
54         ^ voxel_indices[:, 1].astype(np.int64) * 19349663
55         ^ voxel_indices[:, 2].astype(np.int64) * 83492791
56     )
57 
58     counts = Counter(voxel_keys.tolist())
59     voxel_volume = voxel_size**3
60     densities = np.array([counts[k] / voxel_volume for k in voxel_keys], dtype=np.float64)
61     return densities

 

http://www.jsqmd.com/news/603309/

相关文章:

  • 在 .NET 中使用 Moonshot Kimi + AgentFramework:从 SDK 到 Agent 的完整实践
  • OpenClaw性能调优:千问3.5-9B批量任务并发控制策略
  • 2026年最新资源!十大电商主图与跨境电商图片素材网站推荐 - 品牌2025
  • Music Tag Web:一站式智能音乐标签管理解决方案
  • IGBT(绝缘栅双极型晶体管)的工作原理与典型应用场景解析
  • 5个实战技巧深度掌握KeymouseGo跨平台自动化工具
  • 【无锡家长血泪忠告】毕业照只认夏末!无锡第一 - 新闻快传
  • 2026最新十大高清免费版权图片素材网站推荐,支持免费下载与商用 - 品牌2025
  • 告别重复造轮子:用快马生成高效配对模块提升开发效率
  • 实战演练:基于快马生成openclaw启动的视觉分拣系统完整项目
  • 如何在 Laravel Excel 导入时检测并阻止重复列值
  • 2026夏季男士清凉之战:从透气,导湿,速干角度,盘点五款夏季通勤裤品牌 - 行业深度观察
  • 2026年抖音推广选购指南:三招教你省钱选对沈阳口碑服务 - 精选优质企业推荐榜
  • 2026年必看!十大快消品图片素材下载网站及样机素材网站推荐,轻松搞定产品设计 - 品牌2025
  • 免费通票开抢!HOW 2026 出品人优惠码发放中
  • 快速上手BERT文本分割:无需代码,Web界面一键处理访谈/会议记录
  • Unity游戏多语言解决方案:XUnity.AutoTranslator实战指南
  • 终极指南:DxWrapper让经典游戏在Windows 10/11上完美运行
  • AI训练素材与数据集供应商怎么选?卓特视觉合规AI数据解决方案 - 品牌2025
  • LFM2.5-1.2B-Thinking-GGUF在不同硬件平台的性能对比:从CPU到边缘计算设备
  • 提升picoclaw项目调试效率:用快马AI自动生成参数调试与可视化工具
  • 从诊断请求到刷写:一条CAPL脚本串联CANoe诊断全流程(含DoIP/vFlash)
  • 2026年全球NMN主流品牌深度榜:NMN纯度、活性、吸收全解析(科学实证版) - 速递信息
  • 2026物联网照明排行榜:智能照明技术发展与应用探索 - 品牌排行榜
  • 掌握AI Agent核心技术:从理论到实践,小白程序员也能轻松入门(收藏版)
  • 2026年抖音推广挑选攻略 - 精选优质企业推荐榜
  • 深入解析MTK平台Android 8.1系统级Root权限实现方案
  • 2026年抖音推广挑选攻略:3步教你选对沈阳靠谱服务商 - 精选优质企业推荐榜
  • OpenClaw技能扩展实战:用Qwen3-32B镜像实现Markdown自动排版
  • 2026物联网照明公司哪家好?行业技术与服务深度解析 - 品牌排行榜