Open3D 计算点云的占地面积

news2024/9/24 13:15:10

目录

一、概述

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.volume

    return area

1.2完整代码

import open3d as o3d
import numpy as np
from scipy.spatial import ConvexHull

def 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.volume

    return 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://www.coloradmin.cn/o/1950114.html

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

相关文章

AI漫画定格新闻大事件,比电影还燃!吸粉超快!AI绘画变现新方法你还不知道吗?!

大家好&#xff0c;我是画画的小强 身处这个信息如潮水般涌来的时代&#xff0c;我们仿佛被连绵不绝的新闻浪潮所淹没。然而&#xff0c;真正能触动我们内心深处&#xff0c;让我们产生强烈共鸣的&#xff0c;往往是那些饱含情感、直击心灵的新闻画面。 在追求效率与速度的今…

草图也能秒变完整画稿?三星 Galaxy Z Fold6 、Flip6硬件升级

在科技的不断进步中&#xff0c;智能手机行业的竞争愈发激烈&#xff0c;各大厂商纷纷推出创新产品以吸引消费者。 最近&#xff0c;三星在 Galaxy Unpacked 发布会上就带来了 Galaxy Z Fold6 和 Flip6 两款手机新品&#xff0c;这两款设备不仅在硬件上有所突破&#xff0c;更…

SpringBoot中使用监听器

