open3d 将点云投影到平面

open3d 将点云投影到平面

      • 一、算法原理
      • 二、代码
      • 三、结果展示
          • 1.原点云
          • 2.点云数据向`x + z = 0`投影
      • 四、相关数据

一、算法原理

假设点(x0, y0, z0), 平面方程为 mx + ny + sz + d = 0

过点(x0, y0, z0),且垂直平面的直线方程为
x − x 0 m = y − y 0 n = z − z 0 s \frac{x- x0}{m} = \frac{y- y0}{n}=\frac{z- z0}{s} mxx0=nyy0=szz0

点到平面的投影就是上述直线与平面的交点,注意到直线的参数方程为
x = m t + x 0 , y = n t + y 0 , z = s t + z 0 x = mt + x0,\quad y = nt + y0,\quad z = st + z0 x=mt+x0,y=nt+y0,z=st+z0
代入平面方程求解t
t = − m x + n y + s z + d m ∗ m + n ∗ n + s ∗ s t=-\frac{mx + ny + sz + d}{m*m + n*n + s*s} t=mm+nn+ssmx+ny+sz+d
将t带入到平面方程得到投影。。结合代码看易于理解。

二、代码

import numpy as np
import open3d as o3ddef plane(pcd, normal_vector):"""Args:将点云投影到平面pcd:  点云数据normal_vector:  方程法向量 mx + ny + sz + d = 0  传入[m , n, s, d]Returns: 投影后的点云数据"""plane_seeds = []   # 保存投影后的点云数据# 获取平面系数m = normal_vector[0]n = normal_vector[1]s = normal_vector[2]d = normal_vector[3]# 将点云转换为数组points = np.asarray(pcd.points)for xyz in points:x, y, z = xyz"""t = -(m*x + n*y + s*z + d) / (m*m + n*n + s*s)  # 计算参数方程参数"""t = -(m*x + n*y + s*z + d) / (m*m + n*n + s*s)  # 计算参数方程参数"""xi = m*t + x    # 计算x的投影yi = b*t + y    # 计算y的投影zi = s*t + z    # 计算z的投影"""xi = m * t + x  # 计算x的投影yi = n * t + y  # 计算y的投影zi = s * t + z  # 计算z的投影plane_seeds.append([xi, yi, zi])  # 将投影后的点云添加到数组中plane_cloud = o3d.geometry.PointCloud()  # 使用numpy生成点云plane_cloud.points = o3d.utility.Vector3dVector(plane_seeds)  # points numpy数组return plane_cloudif __name__ == '__main__':# -------------------读取点云数据------------------------cloud_size = 1000a = np.random.ranf(cloud_size * 3).reshape(-1, 3) * 1024pcd = o3d.geometry.PointCloud()  # 使用numpy生成点云pcd.points = o3d.utility.Vector3dVector(a)  # points numpy数组# pcd = o3d.io.read_point_cloud('res/bunny.pcd')   # 读取兔子点云plane_cloud = plane(pcd, [1, 0, 1, 0])  # 获得投影后的点云数据# ------------------ 可视化点云 -----------------plane_cloud.paint_uniform_color([1, 0, 0.0])  # 渲染颜色o3d.visualization.draw_geometries([pcd, plane_cloud])

三、结果展示

1.原点云

在这里插入图片描述

2.点云数据向x + z = 0投影

在这里插入图片描述

四、相关数据

参考文章

pclpy 参数模型投影:pclpy 参数模型投影-CSDN博客

点到平面的投影:点到平面的投影 - 知乎 (zhihu.com)

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

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

相关文章

一个小老板的日常管理

昨天在“Daily Briefing”公众号的一文《Daily Briefing下一步怎么办?》,收到很多英语爱好者的留言和祝福。 其实“Daily Briefing”也相当于创业前的一次MVP,失败也好,成功也罢,都是自己不错的一段经历。 咱们“知识大…

虚 拟 化原理

