Open3D 点云的圆柱形邻域搜索

news2024/11/23 7:24:46

目录

一、概述

1.1原理

1.2应用

二、代码实现

2.1完整代码

2.2程序说明

三、实现效果

3.1原始点云

3.2搜索后点云


一、概述

1.1原理

        圆柱邻域搜索的基本思想是确定点云中的哪些点位于给定圆柱的内部。一个圆柱可以由以下几个参数定义:

  • 中心点:圆柱底面的中心。
  • 轴向量:圆柱的中心轴方向。
  • 半径:圆柱的半径。
  • 高度:圆柱的高度。

计算步骤:

1.2应用

        圆柱邻域搜索是一种几何查询方法,用于在点云数据中查找与给定圆柱相交的点。该方法广泛应用于以下领域:

  1. 三维形状分析:用于识别和分析点云数据中的圆柱形状特征,如管道、圆柱形建筑结构等。
  2. 机器人导航:帮助机器人理解其周围环境的几何结构,以便在复杂的三维空间中导航。
  3. 工业检测:用于检测和测量工业环境中的圆柱形物体,如管道的直径、表面缺陷等。
  4. 计算机视觉:在3D重建和场景理解中,圆柱邻域搜索可以帮助识别和分割特定的几何形状。

二、代码实现

2.1完整代码


import open3d as o3d
import numpy as np
import matplotlib.pyplot as plt


def cylinder_neighborhood_search(pcd, center, axis, radius, height):
    """
    计算点云中位于指定圆柱形领域内的点。

    参数:
    - pcd: open3d.geometry.PointCloud 对象
    - center: 圆柱中心点(numpy数组)
    - axis: 圆柱轴向量(numpy数组)
    - radius: 圆柱半径
    - height: 圆柱高度

    返回:
    - cylinder_points: 位于圆柱形领域内的点的索引
    """
    points = np.asarray(pcd.points)
    axis = axis / np.linalg.norm(axis)  # 规范化轴向量

    # 计算每个点到圆柱轴的距离
    vec = points - center
    proj_len = np.dot(vec, axis)
    proj_points = center + np.outer(proj_len, axis)
    dist_to_axis = np.linalg.norm(points - proj_points, axis=1)

    # 计算每个点沿轴向的投影长度
    height_projection = np.dot(vec, axis)

    # 选择符合条件的点
    mask = (dist_to_axis <= radius) & (height_projection >= 0) & (height_projection <= height)
    cylinder_points = np.where(mask)[0]

    return cylinder_points


# 读取点云数据
pcd = o3d.io.read_point_cloud("happy buddha.pcd")

# 随机选择一个点作为圆柱中心点
points = np.asarray(pcd.points)
# random_index = np.random.randint(0, len(points))
center = points[1]
#
# 定义圆柱形领域的参数
axis = np.array([0, 1, 0])  # 圆柱轴向量
radius = 0.02  # 圆柱半径
height = 1000  # 圆柱高度

# 获取圆柱形领域内的点
cylinder_indices = cylinder_neighborhood_search(pcd, center, axis, radius, height)

# 提取圆柱形领域内的点云
cylinder_pcd = pcd.select_by_index(cylinder_indices)

# 设置颜色用于区分原始点云和圆柱形领域点云
colors = np.zeros((len(pcd.points), 3))
colors[:, 0] = 1  # 原始点云颜色设为红色
colors[cylinder_indices, :] = [0, 1, 0]  # 圆柱形领域点云颜色设为绿色

# 应用颜色到原始点云
pcd.colors = o3d.utility.Vector3dVector(colors)

# 可视化原始点云和圆柱形领域点云
o3d.visualization.draw_geometries([pcd, cylinder_pcd])

