基于高程的地面点云信息提取
目标:
熟悉并掌握CloudCompare和matlab的基本命令。通过
CloudCompare软件来显示点云数据,其中包括使用不同的分割法来显示点云、查看点云数据模型的不同统计量等,熟悉并掌握点云数据常用的存储格式.xyz,.ply和.las。在此基础上,利用matlab平台的混合编程,通过不同的地物的特征,来提取目标点云数据。本次实习主要是根据道路的特征来提取点云数据中道路信息。
实验数据:
本实验是基于LAS点云数据进行道路地面特征点的提取。从本质上来说,LAS格式是一种二进制文件格式。其目的是提供一种开放的格式标准,允许不同的硬件和软件提供商输出可互操作的统一格式。现在LAS格式文件已成为LiDAR数据的工业标准格式。
LAS文件按每条扫描线排列方式存放数据,包括激光点的三维坐标、多次回波信息、强度信息、扫描角度、分类信息、飞行航带信息、飞行姿态信息、项目信息、GPS信息、数据点颜色信息等。
LAS格式定义中用到的数据类型遵循1999ANSI(AmericanNationalStandardsInstitute,美国国家标准化协会)C语言标准。一个符合LAS标准的LIDAR文件分为三个部分:公用文件头块(PUBLICHEADERBLOCK)、变量长度记(VARIABLELENGTHRECORDS)和点数据记录(POINTDATARECORD)。
数据参数介绍:
点云数据道路特征与原理:
在机载LiDAR点云数据中,道路点云与其他地物相比具有以下特征:①道路点属于地面点,高程低于 周围其他地物,如建筑物、植被等。利用该特征进行点 云滤波可区分出道路点与其他非地面点;②道路较周围其他地物平坦,可计算各点的法向量,设置合适的坡度阈值从地面点中提取候选道路点:③在几何形状上 道路呈长条带状分布且彼此连通。
因此,道路点集彼此相互连通,与离散点相比进行欧式聚类后,点数越多的类别属于道路的可能性越大。根据上述道路点特征,提出了一种如图l所示的道路提取方法。
提取方法
详细方法说明:
本实习主要利用matlab软件在研究区域的机载点云数据中提取出道路的部分的点云数据并在CloudCompare软件中显示出结果。LAS点云数据按每条扫描线排列方式存放数据,包括激光点的三维坐标、多次回波信息、强度信息、扫描角度、分类信息、飞行航带信息、飞行姿态信息、项目信息、GPS信息、数据点颜色信息等。
这里只用到激光点的三维坐标,以数据点为球心,创建一定半径的球体搜索范围内的点,求得搜索范围内的最小高程。最终得到整体研究区域的相对高程数据。
在CloudCompare软件中通过实验获得道路的高程阙值,得到道路的点云数据,剔除非地面点云。利用聚类的方法将之前获得的道路点云数据中干扰点排除,进一步优化结果数据。
下面是操作方法:
在CloudCompare中显示原始数据:
- 导入原始的las数据,加载数据时只保留三维坐标X、Y、Z,并保存为txt格式数据导出。
- 将刚刚保存到txt格式数据加载到CloudCompare软件中,在弹出的对话框中将Z数据改为Scala格式赋予颜色。
设置高程阈值
- 在MATLAB中,编写如下代码获得研究区域的相对高程数据,保存为txt格式。
- 在CloudCompare软件中按照2.2.1的操作显示相对高程的点云数据,并将相对高程值赋色。
- 手动调节相对高程的阈值。比较多次,确定阈值为多少时才能更好的使道路突显出来,此时得到阈值大概为3.6232275时效果最佳。
提取地面特征点数据:
- 在MATLAB中,高程阈值设置为4.1232275编写如下代码获得研究区域的地面特征点数据,保存为txt格式。
- clc; clear all; tic;
[s,h,v]=lasread(‘F:\ARRACA_SanFranCoast_2010_10SEG5082.las’,‘xyzi’);
ReferencePts(:,1)=s.X; ReferencePts(:,2)=s.Y; ReferencePts(:,3)=s.Z;
XY=ReferencePts(:,1:2); XYZ=ReferencePts(:,1:3); Z=ReferencePts(:,3);
road_d=1; f=fopen(‘F:\c.txt’,‘w’); TreeXY= kdtree_build(XY);
TreeXYZ= KDTree(XYZ); num_points=length(ReferencePts);
RH =zeros(num_points,1); for num=1:num_points
pointxyz=ReferencePts(num,1:3);
[IDX, DIST] = ball(TreeXYZ,pointxyz,2); Hb=ReferencePts(IDX,:);
rect= XY(num,:);
switch road_d;
case road_d == 1;
range1 = [rect(1)-(+inf),rect(1)+(+inf);rect(2),rect(2)];
range_i1 = kdtree_range_query( TreeXY, range1 );
find1 = size(range_i1,1);
for Num_range1=1:find1;
Zr_1(Num_range1,:) = Z(range_i1(Num_range1)基于高程的地面点云信息提取相关推荐
- 基于欧式聚类的车载路面点云扫描线提取
文章目录 1 扫描线示意图 2 基于欧式聚类的车载路面点云扫描线提取 3 实验结果分析 1 扫描线示意图 车载激光扫描系统主要的扫描方式为线形扫描[方莉娜,等:车载激光扫描数据的结构化道路自动提取方法 ...
- PCL点云处理之基于高程的粗糙度计算(一百)
PCL点云处理之基于高程的粗糙度计算(一百) 一.算法介绍 二.具体实现 1.代码 2.结果 一.算法介绍 点云粗糙度是点云的一项重要的局部特征,粗糙度顾名思义,可以理解为点云表面的光滑程度,在点云识 ...
- 基于RANSAC的激光点云分割
Lidar系列文章 传感器融合是将多个传感器采集的数据进行融合处理,以更好感知周围环境:这里首先介绍激光雷达的相关内容,包括激光雷达基本介绍(本节内容),激光点云数据处理方法(点云数据显示,点云分割, ...
- 【点云系列】基于图结构的点云快速重采样 翻译
原文:Fast Resampling of 3D Point Clouds via Graphs 原文链接:arxiv链接 摘要 为了较少存储.处理过程中和大尺度点云的消耗,我们提出了一种随机重采样策 ...
- 【读论文】点云信息提取研究进展和展望(2017)
[读论文]点云信息提取研究进展和展望(2017) 张继贤,林祥国,梁欣廉 DOI:10.11947/j.AGCS.2017.20170345 文章目录 1.该论文研究了什么? 1.1点云信息提取基元类 ...
- 基于MATLAB的点云建筑物轮廓提取与基于平面探测法的点云建筑物提取
博客中轮廓提取使用的点云数据 建筑物平面检测使用的点云数据 **两个小的点云处理实验项目,(源码资源****有常(注意目前是有常哦)私我vx:xdsqczkyqs713 ,第一个项目点云建筑物轮廓提取 ...
- 遮挡检测--基于高程的方法
基于高程的方法比z-buffer更加节约内存.其主要思想如下:这种遮挡方法是以DSM为例子讨论的: 投影光线与给定DSM位置处的垂直线的交点的高度称为该位置处的投影光线的高度.这个的高度值可以通过射线 ...
- 经典文献阅读之--R-PCC(基于距离图像的点云压缩方法)
0. 简介 对于激光雷达数据而言,虽然与2D图像相比,可以提供精确的物体深度信息,但也存在数据量大的问题,不便于数据存储或传输.在拿到离线数据分析的时候会发现我们很难拿到较长一段时间的激光数据,这就给 ...
- 视频+课件| PointDSC:基于特征匹配的点云配准方法(CVPR2021)
写在前面 感谢「3D视觉从入门到精通」知识星球嘉宾白旭阳博士为我们带来的主题为PointDSC:基于特征匹配的点云配准方法(CVPR2021)视频讲解,星球成员可免费观看学习.备注:白旭阳,香港科技大 ...
- 重磅直播 | PointDSC:基于特征匹配的点云配准方法(CVPR2021)
大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微信群内完成答疑. 本期由香港科技大学计算机系白旭阳博士分享,分享的主题为<基于特征匹配的鲁棒 ...
最新文章
- Python实现文本自动分类(朴素贝叶斯方法)
- 为C# Windows服务添加安装程序
- 使用java将字符串写入到指定的文件中
- C++: 06---构造函数析构函数
- 如何删除虚拟机上的操作系统、删除新建的虚拟机
- 技术能变现,才是硬道理
- python min函数 索引_使用列表中的max()/ min()获取返回的max或min项的索引
- @程序员,不要再锤产品经理了,锤这个吧!!!
- hive explode函数入门及其与lateral view的结合
- stm32上基于LwIP移植LibArtnet
- matlab cy68013,基于MATLAB的码垛机械手运动学分析与仿真
- python实现 数值 转换为 万,亿单位,保留3位小数(例:18000转换为1.8万)
- 计算机科学与技术本科知识体系
- 一文让你初步了解壮族——一个奇葩但同样优秀的民族
- 拒做背锅侠!如何利用网站性能优化驱动产品体验提升
- android 65536
- python中的图形界面设计_python图形化界面设计(tkinter)一全面介绍
- 数据结构-C语言-严蔚敏
- 基于深度神经网络的火灾探测声学灭火器控制
- 全栈工程师通网架构师之路
热门文章
- 利用Python编程,分别使用梯度下降法和最小二乘法求解多元函数
- springmvc配置拦截器
- matlab转python很难吗_MATLAB在逐渐被Python淘汰吗?
- 室内定位程序_在哪都能找到你!苹果新iPhone将支持UWB高精度室内定位
- Java编程:贪心算法
- Eigen编译_Eigen向量化_内存对齐 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
- 矩阵运算_Eigen使用_基本数据类型
- cartographer探秘第二章之论文解析
- 深度学习笔记(三)——GAN入门实现MNIST数据集
- 超快速的端到端实例分割模型,手把手教你用opencv部署Yolact
- 基于欧式聚类的车载路面点云扫描线提取