Open3D 获取点云中指定高度区域的所有点

目录

一、概述

1.1实现步骤

1.2应用

二、代码实现

1.1关键函数

1.2完整代码

三、实现效果

3.1原始点云

3.2处理后点云


Open3D点云算法汇总及实战案例汇总的目录地址:

Open3D点云算法与点云深度学习案例汇总(长期更新)-CSDN博客


一、概述

        该博客实现了在Open3D中实现提取点云中指定高度区域的所有点的功能。获取点云中指定高度区域的所有点是点云数据处理中一个重要的操作,它在建筑物分析、地形分析、树木测量、工业检测、城市规划、文化遗产保护、环境监测和农业应用等多个领域具有广泛的应用。通过提取特定高度范围内的点云数据,可以进行更加精细和有针对性的分析和处理,提高数据处理的效率和准确性。

1.1实现步骤

  1. 读取点云数据:从文件中读取点云数据。
  2. 定义高度阈值:确定需要提取的高度范围。
  3. 提取指定高度范围内的点:通过判断每个点的高度值是否在给定范围内,提取满足条件的点云子集。
  4. 可视化结果:使用Open3D可视化提取后的点云。

1.2应用

1.建筑物分析:
        - 提取建筑物不同高度范围内的点云数据,分析建筑物的不同楼层结构和特征。
2.地形分析:
        - 提取地形不同高度范围内的点云数据,分析不同海拔高度的地形特征和变化。
3.树木测量:
        - 提取树木不同高度范围内的点云数据,分析树木的高度分布和树冠特征。
4.工业检测:
        - 提取工业产品不同高度范围内的点云数据,检测产品在不同高度范围内的缺陷和形状特征。
5.城市规划:
        - 提取城市不同高度范围内的点云数据,分析建筑物和基础设施的高度分布和布局。

二、代码实现

1.1关键函数

  • 使用自定义函数 extract_points_within_height_range 提取满足条件的点云子集。该函数接受点云对象、最小高度值和最大高度值作为参数。
  • 在函数内部,通过判断每个点的高度值是否在给定范围内,提取满足条件的点云子集。
def extract_points_within_height_range(pcd, min_height, max_height):points = np.asarray(pcd.points)mask = (points[:, 2] >= min_height) & (points[:, 2] <= max_height)extracted_points = points[mask]extracted_pcd = o3d.geometry.PointCloud()extracted_pcd.points = o3d.utility.Vector3dVector(extracted_points)if pcd.has_colors():colors = np.asarray(pcd.colors)[mask]extracted_pcd.colors = o3d.utility.Vector3dVector(colors)if pcd.has_normals():normals = np.asarray(pcd.normals)[mask]extracted_pcd.normals = o3d.utility.Vector3dVector(normals)return extracted_pcd

1.2完整代码

import open3d as o3d
import numpy as npdef extract_points_within_height_range(pcd, min_height, max_height):"""提取点云中指定高度范围内的所有点。参数:pcd (open3d.geometry.PointCloud): 输入点云。min_height (float): 最小高度值。max_height (float): 最大高度值。返回:open3d.geometry.PointCloud: 提取后的点云子集。"""points = np.asarray(pcd.points)mask = (points[:, 2] >= min_height) & (points[:, 2] <= max_height)extracted_points = points[mask]extracted_pcd = o3d.geometry.PointCloud()extracted_pcd.points = o3d.utility.Vector3dVector(extracted_points)if pcd.has_colors():colors = np.asarray(pcd.colors)[mask]extracted_pcd.colors = o3d.utility.Vector3dVector(colors)if pcd.has_normals():normals = np.asarray(pcd.normals)[mask]extracted_pcd.normals = o3d.utility.Vector3dVector(normals)return extracted_pcd# 读取点云数据
pcd = o3d.io.read_point_cloud("bunny.pcd")# 定义高度范围
min_height = 0.02  # 最小高度值
max_height = 0.2  # 最大高度值# 提取指定高度范围内的点
extracted_pcd = extract_points_within_height_range(pcd, min_height, max_height)# 可视化提取后的点云
o3d.visualization.draw_geometries([extracted_pcd], window_name="Extracted Point Cloud within Height Range")