2.2程序说明

  1. 圆柱形邻域搜索函数:cylinder_neighborhood_search函数接收点云、圆柱的中心、轴向量、半径和高度作为参数。通过计算每个点到圆柱轴的距离和点在轴向上的投影长度来判断点是否在圆柱形领域内。
  2. 读取点云数据:使用o3d.io.read_point_cloud函数读取点云数据。
  3. 定义圆柱形领域的参数:圆柱的中心、轴向量、半径和高度。
  4. 获取圆柱形领域内的点:使用自定义的圆柱形邻域搜索函数获取圆柱形领域内的点索引。
  5. 提取圆柱形领域内的点云:使用select_by_index函数提取圆柱形领域内的点云。
  6. 设置颜色用于区分原始点云和圆柱形领域点云:原始点云设置为红色,圆柱形领域内的点云设置为绿色。
  7. 可视化:使用o3d.visualization.draw_geometries函数同时可视化原始点云和圆柱形领域点云。

三、实现效果

3.1原始点云

3.2搜索后点云

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

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

相关文章

RedHat9 | Zabbix-Server监控服务部署

系统版本以及软件版本 使用的系统版本&#xff1a; Red Hat Enterprise Linux release 9.2 软件版本&#xff1a; zabbix-release-7.0-3.el9.noarchzabbix-web-7.0.0-release1.el9.noarchzabbix-web-mysql-7.0.0-release1.el9.noarchzabbix-web-deps-7.0.0-release1.el9.noar…

Vue3+.NET6前后端分离式管理后台实战(二十七)

1&#xff0c;Vue3.NET6前后端分离式管理后台实战(二十七)

C++ 函数高级——函数重载——基本语法

作用&#xff1a;函数名可以相同&#xff0c;提高复用性 函数重载满足条件&#xff1a; 1.同一个作用域下 2.函数名称相同 3.函数参数类型不同 或者 个数不同 或者 顺序不同 注意&#xff1a;函数的返回值不可以作为函数重载的条件 示例&#xff1a; 运行结果&#xff1a;

排序格式排序格式

排序格式排序格式

探讨4层代理和7层代理行为以及如何获取真实客户端IP

准备工作 实验环境 IP角色192.168.1.100客户端请求IP192.168.1.100python 启动的HTTP服务192.168.1.102nginx服务192.168.1.103haproxy 服务 HTTP服务 这是一个简单的HTTP服务&#xff0c;主要打印HTTP报文用于分析客户端IP #!/usr/bin/env python # coding: utf-8import …

【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间

452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;先按照左边界排序&#xff0c;当前的左边界大于前一个的右边界的时候&#xff0c;表示没有覆盖所以需要一根箭&#xff0c;反之则要更新为最小的右边界 重点&#xff1a;是区间覆盖问题…

FMEA在大型光伏电站安全生产管理中的应用

一、FMEA概述 FMEA&#xff08;Failure Modes and Effects Analysis&#xff09;即失效模式和影响分析&#xff0c;是一种用于识别和分析产品或过程中潜在故障模式及其影响的方法。它通过对产品或过程中可能出现的故障模式进行系统性地梳理和分析&#xff0c;评估其可能的影响…

Day59 动态规划part12

LC115不同的子序列&#xff08;未掌握&#xff09; 递推公式与LC392类似&#xff0c;但是初始化略有不同 LC392的dp数组含义为相同字符个数而本体的dp数组含义为出现的次数&#xff0c;因此dp[i][0]1 两种情况 s[i-1]t[j-1] dp[i][j] dp[i-1][j-1]dp[i][j] dp[i-1][j] s[…

CosyVoice - 阿里最新开源语音克隆、文本转语音项目 支持情感控制及粤语 本地一键整合包下载

近日&#xff0c;阿里通义实验室发布开源语音大模型项目FunAudioLLM&#xff0c;而且一次包含两个模型&#xff1a;SenseVoice和CosyVoice。 CosyVoice专注自然语音生成&#xff0c;支持多语言、音色和情感控制&#xff0c;支持中英日粤韩5种语言的生成&#xff0c;效果显著优于…

JAVA集合框架、CAS、AQS

目录 一、java 的集合框架有哪些? 二、说-下 ArrayList 和 LinkedList? 三、HashSet和TreeSet的区别? 四、HashMap 的数据结构是什么? 五、CAS机制 六、AQS理解 一、java 的集合框架有哪些? Collection 是 Java 集合框架中的一个根接口&#xff0c;位于 java.util 包中。它…

那些年背过的面试题——MySQL篇

