Open3D 计算点云的占地面积

目录

一、概述

1.1实现步骤

1.2应用

二、代码实现

1.1关键函数

1.2完整代码

三、实现效果

3.1原始点云

3.2数据显示


前期试读,后续会将博客加入下列链接的专栏,欢迎订阅

Open3D与点云深度学习的应用_白葵新的博客-CSDN博客

一、概述

        该博客在Open3D中实现点云占地面积的计算。该方法在地形分析、建筑物面积估算、环境监测、农业应用和灾害评估等领域具有广泛的应用。通过提取地面点云、投影到二维平面、计算凸包和凸包面积,可以准确计算点云的占地面积。

1.1实现步骤

  1. 取点云数据:加载点云数据。
  2. 提取地面点云:通过高度阈值提取地面附近的点云。
  3. 投影到2D平面:将三维点云数据投影到二维平面(通常是xy平面)。
  4. 计算二维凸包:使用凸包算法计算投影后的点云的二维边界。
  5. 计算凸包面积:计算二维凸包的面积,得到点云的占地面积。

1.2应用

1.地形分析:
        - 计算地形点云的占地面积,用于地形图绘制和地理信息系统(GIS)分析。
2.建筑物面积估算:
        - 计算建筑物点云的占地面积,用于建筑物面积估算和城市规划。
3.环境监测:
        - 计算植被点云的占地面积,用于生态系统监测和环境保护。
4.农业应用:
        - 计算农田点云的占地面积,用于农业资源管理和产量预测。
5.灾害评估:
        - 计算受灾区域点云的占地面积,用于灾害评估和救援工作。

二、代码实现

1.1关键函数

        使用SciPy库的 ConvexHull 函数计算投影后的点云的二维凸包。凸包是包含所有点的最小凸多边形。

  1. 使用自定义函数 extract_points_within_height_range 提取高度在阈值以下的地面点云。
  2. 将提取的地面点云投影到二维平面(xy平面),即只保留x和y坐标。
  3. 使用SciPy的 ConvexHull 函数计算投影后的点云的二维凸包。
  4. 根据凸包的顶点计算面积,得到点云的占地面积。
def compute_ground_area(pcd, height_threshold=0.5):"""计算点云的占地面积。参数:pcd (open3d.geometry.PointCloud): 输入点云。height_threshold (float): 高度阈值,用于提取地面点云。返回:float: 点云的占地面积。"""# 提取指定高度范围内的点云ground_pcd = extract_points_within_height_range(pcd, -np.inf, height_threshold)# 提取点云数据并投影到二维平面(xy平面)ground_points = np.asarray(ground_pcd.points)ground_points_2d = ground_points[:, :2]# 计算二维凸包hull = ConvexHull(ground_points_2d)# 计算凸包面积area = hull.volumereturn area

1.2完整代码

import open3d as o3d
import numpy as np
from scipy.spatial import ConvexHulldef compute_ground_area(pcd, height_threshold=0.5):"""计算点云的占地面积。参数:pcd (open3d.geometry.PointCloud): 输入点云。height_threshold (float): 高度阈值,用于提取地面点云。返回:float: 点云的占地面积。"""# 提取点云数据points = np.asarray(pcd.points)# 提取地面点云ground_points = points[points[:, 2] <= height_threshold]# 投影到二维平面(xy平面)ground_points_2d = ground_points[:, :2]# 计算二维凸包hull = ConvexHull(ground_points_2d)# 计算凸包面积area = hull.volumereturn area# 读取点云数据
pcd = o3d.io.read_point_cloud("bunny.pcd")# 计算占地面积
ground_area = compute_ground_area(pcd)
print(f"点云的占地面积: {ground_area:.2f} 平方单位")

三、实现效果

3.1原始点云

3.2数据显示

点云的占地面积: 0.02 平方单位

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3266139.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

将YOLOv8模型从PyTorch的.pt格式转换为TensorRT的.engine格式

TensorRT是由NVIDIA开发的一款高级软件开发套件(SDK)&#xff0c;专为高速深度学习推理而设计。它非常适合目标检测等实时应用。该工具包可针对NVIDIA GPU优化深度学习模型&#xff0c;从而实现更快、更高效的运行。TensorRT模型经过TensorRT优化&#xff0c;包括层融合(layer …

SpringCloud--负载均衡

目录 前言 一.负载均衡的引入 1.1问题引入 1.2代码修改实现 二.负载均衡介绍 2.1实现负载均衡 2.2负载均衡策略 2.3LoadBalancer 原理 学习专栏&#xff1a;http://t.csdnimg.cn/tntwg 前言 在前面的Eureka当中&#xff0c;我们虽然实现了从注册中心中获取url&#xf…

使用 XRDP 远程linux主机

一、简介 XRDP是一个开源的远程桌面协议&#xff08;Remote Desktop Protocol,RDP&#xff09;服务器&#xff0c;采用的是标准的RDP。 官网地址&#xff1a;https://www.xrdp.org/ github地址&#xff1a; https://github.com/neutrinolabs/xrdp/releases XRDP也是C/S架构&…

unity美术资源优化(资源冗余,主界面图集过多)

图片资源冗余&#xff1a; UPR unity的性能优化工具检查资源 1.检查纹理读/写标记 开启纹理资源的读/写标志会导致双倍的内存占用 检查Inspector -> Advanced -> Read/Write Enabled选项 2.检查纹理资源alpha通道 如果纹理的alpha通道全部为0&#xff0c;或者全部为2…

Ubuntu20.04 设置静态ip