三、实现效果

3.1原始点云

3.2处理后点云

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

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

相关文章

CentOS 7.x 的 YUM 仓库问题

背景 CentOS Linux 7 的生命周期&#xff08;EOL&#xff09;已经于 2024 年 6 月 30 日终止这意味着 CentOS 7.x 的官方镜像站点将不再提供服务&#xff0c;导致在使用 yum 安装或更新程序时可能会遇到 错误。本文将介绍如何解决这一问题&#xff0c;使得你可以继续在 CentOS…

【vim】ubuntu20-server 安装配置 vim 最新最详细

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【vim】ubuntu20-server 安装配置 vim 最新最详细 开发环境一、vim github二、安装必…

Elasticsearch 使用误区之三——分片设置不合理

Elasticsearch 是一个强大的搜索和分析引擎&#xff0c;它通过将数据分散到多个节点的分片中来进行分布式处理。 本文将探讨分片大小和策略的概念&#xff0c;以优化 Elasticsearch 的性能并防止过度分片或分片过大等问题。 先看个分片设置不合理的真实企业案例&#xff1a; 10…

DML数据库的数据类型

DML 用于改变数据表中的数据的操作语言。 包括INSERT&#xff08;将数据插入到数据表中&#xff09;,UPDATE&#xff08;更新表中已经存在的数据&#xff09;,DELETE&#xff08;删除表中已经存在的数据&#xff09; INSERT 用法 INSERT INTO 表名&#xff08;字段1&#x…

Qt实现输出日志到指定文件

开发平台 &#xff1a; Qt Creator 语言&#xff1a; C 需求&#xff1a; 获取日志信息&#xff0c;写入指定文件日志7天后过期保护写入日志进程 前置操作&#xff1a; 1.在CMakeLists.txt中添加如下代码 # 添加预处理&#xff0c;防止在release模式下&#xff0c;输出的…

CSS:position属性

一、属性值 1.1 fixed 固定位置的元素&#xff0c;相对于浏览器窗口进行定位。 元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。 网站中的固定 header 和 footer 就是用固定定位来实现的&#xff1b; header效果图 footer效果图 1.2 absol…

浏览器自动化测试工具selenium——爬虫操作记录

selenium——是一款web自动化测试框架&#xff0c;其能模拟正常的用户操作&#xff0c;比如点击。但selenium并不是浏览器&#xff0c;没有执行js和解析html/css的能力&#xff0c;因此selenium需要和浏览器配合使用。 因为selenium可以模仿用户行为&#xff0c;因此selenium也…

Linux系统安装Cobol语言及IBM大型机模拟软件Hercules

COBOL&#xff08;Common Business-Oriented Language&#xff09;起源于50年代中期&#xff0c;是一种面向过程的高级程序设计语言&#xff0c;主要用于商业和数据处理领域。经过不断发展和标准化&#xff0c;已成为国际上应用最广泛的商业编程语言之一&#xff0c;在某red书上…

Windows Server搭建局域网NTP时间服务器与客户端通实现

1.服务器环境&#xff1a; win11更改注册表 winR输入regedit win11更改注册表 winR输入regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config&#xff0c;找到Config目录&#xff0c;双击Config目录下的AnnounceFlags&#xff0c;设为5。 3.HKEY_L…

Nginx 配置与优化:常见问题全面解析

文章目录 Nginx 配置与优化:常见问题全面解析一、Nginx 安装与配置问题1.1 Nginx 安装失败问题描述解决方法1.2 Nginx 配置文件语法错误问题描述解决方法二、Nginx 服务启动与停止问题2.1 Nginx 无法启动问题描述解决方法2.2 Nginx 服务无法停止问题描述解决方法三、Nginx 性能…

