点云上采样

news2024/9/25 1:23:00

  【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。   

参考书籍:《人工智能点云处理及深度学习算法》

 本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。

        点云坐标上采样是相对下一节特征上采样而言的。一般点云上采样指的是坐标上采样,与前文点云下采样是一个相反概念。点云上采样是为了让其更加密集,从而凸显出更多细节信息。我们很容易联想到插值等方法来实现点云上采样,即采用周围点云坐标插值出新的点云位置。scipy等python库均提供了数据插值方法。需要注意的是,点云插值属于二维插值而不是三维插值。这是由于插值算法需要把其中一个坐标维度当作函数值进行处理。另一种点云上采样方式包括表面重建和采样,即对物体表面进行重建后在面上选取所需要的点。

        点云表面重建方法会在后续章节中进行详细介绍。这里使用open3d中的重建函数create_from_point_cloud_alpha_shape,其关键参数为alpha。alpha是该方法在搜索外轮廓时的半径大小。alpha值越小,网格的细节就越多,分辨率越高。  

mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd, alpha=2)

        Open3d表面采样方式包括均匀采样和泊松圆盘采样,函数分别为sample_points_uniformly和sample_points_poisson_disk。均匀采样函数的参数为采用后总点数number_of_points,即采样完成后点云的总点数为number_of_points。

pcd = mesh.sample_points_uniformly(number_of_points=3000)

        泊松圆盘采样函数主要在于删除点云中不符合均匀分布的点使其达到预定的采样点数。该函数支持三角面片mesh和点云两种输入方式。当输入为mesh时,函数参数为初始化因子init_factor和采用后总点数number_of_points。它首先通过均匀采样采集init_factor*number_of_points个点,然后剔除不符合均匀分布的点,并使最终输出点数为number_of_points。当输入为点云时,其参数仅包括number_of_points,直接通过剔除不符合均匀分布的点使最终输出点数为number_of_points。因此,这种方法也可以用于点云下采样。

#输入为mesh
pcd = mesh.sample_points_poisson_disk(number_of_points=3000, init_factor=5)
pcd = mesh.sample_points_uniformly(number_of_points=2500)
#输入为点云
pcd = mesh.sample_points_poisson_disk(number_of_points=500, pcl=pcd)

        点云上采样示例程序及效果图如下所示。图中灰色部分为原始点云,蓝色部分为下采样后点云,绿色部分是对蓝色部分进行上采样后的点云。

# -*- coding: utf-8 -*-

import open3d as o3d
from copy import deepcopy

if __name__ == '__main__':
    file_path = 'rabbit.pcd'
    pcd = o3d.io.read_point_cloud(file_path)
    pcd.paint_uniform_color([0.5, 0.5, 0.5])#指定显示为灰色
    print(pcd)

    pcd1 = deepcopy(pcd)
    pcd1.paint_uniform_color([0, 0, 1])#指定显示为蓝色
    pcd1.translate((20, 0, 0)) #整体进行x轴方向平移
    pcd1 = pcd1.voxel_down_sample(voxel_size=1)
    print(pcd1)


    mesh = o3d.geometry.TriangleMesh.create_from_point_cloud_alpha_shape(pcd1, alpha=2)
    pcd2 = mesh.sample_points_poisson_disk(number_of_points=3000, init_factor=5)
    pcd2.paint_uniform_color([0, 1, 0])#指定显示为绿色
    pcd2.translate((-40, 0, 0)) #整体进行x轴方向平移
    print(pcd2)
    o3d.visualization.draw_geometries([pcd, pcd1, pcd2], #点云列表
                                      window_name="点云上采样",
                                      point_show_normal=False,
                                      width=800,  # 窗口宽度
                                      height=600)  # 窗口高度

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

 本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。

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

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

相关文章

mysql regexp匹配多个字符串

项目场景: 数据结构 其中nameArr存储的是名字集合,现在的需求是传入"aaa","fff",需要把包含这两个name的数据都查出来。 解决方案: 可以使用REGEXP来匹配包含多个特定ID的字符串。使用以下正则表达式&#x…

Linux1-初识Linux

简介:个人学习分享,如有错误,欢迎批评指正。 一、硬件和软件 我们所熟知的计算机是由:硬件和软件所组成。 硬件:计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。 软件:是用户和…

复习Vue笔记(给自己做笔记)

基于脚手架创建前端工程 环境要求 node.js:前端项目的运行环境(相当于Java的运行环境JDK) npm:JS的包管理工具/器 Vue CLI:基于Vue进行快速开发的完整系统,实现交互式的项目脚手架 创建Vue基础项目代码&a…

从入门到专业,2024年精选录屏工具一网打尽

电脑录屏随着科技的飞速发展和数字化生活的普及已经成为了我们学习、日常工作、娱乐中不可或缺的一部分。本文将带你一起探索和班迪录屏一样大火的电脑录屏工具有哪些。 1.福昕REC大师 链接:www.foxitsoftware.cn/REC/ 这款软件体积小巧精致,不需要多…

【第81课】开发框架安全SpringBootStruts2LaravelThinkPHPCVE复现

免责声明 本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利&#xff0…

Golang | Leetcode Golang题解之第376摆动序列

题目&#xff1a; 题解&#xff1a; int wiggleMaxLength(int* nums, int numsSize) {if (numsSize < 2) {return numsSize;}int prevdiff nums[1] - nums[0];int ret prevdiff ! 0 ? 2 : 1;for (int i 2; i < numsSize; i) {int diff nums[i] - nums[i - 1];if ((…