1 概念: ①通俗理解: 虚拟化是在硬件和操作系统之间的实践 ②通过对计算机的服务层级的理解,理解虚拟化概念 抽离层级之间的依赖关系(服务器虚拟化) 2 虚拟化分类 ①按架构分类 ◆寄居架构:装在操作系统上…

橘子学es原理01之准备工作

es本身是具备很好的使用特性的,我指的是他的部署方面的,至于后期的使用和运维那还是很一眼难尽的。 我们从这一篇开始就着重于es的一些原理性的的一些探讨,当然我们也会有一些操作性的,业务性的会分为多个栏目来写。比如前面我写的…

mp4格式是什么?视频如何转换成MP4格式【详解】

当我们谈论数字视频时,MP4无疑是最常见、最受欢迎的格式之一。MP4,全称为MPEG-4 Part 14,是一种多媒体容器格式,主要用于存储音频、视频、字幕和图像等多媒体数据。由于其出色的兼容性、广泛的应用范围以及优秀的压缩效率&#xf…

ONLYOFFICE桌⾯应⽤程序v8.0:功能丰富,⽀持多平台

文章目录 可填写的 PDF 表单RTL支持电子表格中的新增功能其他改进和新增功能与 Moodle 集成用密码保护 PDF 文件快速创建文档本地界面主题总结 继 ONLYOFFICE 文档 v8.0 的发布后,很高兴,因为适用于 Linux、Windows 和 macOS 的 ONLYOFFICE 桌面应用程序…

计算机网络实验八 利用 Java /C++开发网络聊天应用程序

一、实验目的和要求 1)基本掌握利用 Java 开发环境调试应用程序的方法。 2)理解基于套接字开发网络应用程序的过程,深入理解客户/服务器方式工作原理。 3)掌握基于Java和C++开发网络通信程序的方法。 二、实验环境 1)运行 Windows 2008 Server/XP/7 操作系统的 PC 2 台…

从新手到高手:用NumPy学习网站打造你的数据处理超能力!

介绍:NumPy是一个用于数值计算的Python库,特别擅长处理多维数组和矩阵。以下是对NumPy的详细介绍: 起源和发展:NumPy由Travis Oliphant在2005年创建,它是基于原来的Numeric模块和Numarray模块发展而来的。它的大部分代…

maven3旧版本的下载地址(含新版本)

因为现有的3.8版本与IDEA不兼容,我需要下载3.6版本,但是官网的位置非常隐蔽,找了很多资料才看到。故记录一下。 第一步 进入网址,选择需要的版本 Index of /dist/maven/maven-3 第二步 选择binaries 第三步 选择zip文件下载就可…

零基础手把手教你创建微信小程序(二)·创建第一个微信小程序以及了解小程序代码的构成

零基础手把手教你创建微信小程序(一)微信小程序开发账号的注册以及开发者工具的安装和使用-CSDN博客 目录 ​编辑 1. 创建微信小程序 1.1 基本信息 1.2 在模拟器上查看项目效果 1.3 在真机上预览项目效果 1.4 主界面的5个组成部分 1.4.1 菜单…

本博客工程源码总目录----方便你快速找到自己喜欢的项目

目录 1、前言2、本人项目总分类3、FPGA图像处理类项目-->快速查找3.1、图像采集-->MIPI视频类3.2、图像采集-->SDI视频类3.3、图像采集-->PAL视频类3.4、图像采集-->Cmeralink视频类3.5、图像转换-->LVDS视频转换3.6、图像缩放(纯Verilog版本HLS版…

六、回归与聚类算法 - 模型保存与加载

目录 1、API 2、案例 欠拟合与过拟合线性回归的改进 - 岭回归分类算法:逻辑回归模型保存与加载无监督学习:K-means算法 1、API 2、案例

2024年最值得尝试的创业项目,利用信息差,普通人下班也能做

大家好,我是电商花花。 到了2024年,人们依然在寻找长期可靠的副业项目,但我建议暂时停一下,因为抖音小店这个轻松暴利的副业项目还在等着我们呢。 抖音小店无货源创业项目作为一个轻资产创业项目,操作简单&#xff0…