3.5、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据
1、点云数据简介
点云数据是三维空间中由大量二维点坐标组成的数据集合。每个点代表空间中的一个坐标点,可以包含有关该点的颜色、法向量、强度值等额外信息。点云数据可以通过激光扫描、结构光扫描、摄像机捕捉等方式获取,广泛应用于计算机视觉、机器人视觉、地图建模、三维重建等领域。
点云数据的特点包括:
- 无序性:点云数据中的点是无序的,需要进一步处理才能提取有用信息。
- 稀疏性:点云数据中的点通常是稀疏的,但可以通过点云重构等方法填充缺失区域。
- 多样性:点云数据可以包含不同属性的信息,如位置、颜色、法向量等。
- 三维信息:点云数据可以精确表示三维场景的形状和结构。
点云数据在许多应用中具有重要作用:
- 三维重建:利用点云数据可以构建真实世界场景的三维模型,用于虚拟现实、游戏开发等领域。
- 目标检测与识别:通过处理点云数据进行物体检测、识别和分类。
- 地图构建与导航:利用点云数据进行地图构建和导航、自动驾驶等应用。
- 工业应用:用于三维检测、质量控制、机器人视觉等领域。
处理点云数据需要使用相关的算法和技术,如点云配准、点云滤波、点云配准、点云分割等。点云数据的应用领域广泛,是计算机视觉和机器人领域重要的数据形式之一。
2、PLY 格式和 PCD 格式点云数据的异同点
PLY 格式和 PCD 格式都是常见的点云文件格式,但它们有一些区别和异同点:
-
PLY(Polygon File Format)格式:
- PLY 格式是一种灵活的三维数据文件格式,最初由斯坦福大学的Greg Schmidt和Paul Bourke设计,并经过广泛使用。
- PLY 文件可以包含多种类型的数据,如点、边、面等,以及属性信息。
- PLY 文件本身是一种文本文件格式,也可以使用二进制格式保存数据,二进制格式可以提高读写速度。
- PLY 文件通常包含关于点云的几何信息、颜色信息等。
-
PCD(Point Cloud Data)格式:
- PCD 格式是点云数据存储的一种格式,最初由 Point Cloud Library(PCL)定义和支持。
- PCD 文件通常包含点云的位置、颜色、法向等属性信息。
- PCD 格式文件可以存储单个点云或多个点云,并且可以包含有序或无序的点云数据。
- PCD 文件可以以ASCII文本格式或二进制格式存储点云数据。
异同点:
- PLY 格式和 PCD 格式都适用于存储点云数据,但 PLY 格式更加通用,适用于多种类型的三维数据,而 PCD 格式专门用于点云数据;
- PLY 格式的文件可以包含更丰富的几何信息和属性信息,而 PCD 格式更专注于点云数据的存储;
- PLY 格式的文件通常比 PCD 格式的文件更大,因为包含更多的信息。
综上所述,PLY 格式和 PCD 格式都可以用于存储点云数据,选择使用哪种格式取决于具体的应用需求和数据格式。如果需要额外的几何信息或属性信息,可以选择使用PLY格式;如果只需存储点云的位置、颜色等基本信息,PCD格式可能更加简洁和高效。
3、有色点与无色点云数据的区别
有色点云数据与无色点云数据的主要区别在于是否包含颜色信息。有色点云数据包含每个点的颜色信息,而无色点云数据只包含点的空间位置信息。
有色点云数据:
- 每个点包含有关颜色的信息,通常以RGB或RGBA格式表示;
- 可以呈现真实世界中的物体颜色,有利于视觉识别和分析;
- 适用于需要颜色信息的应用,如三维视觉识别、表面重建等。
无色点云数据:
- 只包含每个点的空间位置信息,不包含颜色信息;
- 数据文件通常更小,占用空间更小;
- 可能会丢失一些细节信息,无法展现真实物体的颜色。
在实际应用中,根据具体的需求和场景选择使用有色或无色点云数据。例如,在进行三维建模和表面重建时,有色点云数据可以提供更加真实的效果;而在点云配准和分割任务中,无色点云数据可能更加简洁和高效。
4、无色点云数据导入显示保存(.ply文件)
pcread()函数
pcread()
函数用于从文件中读取点云数据并将其加载到 MATLAB 中。- 该函数可以读取多种点云文件格式,如PLY、PCD、LAS等。
- 语法为
ptCloud = pcread(filename)
,其中filename
为点云文件的路径和名称,ptCloud
是表示点云数据的点云对象。
pcshow()函数
pcshow()
函数用于在 MATLAB 中可视化显示点云数据。- 可以用来查看、分析和处理点云数据。
- 语法为
pcshow(ptCloud)
,其中ptCloud
是表示点云数据的点云对象。
pcwrite()函数
pcwrite()
函数用于将 MATLAB 中的点云数据写入到文件中保存。- 可以将点云数据保存为各种点云文件格式。
- 语法为
pcwrite(ptCloud, filename)
,其中ptCloud
是表示点云数据的点云对象,filename
是要保存点云数据的文件名。
代码:
figure(1)%窗口1
WS=pcread('C:\Users\16023\Desktop\例程\WSDY.ply');%导入无色ply格式点云
pcshow(WS)
pcwrite(WS,'WSDY1.ply')
显示效果:
5、有色点云数据导入显示保存(.ply文件)
代码:
figure(2)%窗口2
CSDY=pcread('C:\Users\16023\Desktop\例程\CSDY.ply');%导入有色ply格式点云
pcshow(CSDY)
pcwrite(CSDY,'CSDY1.pcd')
显示效果:
6、有色点云数据导入显示保存(.pcd文件)
代码:
figure(3)%窗口2
CSDYP=pcread('C:\Users\16023\Desktop\例程\CSDY1.pcd');%导入有色pcd格式点云
pcshow(CSDYP)
显示效果:
7、斯坦福大学经典点云模型数据(ply/pcd文件)
简介
斯坦福大学提供了一些经典的点云模型数据集,这些数据集被广泛用于计算机视觉、计算机图形学等领域的研究和实践。其中一些常见的经典点云模型数据包括:
-
Stanford Bunny(斯坦福兔子):这是一个三维兔子模型,具有复杂的几何形状和细节,常用于三维重建、形状识别等任务。
-
Stanford Dragon(斯坦福龙):这是一个具有许多细节和复杂结构的三维龙模型,被广泛用于三维建模、计算机图形学等领域。
-
Stanford Armadillo(斯坦福犰狳):这是一个犰狳模型,具有多边形细节和曲面形状,常用于三维重建、形状分析等应用。
这些经典的点云模型数据集通常提供了高质量的三维模型数据,可以帮助研究人员和开发者进行算法测试、性能评估和模型比较等工作。使用这些数据集可以加快研究和实验的进展,并促进学术交流和合作。
注释:总计九个点云模型的.ply和.pcd文件
点云显示:
https://download.csdn.net/download/XU157303764/89352074
8、总结
在 MATLAB 中处理点云数据可以使用 PointCloud 类或者读取外部点云文件的方式。以下是一些常见的操作方法:
-
使用 PointCloud 类:
- 创建点云对象:在 MATLAB 中使用 PointCloud 类可以创建点云对象,可以通过手动输入点云数据或者通过其他方式创建。
% 创建一个简单的点云对象ptCloud = pointCloud([1, 2, 3; 4, 5, 6; 7, 8, 9]);
- 显示点云:可以使用 pcshow 函数显示点云数据。
pcshow(ptCloud) % 显示点云
- 保存点云文件:可以使用 plyWrite 函数将点云数据保存为 PLY 格式。
pcwrite(ptCloud, 'pointCloud.ply', 'PLYFormat', 'binary');
-
读取外部点云文件:
- 读取点云文件:可以使用 pcread 函数读取外部的点云文件,如PLY、PCD等格式。
ptCloud = pcread('pointCloud.ply');
- 显示点云:同样使用 pcshow 函数显示点云数据。
pcshow(ptCloud) % 显示点云
通过以上方法,您可以在 MATLAB 中打开、显示和保存点云文件。根据实际需求选择合适的方法处理点云数据。
相关文章:

3.5、matlab打开显示保存点云文件(.ply/.pcd)以及经典点云模型数据
1、点云数据简介 点云数据是三维空间中由大量二维点坐标组成的数据集合。每个点代表空间中的一个坐标点,可以包含有关该点的颜色、法向量、强度值等额外信息。点云数据可以通过激光扫描、结构光扫描、摄像机捕捉等方式获取,广泛应用于计算机视觉、机器人…...

Qt-事件与信号
事件和信号的区别在于,事件通常是由窗口系统或应用程序产生的,信号则是Qt定义或用户自定义的。Qt为界面组件定义的信号往往通常是对事件的封装,如QPushButton的clicked()信号可以看做对QEvent::MouseButtonRelease类事件的封装。 在使用界面组…...

数据结构 day3
目录 思维导图: 学习内容: 1. 顺序表 1.1 概念 1.2 有关顺序表的操作 1.2.1 创建顺序表 1.2.2 顺序表判空和判断满 1.2.3 向顺序表中添加元素 1.2.4 遍历顺序表 1.2.5 顺序表按位置进行插入元素 1.2.6 顺序表任意位置删除元素 1.2.7 按值进…...
Kubernetes面试整理-如何进行滚动更新和回滚?
在 Kubernetes 中,滚动更新和回滚是管理应用程序版本的常用操作。滚动更新允许您逐步替换现有的 Pod 实例,以便在不中断服务的情况下部署新版本。回滚则是在新版本出现问题时恢复到之前的版本。 滚动更新 通过 Deployment 进行滚动更新 1. 创建一个 Deployment: 下面是一个…...
flutter ios打包 xcode报错module ‘xxx‘ not found
flutter ios打包 xcode报错module ‘xxx’ not found 如果已经在androidstudio中成功运行了flutter build ios --release。 那么可能是你使用xcode打开的是ios/Runner.xcodeproj文件。 你关掉xcode,重新打开ios/Runner.xcworkspace/文件。然后重新archiveÿ…...

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之④:数据分析之三(数据展示)
概述 在先前探讨的文章中,我们构建了一个全面的数据测试体系,该体系遵循“数据获取—数据治理—数据分析”的流程。如何高效地构建数据可视化看板,以直观展现分析结果,正逐渐成为利用新兴技术提升效能的关键领域。伴随业务拓展、数…...

