爬虫与地理信息
这个作者很懒,什么都没留下…
展开
-
PCL系列3——Octree的使用
1. Octree原理介绍1.1百度百科:八叉树(Octree)的定义是:若不为空树的话,树中任一节点的子节点恰好只会有八个,或零个,也就是子节点不会有0与8以外的数目。那么,这要用来做什么?想象一个立方体,我们最少可以切成多少个相同等分的小立方体?答案就是8个。再想象我们有一个房间,房间里某个角落藏着一枚金币,我们想很快的把金币找出来,聪明的你会怎么做?我们可以把房间当成一个立方体,先切成八...原创 2018-12-05 22:05:20 · 3048 阅读 · 4 评论 -
PCL系列6——统计滤波(离群点剔除)
1.原理介绍StatisticalOutlierRemoval滤波器主要可以用来剔除离群点,或者测量误差导致的粗差点。滤波思想为:对每一个点的邻域进行一个统计分析,计算它到所有临近点的平均距离。假设得到的结果是一个高斯分布,其形状是由均值和标准差决定,那么平均距离在标准范围之外的点,可以被定义为离群点并从数据中去除。2.源码剖析第一步:计算每个点的K邻域点的平均距离 //First p...原创 2018-12-13 19:53:42 · 18503 阅读 · 12 评论 -
PCL系列2——Kd-Tree的使用
1.kdtree原理介绍:可以参考这篇博客:详解KDTree2.代码如下:#include <pcl/kdtree/kdtree_flann.h> //kdtree近邻搜索#include <pcl/io/pcd_io.h> //文件输入输出#include <pcl/point_types.h> //点类型相关定义#include &...原创 2018-12-04 12:29:09 · 3247 阅读 · 2 评论 -
PCL系列1——读入和输出pcd格式点云文件
1.从文件读取点云写法1: //1.loadPCDFile读取点云 pcl::PointCloud&lt;pcl::PointXYZ&gt;::Ptr cloud1(new pcl::PointCloud&lt;pcl::PointXYZ&gt;); if (pcl::io::loadPCDFile&lt;pcl::PointXYZ&gt;("车载道路2.pcd"原创 2018-12-04 11:09:03 · 9229 阅读 · 6 评论 -
点云数据按高程赋色渲染
一、渲染原理:首先按照Z轴方向求取所在点云的高程极值,包括高程最大值与最小值,计算高程中间值;然后选取渲染的颜色值,比如红、绿、蓝三种颜色。最后,自上而下,应该为红绿蓝三种颜色渐变的过程,即点云坐标最小处设置为蓝色,中间值设置为绿色,最大值设置为红色。下半部分点云,依次求取各激光点的高程值在中间值与最小值所在区间的比率,然后再蓝色基础上按比率增加绿色;同样,上半部分点云中的各激光点再绿色基础上...原创 2019-05-12 16:16:39 · 3959 阅读 · 4 评论 -
PCL系列8——txt格式点云读取并转pcd格式显示
一、核心函数:默认设置分割符为空格,可以设置为逗号或分号。可以适当修改,读取坐标之外的反射强度、颜色等其他信息。bool readTxtFile(const string &fileName, const char tag, const PointCloudT::Ptr &pointCloud){ cout << "reading file start........原创 2019-05-12 15:15:51 · 4443 阅读 · 4 评论 -
基于libLAS库读取LAS格式点云数据
1.示例代码:#include <iostream>#include <liblas/liblas.hpp>#include <pcl/io/io.h>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>#include <pcl/visualization/pcl...原创 2019-04-20 23:03:10 · 7118 阅读 · 10 评论 -
PCL系列7——半径滤波(离群点剔除)
1.原理介绍点云半径滤波也叫基于连通分析的点云滤波,该方法的基本思想是假定原始点云中每个激光点在指定的半径邻域中至少包含一定数量的近邻点。原始点云中符合假设条件的激光点被视为正常点进行保留,反之,则视为噪声点并进行去除。该方法对原始激光点云中存在的一些悬空的孤立点或无效点具有很好的去除效果。2.源码剖析template <typename PointT> voidpcl::Ra...原创 2019-04-12 16:26:41 · 9598 阅读 · 9 评论 -
点云提取扫描线
1.扫描线提取原理目前车载LiDAR系统搭载的激光扫描仪主要是线性扫描,获得的扫描点在目标上按扫描线排列。在同一扫描线中,系统记录的连续激光脚点的扫描角度差值为固定值(一般为激光扫描仪的角度分辨率)。在一个完整的扫描周期中,若扫描视场角为顶部天空,会出现无激光脚点返回的情况。此时当前扫描线的最后一个点和下一条扫描线的起始点的扫描角度有一个非规律的阶跃。同理,因为车载激光点云的连续性,当扫描视角为...原创 2019-01-24 22:13:58 · 3963 阅读 · 4 评论 -
PCL系列4——直通滤波
1.直通滤波介绍:指定字段,指定坐标范围进行裁剪。可以选择保留范围内的点或者范围外的点。2.代码:#include <pcl/io/pcd_io.h> //文件输入输出#include <pcl/point_types.h> //点类型相关定义#include <pcl/visualization/cloud_viewer.h> //点云...原创 2018-12-08 22:47:49 · 4484 阅读 · 3 评论 -
python读取点云txt文件并显示
#-*-coding:utf-8-*-import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Ddef readXYZfile(filename, Separator): data = [[], [], []] f = open(filename,'r...原创 2018-12-02 21:47:48 · 12104 阅读 · 10 评论 -
PCL系列5——体素栅格滤波(下采样)
1.体素滤波PCL实现的VoxelGrid类通过输入的点云数据创建一个三维体素栅格(可把体素栅格想象为微小的空间三维立方体的集合),然后在每个体素(即,三维立方体)内,用体素中所有点的重心来近似显示体素中其他点,这样该体素就内所有点就用一个重心点最终表示,对于所有体素处理后得到过滤后的点云。2.代码 #include <pcl/io/pcd_io.h> //文件输入输出...原创 2018-12-12 23:10:51 · 11331 阅读 · 12 评论 -
c++解析读取pcd点云文件
1.pcd文件格式pcl点云库官网pcd格式详解2.C++源码读取思路:连续读取前11行,获得pcd文件信息头,取得点云存储方式(ascii或者binary)和点云数量、点云格式(XYZ,XYZI....)等关键信息,然后按行依次读取坐标数据即可。#include <iostream>#include <fstream>#include <...原创 2018-12-02 23:23:48 · 8732 阅读 · 3 评论