本文是技术人面试系列 MySQL 篇&#xff0c;面试中关于 MySQL 都需要了解哪些基础&#xff1f;一文带你详细了解&#xff0c;欢迎收藏&#xff01; WhyMysql&#xff1f; NoSQL 数据库四大家族 列存储 Hbase K-V 存储 Redis 图像存储 Neo4j 文档存储 MongoDB 云存储 OSS …

RabbitMQ中常用的三种交换机【Fanout、Direct、Topic】

目录 1、引入 2、Fanout交换机 案例&#xff1a;利用SpringAMQP演示Fanout交换机的使用 3、Direct交换机 案例&#xff1a;利用SpringAMQP演示Direct交换机的使用 4、Topic交换机 案例&#xff1a;利用SpringAMQP演示Topic交换机的使用 1、引入 真实的生产环境都会经过e…

[240707] X-CMD v0.3.14: cb gh fjo zig 模块增强;新增 lsio 和 pixi 模块

目录 X-CMD 发布 v0.3.14✨ advise&#xff1a;Bash 环境下自动补全时&#xff0c;提供命令的描述信息✨ cb:支持下载指定版本的附件资源✨ gh:支持下载指定版本的附件资源✨ fjo:支持下载指定版本的附件资源✨ zig&#xff1a;新增 pm 和 zon 子命令✨ lsio&#xff1a;用于查…

Maven一键配置阿里云远程仓库,让你的项目依赖飞起来!

文章目录 引言一、为什么选择阿里云Maven仓库&#xff1f;二、如何设置Maven阿里云远程仓库&#xff1f;三、使用阿里云Maven仓库的注意事项总结 引言 在软件开发的世界里&#xff0c;Maven无疑是一个强大的项目管理工具&#xff0c;它能够帮助我们自动化构建、依赖管理和项目…

并发处理 优先图和多重图

优先图(Precedence Graph)视图可串性多重图(Polygraph) 优先图(Precedence Graph) 优先图用于冲突可串性的判断。 优先图结构&#xff1a; 结点 (Node)&#xff1a;事务&#xff1b;有向边 (Arc): Ti → Tj &#xff0c;满足 Ti <s Tj&#xff1b; 存在Ti中的操作A1和Tj…

43、nginx的优化、防盗链、重定向、代理

nginx的优化、防盗链、重定向、代理 一、nginx的优化 1.1、隐藏版本号 server_tokens off;隐藏版本号 [roottest1 conf]# vim nginx.confserver_tokens off;[roottest1 conf]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok ngin…

机器学习训练之使用静态图加速

前言 MindSpore有两种运行模式&#xff1a;动态图模式和静态图模式。默认情况下是动态图模式&#xff0c;也可以手工切换为静态图模式。 动态图模式 动态图的特点是计算图的构建和计算同时发生&#xff0c;符合Python的解释执行方式。在调试模型时较为方便&#xff0c;能够实…

科大讯飞-群聊对话角色要素提取:不微调范式模拟官网评分

不微调范式模拟官网评分 step1: 模型api配置及加载测试step2: 数据加载与数据分析&#xff1a;测试集分析:step3: prompt设计:step4 :大模型推理&#xff1a;step 5: 结果评分测试&#xff1a;评分细则&#xff1a;评估指标 参考&#xff1a; 比赛说明&#xff1a; #AI夏令营 #…

从打印到监测:纳米生物墨水助力3D生物打印与组织监测平台?

从打印到监测&#xff1a;纳米生物墨水助力3D生物打印与组织监测平台&#xff1f; 在 3D 组织工程中&#xff0c;纳米生物墨水是将纳米材料与 ECM 水凝胶结合&#xff0c;以提高其打印性和功能性的重要策略。纳米生物墨水可以增强水凝胶的机械性能、导电性、生物活性&#xff…

【Transformer】transformer模型结构学习笔记

文章目录 1. transformer架构2. transformer子层解析3. transformer注意力机制4. transformer部分释疑 图1 transformer模型架构 图2 transformer主要模块简介 图3 encoder-decoder示意图N6 图4 encoder-decoder子层示意图 1. transformer架构 encoder-decoder框架是一种处理NL…