Http 和 Https 的区别(图文详解)

在现代网络通信中&#xff0c;保护数据的安全性和用户的隐私是至关重要的。HTTP&#xff08;Hypertext Transfer Protocol&#xff09;和 HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;是两种常见的网络通信协议&#xff0c;但它们在数据保护方面的能力存在…

snkemake入门

一、背景介绍 snakemake是一种用于自动化流程的开源工具&#xff0c;是一款基于python3的软件。在生物信息学、高通量测序数据分析、大规模数据处理等领域非常流行。 snakemake的官网&#xff1a;Snakemake | Snakemake 8.16.0 documentationhttps://snakemake.readthedocs.i…

Android SurfaceFlinger——GraphicBuffer内存申请(三十)

在上一篇文章中介绍 GraphicBuffer 初始化的 initWithSize() 函数中,有两个核心方法,GraphicBufferAllocator.allocate 和 GraphicBufferMapper. getTransportSize,这里我们就来看一下 allocate() 函数是如何实现内存申请的。 一、函数介绍 在Android的图形子系统中,Graph…

自监督学习概述(Self-Supervised Learning,SSL)

自监督学习&#xff08;Self-Supervised Learning&#xff0c;SSL&#xff09;是一种机器学习方法&#xff0c;旨在利用未标记数据进行训练。这种方法通过从数据本身生成伪标签&#xff0c;来创建监督信号&#xff0c;使得模型能够学习有效的数据表示。自监督学习在深度学习领域…

C++ | Leetcode C++题解之第283题移动零

题目&#xff1a; 题解&#xff1a; class Solution { public:void moveZeroes(vector<int>& nums) {int n nums.size(), left 0, right 0;while (right < n) {if (nums[right]) {swap(nums[left], nums[right]);left;}right;}} };

第一周第三天任务

入职了新公司&#xff0c;电脑限制了公网访问&#xff0c;为了补上打卡进度&#xff0c;后面的打卡内容纯手敲文本&#xff0c;没有图片&#xff0c;不便之处请谅解&#xff0c;如果错误&#xff0c;请帮忙指正&#xff0c;谢谢。 11 使用docker-compose 使用一个工具&#x…

多通道音频解决方案

多通道音频解决方案在现代音频应用中具有广泛的应用&#xff0c;特别是在需要处理多个音频信号、实现复杂声音场景和提升用户体验的场合。比如音乐录制和影视和游戏音效设计等等。 音乐录制与制作音乐录制 需求: 音乐录制工作室需要能够同时录制和处理多个音轨&#xff0c;以便…

百度地图埋点动态插入到页面不生效, 定位发现是 document.write 缘故,不能异步引入该埋点 js

背景: 为提高页面加载速度, 根据地址的不同加载不同的 script (Vue 项目, 一份代码放到多个地址, 根据地址不同显示不同登录页), 结果引用的百度地图 api 失效 定位: 发现埋点 js 引入成功, 该 js 生成的内容是 document.write 再引入 js , css 文件, 这些文件没有加载出来 …

MathType 7.8中文直装版2024年最新图文安装破解教程

MathType公式编辑器 v7.8中文破解版是一款适用于Windows和Macintosh的便捷交互式公式编辑器&#xff0c;可帮助您进行文字处理、网页、桌面设计、演示文稿制作、学习TeX、LaTeX和MathML文档创建。 MathType 7.8这个工具允许用户创建、修改公式和插入多个文档。有了这个软件&…

​CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​

CSS技巧专栏:一日一例 13 -纯CSS实现晃晃悠悠背景不停滚动的按钮特效​ 大家好,本篇文章给大家带来一个可爱的按钮,像个小宠物等待你抚摸和奖励,不知道它会不会引起你的关注呢?页面上这样的一个按钮,会不会让你忍不住把鼠标移动过去点一下呢? 本例图片 案例分析 这个…