Elasticsearch 批量更新
Elasticsearch 批量更新 准备条件查询数据批量更新 准备条件 以下查询操作都基于索引crm_flow_info来操作,索引已经建过了,本文主要讲Elasticsearch批量更新指定字段语句,下面开始写更新语句执行更新啦! 查询数据 查询指定shif…...
【Pytorch笔记】张量
torch.Tensor() 是 PyTorch 库中用于创建张量的一个函数。在 PyTorch 中,张量是多维数组,它们可以存储在 CPU 或 GPU 上,并且支持自动求导,这使得它们非常适合进行深度学习和科学计算。 张量可以在Python list形式下通过 torch.T…...
查找json中指定节点的值,替换为指定的值
有时我们封装好的实体转化成的json字段的值和第三方要求的不一样,比如我们字段的值是字符串,我们需要使用int类型的值,就需要将这个键的值转化成int类型。 比如将以下 convulsionNumber字段中字符串的值“一次”替换为0 {"convulsionT…...
Android 14 开机时间优化措施
Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...

【QGroundControl二次开发】二.使用QT编译QGC(Windows)
【QGroundControl二次开发】一.开发环境准备(Windows) 二. 使用QT编译QGC(Windows) 2.1 打开QT Creator,选择打开项目,打开之前下载的QGC项目源码。 编译器选择Desktop Qt 6.6.3 MSVC2019 64bit。 点击运…...
[C/C++入门][变量和运算]4、带余除法
给定被除数和除数,求整数商及余数 看到这个题,我们都知道C的除法运算符 /,默认是不带余数的。那现在要求带余数,需要能够想到% %,是C获取余数的方法:比如5/22; 5%21;%得到的是除后的余数。 #inc…...

常用优秀内网穿透工具(实测详细版)
文章目录 1、前言2、安装Nginx3、配置Nginx4、启动Nginx服务4.1、配置登录页面 5、内网穿透5.1、cpolar5.1.1、cpolar软件安装5.1.2、cpolar穿透 5.2、Ngrok5.2.1、Ngrok安装5.2.2、随机域名5.2.3、固定域名5.2.4、前后端服务端口 5.3、NatApp5.4、Frp5.4.1、下载Frp5.4.2、暴露…...

防火墙NAT地址转换和智能选举综合实验
一、实验拓扑 目录 一、实验拓扑 二、实验要求(接上一个实验要求后) 三、实验步骤 3.1办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 3.2分公司设备可以通过总公司的移动链路和电信链路访…...

Android获取当前屏幕显示的是哪个activity
在 Android 中,要获取当前屏幕显示的 Activity,可以使用以下几种方法: 方法一:使用 ActivityManager 获取当前运行的任务信息 这是一个常见的方法,尽管从 Android 5.0 (API 21) 开始,有些方法变得不太可靠…...

JVM:自动垃圾回收
文章目录 一、C/C的内存管理二、Java的内存管理1、方法去的回收2、堆回收(1)引用计数法和可达性分析法(2)五种对象引用(3)垃圾回收算法 一、C/C的内存管理 在C和C没有自动垃圾回收机制,一个对象…...

【填坑指南】PHP8报:Unable to load dynamic library ‘zip.so’ 错误
1.原因分析 这种情况多数发生在PHP安装时因为各种原因失败后,残余的库与最后安装的PHP版本不兼容导致的。 2.我的路径 一开始我按照以前摸索出来的安装PHP7.3的成功经验来编译方法安装PHP8.3,发现以前的套路已经失效了。反复重装PHP8.3失败后…...

鸿蒙语言基础类库:【@system.notification (通知消息)】
通知消息 说明: 从API Version 7 开始,该接口不再维护,推荐使用新接口[ohos.notification]。本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import notification fro…...

1.JavaWeb开发简介(Tomcat安装使用+Servlet简介)
文章目录 一.web开发简介1.概念:2.特点:3.常用技术:4.服务架构5.web应用开发模式6.HTTP协议1)概念:2)HTTP最基本的过程是:3)IP/域名4)HTTP协议请求方式 7.JavaWeb的相关技术8.Java Web服务器 二、安装配置Tomcat1.简介2.Tomcat目录结构 三.Servlet的入门应用1.使用步骤2.使用注…...

xxl-job 动态创建一次性定时任务
文章目录 需求一、考虑方案二、实现思路三、代码实现3.1 引入xxl-core 核心包3.2 远程调用3.2.0 yaml3.2.1 配置类3.2.2 入参3.2.3 任务返回实体3.2.4 任务调用 3.3 cron生成器3.4 handler实现3.4 测试 踩坑 需求 类似预约会议,设置提醒 添加数据记录(…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...