点云数据处理
骡子骡子大骡子
这个作者很懒,什么都没留下…
展开
-
计算点云的二维面积(凹包面积计算、平面旋转)
计算点云面积时,cloud compare采取的策略是将点云网格化,然后计算网格面积。这样构网的情况往往会影响到后续面积的计算精度。这里采取了一种凹包面积计算的策略。主要步骤包括:1、将点云旋转至与z轴相垂直的平面2、计算旋转后点云的凹多边形边界点3、利用cgal库计算凹多边形面积这里采用了cgal中Polygon::area()算法,仅接受二维点输入。#pragma warning(disable : 4996)#include <CGAL/Exact_predicates_inex.原创 2021-12-03 15:34:43 · 7566 阅读 · 5 评论 -
CGAL实现点云投影至任意平面
最近在做一个项目,需要将点云投影至任意平面,尝试了网上pcl的投影代码。利用平面法向量总是不能得到正确的结果,于是采用CGAL实现了一下。大致原理是:点云投影到空间中任意平面,实际是点云沿着该点P到目标平面Plane的垂线进行投影。这样问题就变成利用已知点P构造一条垂直于目标平面Plane的直线L,L平行于目标平面的法向量,求直线L 和Plane的交点。代码如下:#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>原创 2021-06-28 20:22:41 · 1259 阅读 · 2 评论 -
计算空间中点到直线的距离
最近在做一个项目,已知三维空间中的一个点和构成直线的两个点的三维坐标,需要计算空间中点到直线的距离。网上查了查,pcl有自带的计算函数,pcl::sqrPointToLineDistance如下,需要提供…方向?好吧,反正我是不会搞。后来又在网上查了查资料,发现可以用海伦公式,通过已知三角形三个边的长度计算三角形的面积!问题就非常简单了。这样就可以先计算三个点之间的距离,作为三角形三个边的长度。然后利用三角形的面积公式:S = (h*a)/2计算空间中点到直线的距离啦。感觉比网上求叉积的方式要原创 2021-06-16 12:55:27 · 4001 阅读 · 1 评论 -
VS2017属性表更换问题
前一段时间写了一份点云降采样代码,直接调用别人的库“Library111”和属性表。但是后来该属性表不好用,就将该库删除重新拷贝了一个库命名“Library_original”。这段时间突然要用到点云降采样的代码,就把工程包含的属性表换成“Library_original”中的属性表,运行却一直提示找不到“Library111”库中的某个文件,检查过属性表中的包含目录和库目录,路径都没有问题,目前还没能解决。。。。...原创 2021-04-06 16:11:50 · 363 阅读 · 0 评论 -
基于体素化方法的点云降采样
前两天做了一个点云降采样的项目,用pcl自带的降采样方法出来的结果不是很理想,于是就自己写了一个。为了使代码执行效率高点就采用了基于点云索引的方式。本文使用的方法为:首先,计算点云群的Bounding Box;然后,根据一定的分辨率将空间点云体素化,并记录下每个体素所包含点云的索引(体素化的实质就是给点云赋予体素标签);最后,遍历体素,根据每个体素内点云的索引取点云坐标,计算每个体素重心的坐标,保留体素内距离重心最近的点。从而实现降采样。经过以上操作获取的点云密度相对较为均匀。1、点云索引计算公式(即原创 2021-01-04 09:50:12 · 3526 阅读 · 7 评论 -
LibLas读写LAS文件+降采样
LibLas读写LAS文件+降采样 前段时间课题组需要写一个点云数据降采样的小程序,要求读写内容都是LAS文件。本来CGAL可以做到,但是发现CGAL中写LAS文件的头文件好像有点问题,经过查阅资料决定用liblas解决。 踩了很多坑,好在最后问题终于解决了。这里把代码记录下来,以供后续查阅。 虽然采用的是pcl中的均匀采样,可是出来的结果貌似并不是很均匀,这个程序在release模式下运行没问题,但是debug模式总是会报一个错误,目前还没找到什么好的办法可以解决。。。。。。。不过目前的需求是能用就原创 2021-01-04 09:19:49 · 1042 阅读 · 2 评论