本文主要分享利用matlab点云工具的相关模块来处理点云,并通过点云轮廓对点云体积进行简单的估计测量。

目录

  • 利用matlab处理点云

      • 目录
    • 主要的操作流程图
    • 2具体流程
      • 1 点云的读入和显示
      • 2 点云的处理

1.主要的操作流程图

.ply点云文件读入点云数据显示点云数据获取点云轮廓求得点云所占体积结束处理

2、具体流程

2.1 点云的读入和显示

假设有一个名为pointcloud.ply的点云文件。——ply格式简介

pc = pcread('path\pointcloud.ply'); %读入点云文件
pcshow(pc)                      %显示点云

这里需要注意.ply文件中头文件类似这样的格式:

element vertex 12
property float x
property float y
property float z
property uchar blue
property uchar green
property uchar red

其中x,y,x是三维点云的空间坐标,后面的b,g,r代表每个点的颜色,后一项目对于纹理映射和显示很重要,可以分别提取出来,随后用pcshow来显示;

pcread读入的文件后生成

   Location: [850554×3 single]Color: [850554×3 uint8]Normal: [850554×3 single]Count: 850554XLimits: [6.5701 15.5542]YLimits: [-1.5363 4.2114]ZLimits: [-15.7035 0.2691]

我们可以提取出其中的位置和颜色来进行纹理映射并画图

figure(1)
pc_tmp(:,1) = pc.Location(:,3);     %调整点云的方位的和xyz轴
pc_tmp(:,2) = pc.Location(:,1);
pc_tmp(:,3) = pc.Location(:,2);
pc_col = pc.Color
pcshow(pc_tmp,pc.Color)

这里利用CMVS/PMVS方法生成的点云数据作为例子:


2.2 点云的处理

为了求得这一建筑物的体积,通过获得这一建筑物的轮廓包络来得到其体积。主要利用matlab中的alphaShape函数和volum

alphaShape
此函数主要用于从离散的三维空间点云中提取边缘并建立对应的包络:
shp = alphaShape(x,y,z)

主要控制参数有alpha值,用于控制生产轮廓的精细程度(越小越细腻)
‘RegionThreshold’ 忽略生成包络中的小物体,压制小物体的阈值体积
‘HoleThreshold’ 填充包络中的空洞,生成完整的体积形态
- *alphaShape(x,y,z,alpha,’HoleThreshold ‘,xx,’RegionThreshold’,xx)

需要注意的是需要将点云的位置坐标转换为双精度的类型。

x=pc.Location(:,3);y=pc.Location(:,1);z=pc.Location(:,2);%get point out
x = double(x); y=double(y); z= double(z);%获取点云坐标
alp = 5;region = 0.75;%hole = 1; region = 0.75;
shp = alphaShape(x,y,z,alp);%生产点云的包络数据
%ref:http://cn.mathworks.com/help/matlab/ref/alphashape.html
plot(shp)%显示点云包络
v= volume(shp);
title(['v= 'num2str(v) ,'m3']) %计算体积并显示

上图为生成的点云包络(需要仔细条件参数以生成符合需求精度的包络),通过volum可计算此包络所占粗略的体积。

利用matlab处理点云相关推荐

  1. 利用matlab点云工具处理点云

    利用matlab处理点云 本文主要分享利用matlab点云工具的相关模块来处理点云,并通过点云轮廓对点云体积进行简单的估计测量. 目录 利用matlab处理点云 目录 主要的操作流程图 2具体流程 1 ...

  2. matlab对图像进行增强,利用matlab对图像进行增强处理.doc

    利用matlab对图像进行增强处理.doc 郑州轻工业学院课程设计任务书题目利用MATLAB对图像进行增强处理专业.班级电子信息工程07级学号姓名主要内容.基本要求.主要参考资料等:主要内容:在图像形 ...

  3. Matlab二维图导入ansys,(原创教程)利用Matlab对ANSYS数据进行后处理.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab (原创教程)利用Matlab对ANSYS数据进行后 ...

  4. 利用Matlab进行相机标定并使用openCV进行简单三维重建

    注:本文主要针对Matlab和OpenCV跨平台进行相机标定.单相机三维重建工作的实现,因为我发现网上竟然没有一篇博客径直指出这两者在进行图像处理时的巨大差异(坐标系完全不同),不然我也不会走了很多弯 ...

  5. matlab系统的根轨迹,实验五 利用MATLAB绘制系统根轨迹

    <实验五 利用MATLAB绘制系统根轨迹>由会员分享,可在线阅读,更多相关<实验五 利用MATLAB绘制系统根轨迹(6页珍藏版)>请在人人文库网上搜索. 1.实验五 利用MAT ...

  6. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...

    已知一副RGB图像中的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figur ...

  7. python 词云_利用Python生成词云

    利用Python生成词云 一.第三方库的安装与介绍 1.1  Python第三方库jieba(中文分词) 1.介绍 "结巴"中文分词:做最好的 Python 中文分词组件. 2.特 ...

  8. 【Matlab 控制】利用 Matlab Function 绘制分段函数

    利用 Switch block 利用 Matlab Function block function [mean, stdev] = fcn(vals) % #codegen% calculates a ...

  9. 幅度调制信号 matlab,《利用MATLAB实现信号的幅度调制与解调.doc

    <利用MATLAB实现信号的幅度调制与解调 课程设计论文 姓名:姜勇 学院:机电与车辆工程学院 专业:电子信息工程2班 学号:1665090208 安徽科技学院 学年第 学期 < > ...

最新文章

  1. 【高并发、高性能、高可用】系统设计经验分享!
  2. 如何同时展现不同粒度的度量
  3. Android_Event Bus 的基本用法
  4. 以张鸿蒙系统的手机,搭载鸿蒙系统的手机真的要来了?因为别无选择,所以唯有向前!...
  5. 江苏省计算机二级c语言考试知识点,计算机二级考试C语言常考知识点归纳
  6. 配置开发支持高并发TCP连接的Linux应用程序全攻略
  7. 【计算机网络安全基础(第五版)袁津生 课后习题答案】
  8. 办公室常用计算机常识,这10个办公必备的电脑小技巧,让你事半功倍
  9. “焊”卫锂电 | 昂视锂电池密封钉视觉检测应用详解
  10. C case和UVM TB的交互,tube_print, event_sync
  11. 五大常用百度高级搜索语法
  12. 一个中高级PHP工程师所应该具备的能力
  13. 天猫精灵智能家居对接,及天猫iot官网配置图文讲解(二)
  14. Unity Profiler
  15. 程序员技术与文艺的PK_来首届阿里巴巴研发效能嘉年华
  16. 【NOIP 2002】字串变换
  17. undefined control sequence_control两个超级实用的短语解析
  18. 如何在注册表里面删除所有qq相关文件
  19. java毕业设计_短视频分享网站
  20. MySQL 实现无数据插入有数据更新

热门文章

  1. java if and_关于java:if语句中可以有两个条件吗
  2. 【自动驾驶】摄像头单目测距原理及实现
  3. RCNN (Regions with CNN) 目标物检测
  4. 初学Java Web(6)——JSP学习总结
  5. Android 安卓 四大组件
  6. JVM垃圾回收算法 总结及汇总
  7. 史上最全设计模式导学目录(完整版)
  8. JVM内幕:Java虚拟机详解
  9. velocity模板 If / ElseIf / Else语法
  10. Java程序员从笨鸟到菜鸟之(七十三)细谈Spring(五)spring之AOP底层大揭秘