1.定义一个事件 /*** 定义事件* author hrui* date 2024/7/25 12:46*/ public class CustomEvent extends ApplicationEvent {private String message;public CustomEvent(Object source, String message) {super(source);this.message message;}public String getMessage() …

MES系统具体有哪些功能?如何更高效的利用MES系统

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;是现代制造业中非常重要的一个信息化管理系统&#xff0c;它在生产过程中起到了关键的作用。MES系统的具体功能可以归纳如下&#xff1a; 万界星空科技MES系统的具体功能 生产计划管理…

基于MediaPipe的手部特征点识别

基于MediaPipe的手部特征点识别 MediaPipe简介 MediaPipe Solutions 提供了一套库和工具&#xff0c;可以在安卓或者windows应用中快速应用人工智能 (AI) 和机器学习 (ML) 技术。 MediaPipe 手部地标任务可检测图片中手部的特征点。识别效果如下 环境配置 python -m pip ins…

【数据结构】手把手教你单链表(c语言)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 1.单链表的概念与结构 2.单链表的结构定义 3.单链表的实现 3.1 单链表的方法声明 3.2 单链表方法实现 3.2.1 打印链表 3.2.2 创建新…

一文详解 JuiceFS 读性能:预读、预取、缓存、FUSE 和对象存储

在高性能计算场景中&#xff0c;往往采用全闪存架构和内核态并行文件系统&#xff0c;以满足性能要求。随着数据规模的增加和分布式系统集群规模的增加&#xff0c;全闪存的高成本和内核客户端的运维复杂性成为主要挑战。 JuiceFS&#xff0c;是一款全用户态的云原生分布式文件…

[240726] Mistral AI 发布新一代旗舰模型 | Node.js 合并 TypeScript 文件执行提案

目录 Mistral AI 发布新一代旗舰模型&#xff1a;Mistral Large 2Node.js 合并 TypeScript 文件执行提案&#xff1a;--experimental-strip-types Mistral AI 发布新一代旗舰模型&#xff1a;Mistral Large 2 Mistral AI 宣布推出新一代旗舰模型 Mistral Large 2&#xff0c;该…

ubuntu20.04 安装vscode 并且配置环境

目录 1.下载 2.安装 3.装插件&#xff0c;配置环境 1.下载 打开浏览器&#xff0c;进入vscode主页 Visual Studio Code - Code Editing. Redefined 2.安装 双击安装包 安装 安装完成后&#xff0c;我们打开vscode 3.装插件&#xff0c;配置环境 打开后我们 ctrlj 打开终…

操作系统的底层管理

一、冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本和我们不常见的计算机&#xff0c;如服务器大多都遵循冯诺依曼体系结构。 根据冯诺依曼结构 &#xff0c;我们可以了解到计算机是由一个个硬件组成&#xff0c;共分为三部分&#xff1a;输入、内存/CPU和输出。 如果…

【odoo17 | Owl】前端js钩子调用列表选择视图

概要 在我们选择多对一或者多对多字段的时候&#xff0c;经常看到可以弹出列表弹窗让人一目了然的效果&#xff0c;效果如下&#xff1a; 那么&#xff0c;这种效果是odoo本身封装好的组件&#xff0c;我们在平时的前端界面开发的时候&#xff0c;既不是后端视图的情况下&#…

title可修改点击展示input

<spanv-if"isEdit"click.stop"headerClick(activityForm.activityName)"><span>課程名稱{{ activityForm.activityName}}</span><el-buttonlinktype"primary"style"color: #1d2129"click"editCourseName&qu…

STM32存储左右互搏 QSPI总线读写64 Mbit容量SRAM VTI7064

STM32存储左右互搏 QSPI总线读写64 Mbit容量SRAM VTI7064 QSPI&#xff08;Quad-SPI&#xff09;设备有两种常见操作模式&#xff0c;一种QSPI设备上电后直接进入QSPI模式&#xff0c;操作时命令&#xff0c;地址和数据都是多线传输。另一种QSPI设备上电后进入常规SPI操作模式…

谷粒商城实战笔记-踩坑-跨域问题

一&#xff0c;When allowCredentials is true, allowedOrigins cannot contain the special value “*” since that cannot be set on the “Access-Control-Allow-Origin” response header. To allow credentials to a set of origins, list them explicitly or consider u…

shell-awk文本处理工具

1、awk概述 AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具。 它是专门为文本处理设计的编程语言&#xff0c;也是行处理软件&#xff0c;通常用于扫描、过滤、统计汇总工作 数据可以来自标准输入也可以是管道或文件 在 linux 上常用的是 gawk,awk …

PyTorch+AlexNet代码实训

参考文章&#xff1a;https://blog.csdn.net/red_stone1/article/details/122974771 数据集&#xff1a; 打标签&#xff1a; import os# os.path.join: 每个参数都是一个路径段&#xff0c;将它们连接起来形成有效的路径名。 train_txt_path os.path.join("data"…

Bazaar v1.4.3 任意文件读取漏洞复现(CVE-2024-40348)

0x01 产品简介 Bazarr是Sonarr和Radarr的配套应用程序&#xff0c;可根据您的要求管理和下载字幕。 0x02 漏洞概述 Bazarr存在任意文件读取漏洞&#xff0c;该漏洞是由于Bazaar v1.4.3的组件/api/swaggerui/static中存在一个问题&#xff0c;允许未经身份验证的攻击者可利用…

硅纪元AI应用推荐 | 豆包整容成了浏览器,让你的电脑秒变AI PC

“硅纪元AI应用推荐”栏目&#xff0c;为您精选最新、最实用的人工智能应用&#xff0c;无论您是AI发烧友还是新手&#xff0c;都能在这里找到提升生活和工作的利器。与我们一起探索AI的无限可能&#xff0c;开启智慧新时代&#xff01; 亲爱的技术宅们、办公高手们&#xff0c…

Tomcat项目本地部署

今天来分享一下如何于本机上在不适用idea等辅助工具的前提下&#xff0c;部署多个tomcat的web项目 我这里以我最近写的SSM项目哈米音乐为例&#xff0c;简单介绍一下项目的大致组成&#xff1a; 首先&#xff0c;项目分为4个模块&#xff0c;如下图所示&#xff1a; 其中&…

SQL 语句中的字符串有单引号导致报错的解决

1.问题 SQL 语句执行对象中&#xff0c;本内容的字符串内含有单引号导致查询或插入数据库报错&#xff0c; 例如 str 关键字 AND 附近有语法错误 2.解决 字符串中的 ’ → 替换 ”&#xff0c;则查询语句成功&#xff0c;故程式中要备注替换 单引号。