Ubuntu 从 17.10 开始&#xff0c;已放弃在 /etc/network/interfaces 里固定 IP 的配置&#xff0c;interfaces 文件不复存在&#xff0c;即使配置也不会生效&#xff0c;而是改成 netplan 方式 &#xff0c;配置写在 /etc/netplan/01-netcfg.yaml &#xff0c;50-cloud-init.y…

【Golang 面试基础题】每日 5 题(八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

企业利用AI智能名片S2B2C商城小程序参与社区团购的风险与机遇分析

摘要 在新零售浪潮的推动下&#xff0c;社区团购以其独特的商业模式迅速崛起&#xff0c;成为连接消费者与供应商的重要桥梁。企业纷纷探索如何有效利用这一新兴渠道&#xff0c;以扩大市场份额、提升品牌影响力。AI智能名片S2B2C商城小程序的引入&#xff0c;为企业参与社区团…

基于java多媒体网络教学平台设计与开发

博主介绍&#xff1a;专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…

QT5:嵌入式linux开发板调用键盘

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录​​​​​​​ 前言 一、Buildroot构建QT环境 1.1 构建环境 1.2 检查qtvirtualkeyboard库 二、测试过程 2.1 直接调用qtvirtualkeyboard 1.测试代码 2.测试效果 2.2 运行…

Golang | Leetcode Golang题解之第274题H指数

题目&#xff1a; 题解&#xff1a; func hIndex(citations []int) int {// 答案最多只能到数组长度left,right:0,len(citations)var mid intfor left<right{// 1 防止死循环mid(leftright1)>>1cnt:0for _,v:range citations{if v>mid{cnt}}if cnt>mid{// 要找…

.h264 .h265 压缩率的直观感受

1.资源文件 https://download.csdn.net/download/twicave/89579327 上面是.264 .265和原始的YUV420文件&#xff0c;各自的大小。 2.转换工具&#xff1a; 2.1 .h264 .h265互转 可以使用ffmpeg工具&#xff1a;Builds - CODEX FFMPEG gyan.dev 命令行参数&#xff1a; …

渗透测试——prime1靶场实战演练{常用工具}端口转发

文章目录 概要信息搜集 概要 靶机地址&#xff1a;https://www.vulnhub.com/entry/prime-1,358 信息搜集 nmap 扫网段存活ip及端口 找到除了网关外的ip&#xff0c;开放了80端口&#xff0c;登上去看看 是一个网站&#xff0c;直接上科技扫一扫目录 python dirsearch.py -u …

{Spring Boot 原理篇} Spring Boot自动装配原理

SpringBootApplication 1&#xff0c;Spring Boot 应用启动&#xff0c;SpringBootApplication标注的类就是启动类&#xff0c;它去实现配置类中的Bean的自动装配 SpringBootApplication public class SpringbootRedis01Application {public static void main(String[] args)…

GRE VPN和MGRE VPN综合练习

GRE VPN和MGRE VPN综合练习 实验拓扑 实验要求 1、R5为ISP&#xff0c;只能进行IP地址配置&#xff0c;其所有地址均配为公有IP地址; 2、R1和R5间使用PPP的PAP认证&#xff0c;R5为主认证方; R2与R5之间使用ppp的CHAP认证&#xff0c;R5为主认证方; R3与R5之间使用HDLC封装;…

【JavaScript】深入理解 `let`、`var` 和 `const`

文章目录 一、var 的声明与特点二、let 的声明与特点三、const 的声明与特点四、let、var 和 const 的对比五、实战示例六、最佳实践 在 JavaScript 中&#xff0c;变量声明是编程的基础&#xff0c;而 let、var 和 const 是三种常用的变量声明方式。本文将详细介绍这三种变量声…

做一个能和你互动玩耍的智能机器人之一

2024年被很多人称为AI元年&#xff0c;其实AI元年的叫法由来以久&#xff0c;近年来每一次AI技术的进步&#xff0c;都有很多圈内人大呼AI元年&#xff0c;但不仅一直风声不大&#xff0c;雨点也偏小&#xff0c;都是小范围交流。 得益于软硬件的进步&#xff0c;AI今年开始侵…

秋招突击——7/23——百度提前批面试准备和正式面试

文章目录 引言一面准备面试预演一1、讲一下hashcode()和equals()关系2、equals()和有什么区别3、讲一下重载和重写的区别4、讲一下深拷贝、浅拷贝的区别5、讲一下Java异常的基类&#xff0c;运行时异常举几个例子&#xff0c;什么情况下会出现&#xff1f;6、讲一下Java中线程的…

pytorch前馈神经网络--手写数字识别

前言 具体内容就是&#xff1a; 输入一个图像&#xff0c;经过神经网络后&#xff0c;识别为一个数字。从而实现图像的分类。 资源&#xff1a; https://download.csdn.net/download/fengzhongye51460/89578965 思路&#xff1a; 确定输入的图像&#xff1a;会单通道灰度的…

基于dcm4chee搭建的PACS系统讲解(三)服务端使用Rest API获取study等数据

文章目录 DICOMWeb Support模块主要数据结构ER查询信息基本信息metadata信息统计信息 实践查询API及参数解析API返回的json数组定义VRObjectNodeObjectMapper解析显示指定tag并解析 后记 前期预研的PACS系统&#xff0c;近期要在项目中上线了。因为PACS系统采用无权限认证&…

【初阶数据结构】8.二叉树(3)

文章目录 4.实现链式结构二叉树4.1 前中后序遍历4.1.1 遍历规则4.1.2 代码实现 4.2 结点个数以及高度等4.3 层序遍历4.4 判断是否为完全二叉树4.5层序遍历和判断是否为完全二叉树完整代码 4.实现链式结构二叉树 用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑关系…