【JVM】剖析字符串与数组的底层实现(二)

剖析字符串与数组的底层实现 字符串jdk8和jdk9的区别 jdk8:底层是一个char[]数组 jdk9及之后:底层是一个byte[]数组 一个中文占两个字节&#xff0c;一个char占两个字节&#xff0c;一个byte占一个字节 Jdk9及之后的版本中&#xff0c;多了一个code属性&#xff0c;这个属性标…

深入掌握Kubernetes核心:YAML配置详解与实战

Kubernetes 的yaml配置文件 Kubernetes 的 YAML 配置文件是定义和管理集群中的所有资源的关键工具。了解如何编写和使用这些配置文件对管理 Kubernetes 集群至关重要。 1. 基础结构 Kubernetes YAML 配置文件通常由以下几个部分组成&#xff1a; apiVersion: 资源使用的 API …

公司同时使用目标(OKR)(KPI)的用例是什么?

简单的答案&#xff1a;所有使用OKR的公司都使用KPI。 长答案&#xff1a; 在公司层面&#xff0c;大多数OKR与关键绩效指标直接挂钩。举例说明&#xff0c;假设一家公司的目标是&#xff1a;”实现财务目标”&#xff0c;有以下3个关键结果。 1-第二季度公司收入翻番&#…

BeanFactoryPostProcessor 和 BeanPostProcessor

BeanFactoryPostProcessor 和 BeanPostProcessor 基本概念BeanFactoryPostProcessor简单实践BeanFactoryPostProcessor 典型应用BeanFactoryPostProcessor 和 BeanDefinitionRegistryPostProcessor BeanPostProcessor简单实践AOP 简单实践 基本概念 BeanFactoryPostProcessor …

百度翻译与TOP3在线翻译伙伴:2024年的黄金组合

在这个信息丰富的时代&#xff0c;语言帮助人们跨越地域界限进行交流。随着全球化的发展&#xff0c;高效的在线翻译工具变得越来越重要&#xff0c;它能帮我们更好地了解世界和不同的文化。今天&#xff0c;我们就来看看百度翻译和它的三个新对手之间的比较&#xff0c;一起找…

redis作为缓存,mysql的数据如何与redis同步

先介绍自己的业务背景&#xff0c;是一致性要求高的 还是 允许延迟一致&#xff0c;因为两者的回答不一样。 双写一致性 双写一致性:当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 读操作:缓存命中&#xff0c;直接返回;缓存未命中…

动⼿学深度学习

大家如果想获取这个PDF可以关注&#xff0c;收藏点赞并私信我&#xff0c;我把这个PDF文档发给感兴趣的朋友 目录 预备知识 预备知识内容 线性神经网络 线性回归 基本元素 矢量化加速 正态分布与平方损失 从线性回归到深度网络 小结与练习 线性回归的实现 从零开始实现…

safari扩展程序开发

文章目录 safari_web_extensions开发扩展扩展有3个主要部分&#xff1a;使用 WebExtension APIruntime local debugSafari中允许运行 未签名的扩展install extensionupdate extension publish safari的extension文档不是很好&#xff0c;建议参考mozilla文档 https://developer…

【Python零基础】类的概念

文章目录 前言一、创建并使用类二、使用类和实例三、继承四、导入类五、Python标准库六、类的编码风格总结 前言 面向对象编程是现在使用最多的软件编写方法之一。面向对象中最核心的就是类(class)&#xff0c;类用来描述现实世界的事物和情景&#xff0c;我们基于这些类来创建…

信号的产生

文章目录 2 信号的产生2.1 键盘组合键2.2 命令和函数调用2.2.1 kill命令2.2.2 raise()函数2.2.3 abort()函数 2.3 硬件异常2.3.1 除0异常2.3.2 空指针异常2.3.3 OS如何感知这些异常--除0异常2.3.4 OS如何感知这些异常--空指针异常 2.4 软件条件2.4.1 13&#xff09;SIGPIPE信号…

yolov5关键点检测-实现溺水检测与警报提示(代码+原理)

基于YOLOv5的关键点检测应用于溺水检测与警报提示是一种结合深度学习与计算机视觉技术的安全监控解决方案。该项目通常会利用YOLOv5强大的实时目标检测能力&#xff0c;并通过扩展或修改网络结构以支持人体关键点检测&#xff0c;来识别游泳池或其他水域中人们的行为姿态。 项…

12-使用gateway作为微服务网关

本文介绍spring gateway的使用&#xff0c;包括配置文件和使用java代码配置&#xff0c;让大家了解spring gateway的用法。如果不了解什么是微服务网关&#xff0c;就先查查资料&#xff0c;网关相对来说是比较重要的微服务组件。 0、环境 springboot 2.4.2springcloud gatew…

游戏开发设计模式之装饰模式

目录 装饰模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在Unity中实现装饰模式以动态扩展游戏对象的功能&#xff1f; 装饰模式与其他设计模式&#xff08;如适配器模式、代理模式&#xff09;相比&#xff0c;有哪些优势和劣势&#xff1f; 优势 劣势 与适配器…

唯众2024年高职人工智能实训室方案解读

随着人工智能&#xff08;AI&#xff09;技术在全球范围内的快速发展&#xff0c;越来越多的职业技术学院开始重视AI相关专业的建设和实训室的搭建。作为在人工智能教育领域有着丰富经验的企业&#xff0c;唯众针对2024年的市场需求&#xff0c;推出了一套全面的人工智能实训室…