pcl点云数据的线特征提取的方案

我现在需要对点云数据提取特征线,比如边缘线之类的。
pcl库对于点云数据的点特征提取有很多对应的方法,但是没查到关于线特征提取的。
想问一下大佬们,pcl支持特征线提取吗,是不是我找资料的时候找错了关键词。

0

2个回答

忘了把找到的方法写出来了

 int arg_kNearest = 30;//一般这里的数值越高,最终边界识别的精度越好
    int arg_Angle = 144;//角度值,0-360

    pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
    pcl::PointCloud<pcl::Boundary> boundaries;//Boundary,表示点是否位于表面边界的描述的点结构
    pcl::BoundaryEstimation<pcl::PointXYZRGBA, pcl::Normal, pcl::Boundary> est; //BoundaryEstimation使用角度标准估计一组点是否位于表面边界上
    pcl::search::KdTree<pcl::PointXYZRGBA>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZRGBA>());

    //其中pcl::PointXYZ表示输入类型数据,pcl::Normal表示输出类型,且pcl::Normal前三项是法向,最后一项是曲率
    pcl::NormalEstimation<pcl::PointXYZRGBA, pcl::Normal> normEst;//NormalEstimation类,用于估计每个3D点的局部表面属性(表面法线和曲率)
    normEst.setInputCloud(input_cloud);
    normEst.setSearchMethod(tree);
    // normEst.setRadiusSearch(2);  //法向估计的半径
    normEst.setKSearch(9);  //法向估计的点数
    normEst.compute(*normals);
    cout << "normal size is " << normals->size() << endl;

    //normal_est.setViewPoint(0,0,0); //这个应该会使法向一致
    est.setInputCloud(input_cloud);
    est.setInputNormals(normals);
    //est.setAngleThreshold(M_PI *4/5);//默认是M_PI/2,  M_PI是180度
    est.setAngleThreshold(M_PI*(arg_Angle % 360) / 180);
    //est.setSearchMethod (pcl::search::KdTree<pcl::PointXYZ>::Ptr (new pcl::search::KdTree<pcl::PointXYZ>));
    est.setSearchMethod(tree);
    est.setKSearch(arg_kNearest);  
                                   //est.setRadiusSearch(everagedistance);  //搜索半径
    est.compute(boundaries);

    //pcl::PointCloud<pcl::PointXYZ> boundPoints;
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr boundPoints(new   pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::PointCloud<pcl::PointXYZRGBA> noBoundPoints;
    int countBoundaries = 0;
    for (int i = 0; i<input_cloud->size(); i++)
    {
        uint8_t x = (boundaries.points[i].boundary_point);
        int a = static_cast<int>(x); //该函数的功能是强制类型转换
        if (a == 1)
        {
            //  boundPoints.push_back(cloud->points[i]);
            (*boundPoints).push_back(input_cloud->points[i]);
            countBoundaries++;
        }
        else
            noBoundPoints.push_back(input_cloud->points[i]);
    } 
//boundPoints就是最后要的结果
0
0
qq_39623952
qq_39623952 回复好来滴茶: 可以告知一下不,谢啦
3 个月之前 回复
qq_33298609
好来滴茶 这几个都是很经典的提取点特征的方法啊,看来看去都是这几个,我也都在自己的工程实现过了。我想可能没有成的提取线特征的吧,不过昨天倒是看到一个边缘点的,效果还可以
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
点云的特征提取
This paper describes a new method to extract feature lines directly from a surface point cloud. No surface reconstruction is needed in advance, only the inexpensive computation of a neighbor graph connecting nearby points.
PCL点云特征描述与提取(2)
点特征直方图(PFH)描述子 正如点特征表示法所示,表面法线和曲率估计是某个点周围的几何特征基本表示法。虽然计算非常快速容易,但是无法获得太多信息,因为它们只使用很少的几个参数值来近似表示一个点的k邻域的几何特征。然而大部分场景中包含许多特征点,这些特征点有相同的或者非常相近的特征值,因此采用点特征表示法,其直接结果就减少了全局的特征信息。那么三...
基于激光雷达点云数据的目标检测
前言 自动驾驶领域好像更为关注的是二维图像的物体检测,二维图像的语义特征比较丰富,对复杂特征有比较好的检测精度。现在比较流行的做法是,在二维图像上进行目标检测,后期结合雷达等测距信息,将二维数据映射到三维空间中。对语义特征比较复杂的情景,这种方式很有效,但是对一些比较简单的物体,基于三维点云方式的检测更精确。 基于三维点云的目标检测 传统方式: 主要步骤:分割地面-&gt;点云聚类-&gt;特征提...
点云分割基于特征边界提取
三维点云数据的预处理与圆特征提取方法的研究,特征包括边界,角点,圆等等。
三维点云目标提取总结(续)
简单介绍了一下三维点云的目标提取方法流程,针对这个领域提出了个人的一些见解。
PCD格式兔子点云数据
学习PCL的同行可以下载,三维点云数据,PCD格式的兔子模型
利用PCL处理Realsense点云数据-使用VoxelGrid滤波器对点云进行下采样
在上一篇我们利用realsense_grabber采集了点云数据,但是运行一下就会发现,直接使用的话根本达不到实时的要求,也就是个1HZ的刷新率,所以我们需要对它进行下采样,减少点云个数,从而提高处理速度。这里我们使用的是VoxelGrid类。    使用体素化网格方法实现下采样,即减少点的数量,减少点云数据,并同时保持点云的形状特征,在提高配准、曲面重建、形状识别等算法速度中非常实用。PCL实
点云的边界提取
能够将散乱的点云数据边界点及特征点提取出来,并显示。
lidar点云边缘线提取
基于坡度和聚类的算法,提取lidar点云的地物边缘线。最终得到地物的轮廓
PCL中访问点云数据点的几种方式
    最近在看PCL的教程,发现对点云中具体数据点的访问也有好几种方式,看着看着就会混淆了,所以,现将每种方式记录下来,做个对比,方便随时复习,温故知新。一、第一种是在看《How to create a range image from a point cloud》教程时看到的,代码如下,这种方式是一种vector的赋值方式,首先将point数据push_back到pcl::PointXYZ类型...
pcl中程序cpp及点云数据
brisk_descriptors_gt.pcd brisk_image_gt.pcd brisk_keypoints_gt.pcd bun0.pcd bun01.pcd bun02.pcd bun03.pcd bun4.pcd bunny.pcd car6.pcd CMakeLists.txt colored_cloud.pcd common convert_image_to_point_cloud.py cturtle.pcd cube.ply curve2d.pcd curve3d.pcd curve_close.pcd features filters five_people.pcd geometry grabber_sequences io ism_test.pcd ism_train.pcd kdtree keypoints lamppost.pcd LIST.TXT milk.pcd milk_cartoon_all_small_clorox.pcd milk_color.pcd nhood_test.pcd noisy_slice_displaced.pcd octants.pcd octree office1_keypoints.pcd office2_keypoints.pcd outofcore pcl_logo.pcd people recognition registration rops_cloud.pcd rops_indices.txt rops_triangles.txt sac_plane_test.pcd sample_consensus search segmentation stereo_left.pcd stereo_right.pcd surface table_scene_mug_stereo_textured.pcd test_recognition_ransac_based_ORROctree.cpp tex1.jpg tex10.jpg tex4.jpg tex5.jpg tex8.jpg tum_amicelli_box.vtk tum_rabbit.vtk tum_rusk_box.vtk tum_soda_bottle.vtk tum_table_scene.vtk visualization
PCL 点云数据读取并显示
在上一篇文章中我们已经将txt转化成pcd格式了,现在想查看生成的pcd文件是否确实是txt中的数据 ,参考一下代码: #include &amp;lt;iostream&amp;gt; //标准输入输出流 #include &amp;lt;pcl/io/pcd_io.h&amp;gt; //PCL的PCD格式文件的输入输出头文件 #include &amp;lt;pcl/point_types.h&amp;gt; //PCL对各种格式的点...
pcl小知识(十四)——两种拼接点云的方法
为了做对比实验,把点云分成了好几块。实验中又需要对它们分别拼接组合起来。教程中给了一种方法。但是对于新手来说可能不会修改,毕竟大多数代码中用的是指针而不是点云变量来存储点云。
简单的点云读取与可视化
环境为vs2017+pcl1.8.1 在pcl官网 Simple Cloud Visualization 教程中 #include //... void foo () { pcl::PointCloudpcl::PointXYZRGB>::Ptr cloud; //... populate cloud pcl::visualization::CloudVie
PCL 导入点云数据--查看前10个点的x值,运行时间等
#include &amp;lt;iostream&amp;gt; //标准输入输出流#include &amp;lt;pcl/io/pcd_io.h&amp;gt; //PCL的PCD格式文件的输入输出头文件#include &amp;lt;pcl/point_types.h&amp;gt; //PCL对各种格式的点的支持头文件#include &amp;lt;pcl/point_cloud.h&amp;gt;#include &amp;lt;pcl/visuali...
点云数据分割——单层栅格映射
1. 参考文献: Lidar-based Methods for Tracking and Identification下载链接: http://publications.lib.chalmers.se/records/fulltext/241972/241972.pdf2. 分割方法原理为了能够分离地面和障碍物, 假设地面相对平坦,即地面扫描点的 z 轴方向的波动较小,通过将扫描区域进行栅格划分...
FCN在点云数据PCL方面应用浅析
欢迎访问我的个人博客:zengzeyu.com   前言 FCN(fully convolutional networks, 全卷积神经网络)的图片语义分割(semantic segmentation)论文:Fully Convolutional Networks for Semantic Segmentation。全卷积网络首现于这篇文章。这篇文章是将CNN结构应用到图像语义分割领域并...
pcl点云的滤波与特征点学习笔记
参考链接: https://yq.aliyun.com/ziliao/431359   点云数据时不可避免的存在噪声,或者离群点(离主体点云即被测物体点云较远的离散点)。 滤波是点云数据处理流程中的第一步,往往对后续处理管道影响很大,只有在滤波预处理中将噪声点、离群点、孔洞、数据压缩等按照后续处理定制,才能够更好的进行配准、特征提取、曲面重建、可视化等后续应用处理。 目录 一、滤波处理...
python提取点云数据
这个代码用于提取点云,支持Python运行平台,很不错的一个代码。
将velodyne三维激光的点云数据(16条射线)转换到laserscan
运行velodyne_pointcloud中的VLP16_points.launch第11行是修改传感器扫描的距离,第49行是将传感器的点云数据(16条射线)抽取出一条,转换为laserscan.转换规则如下:ring的value的取值范围是-1到15.0代表抽取的是第16条(距离地面最近的那一条),15代表抽取第1条...
PCL学习笔记——读入txt格式点云数据,写入到PCD文件中
读入txt格式点云数据,写入PCD文件中 // An highlighted block // pointclouds_octree.cpp: 定义控制台应用程序的入口点。 // #include &amp;amp;quot;stdafx.h&amp;amp;quot; #include&amp;amp;amp;lt;iostream&amp;amp;amp;gt; #include&amp;amp;amp;lt;fstream&amp;amp;amp;gt; #include&amp;a
处理点云数据(六):点云分割
展示了如何在三维激光雷达数据中检测地平面和发现附近的障碍物。clear;clc; %% % for img_idx = 181:446 % fid = fopen(sprintf('D:/KITTI/data_set/2011_09_26/2011_09_26_drive_0009_sync/velodyne_points/data/%010d.bin',img_idx),'rb'); %
利用PCL处理Realsense点云数据-显示点云法线方向及出现问题的解决
在我们获得点云数据后,为了能够进行表面重建或者是进行物体的位姿确定,我们都需要确定物体表面的发现方向。 PCL中有现成的计算物体法线的类NormalEstimation,这个类做了以下3件事 1.得到p的最近邻 2.计算p的表面法线n 3.检查法线的朝向,然后拨乱反正。 默认的视角是(0,0,0) 计算一个点的法线 前面两个参数很好理解,plane_p
内在形状签名(ISS)算法,用于点云关键点提取,matlab实现,带例程
ISS算法是Zhong等10年发表的点云关键点检测算法,是现有非尺度不变的关键点提取算子中效果较好较稳定的(其它的还有harris3D等效果也很好但是我没做),已经被PCL库收录。这是我按照文献用matlab实现的代码,使用bunny数据做了测试,效果很不错。
PCL 学习(2)——基本数据类型与点云数据拼接
点云数据分为有序与无序两种类型: HEIGHT被设置为1,可以用来作为判断是有序点云或无序点云的判断标准。 接下来介绍几种常用的点云类型: 1、PointXYZ PointXYZ是使用最常见的一个点数据类型,因为它只包含三维xyz坐标信息,这三个浮点数附加一个浮点数来满足存储对齐,用户可利用points[i].data[0],或者points[i].x访问点的x坐标值。 ...
PCL1.7.2+Kinect V 2.0获取并保存点云PCD数据程序
本文在VS2012开发平台上面配置PCL1.7.2+Kinect V 2.0SDK+opencv2.4.9 ,使用最新的Kinect V 2.0传感器设备获取场景中的深度图像和彩色图像,并将二者转换保存为PCL数据库所使用的PCD点云数据格式,然后借助编程算法,编写程序将保存的点云PCD格式数据,成功的保存到电脑Dist里面。本程序所使用的配件较多 ,自己起步一点点摸索的话,极费事、极费时间,这里将其拿出来供大家直接使用,也算 是为致力于三维点云图像处理和PCL+Kinect V 2.0的同仁志士加了点催化剂,给予一点帮助吧。让三维点云的获取更加方便,KinectV 2.0 使用范围更广阔吧。
PCL点云参数估计算法之RANSAC和LMEDS
RANSAC算法 RANSAC算法的输入是一组观测数据(往往含有较大的噪声或无效点),一个用于解释观测数据的参数化模型以及一些可信的参数。RANSAC通过反复选择数据中的一组随机子集来达成目标。被选取的子集被假设为局内点,并用下述方法进行验证: 有一个模型适应于假设的局内点,即所有的未知参数都能从假设的局内点计算得出。 用1中得到的模型去测试所有的其它数据,如果某个点适用于估计的模型,认为它也是...
处理点云数据(五):坐标系的转换
相机的内外参矩阵 坐标系 主要有两类坐标系,一类为相机坐标系,一类为世界坐标系(即物体所处真实世界) 内参矩阵 设空间中有一点P,若世界坐标系与相机坐标系重合,则该点在空间中的坐标为(X, Y, Z),其中Z为该点到相机光心的垂直距离。设该点在像面上的像为点p,像素坐标为(x, y)。 由上图可知,这是一个简单的相似三角形关系,从而得到 但是,图像的像素坐标系原点
PCL入门<一> 点云的数据结构
PCL点云入门基础 点云的创建及显示
用BFS(广度优先搜索)对16线激光雷达点云进行聚类分析
    广度优先搜索(BFS)是一种可以用于连通性分析的算法,也可以用于迷宫问题的求解。最近看点云处理的相关算法,发现BFS也可以用于点云的聚类,于是用16线激光雷达点云做了下实验。     不过首先需要对激光雷达点云进行有序排列,将点云数据根据行列存入一个点云变量中。16线激光雷达的扫描范围为360度,一共16条扫描线。横向角度分辨率为0.2度,纵向为2度。于是一条扫描线上的激光点数目最多为: ...
使用QT搭建点云显示框架系列八---关于拟合球
这次又更新了软件,下载请看置顶的博客。好了,说一下本次代码的主要更新内容:1.加入了很多很多的QT5.9的测试代码,将一些官方的例子演示加入进来,放到了帮助菜单下。2.利用opengl在界面前绘制了一个渐变的正方形,学会了如何在QT中进行纹理载入和使用。3.加入了拟合球的代码,用所有点云拟合一个球。4.重新调整了灯光,让灯光从相机(也就是咱们自己)打出,这样物体就总是明亮的。不会出现因为旋转而导致...
pcl小知识(十五)——两片点云求交、求并、求异(求补)
主要是用于自己生成需要的试验数据,包括对点云进行组合、求差异等
3D【20】PCL MLS点云平滑
//#include &amp;amp;lt;pcl/surface/mls.h&amp;amp;gt; pcl::search::KdTree&amp;amp;lt;pcl::PointXYZRGBA&amp;amp;gt;::Ptr search(new pcl::search::KdTree&amp;amp;lt;pcl::PointXYZRGBA&amp;amp;gt;); pcl::MovingLeastSquares&amp;amp;lt;pcl::PointXYZRGBA, p
PLY点云数据在PCL中读取与显示
今天开始着手处理PLY数据,由于之前没有接触过PCL,所以连最简单的数据读取与显示都搞了半天,现在将代码公布出来以供参考。 使用的环境是:vs2015+pcl1.8.1 #include "stdafx.h" #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;pcl/point_types.h&gt; #includ...
PCL个人学习笔记(一)——从PCD文件中读取点云数据
初学PCL,基础为零,根据朱德海老师主编的《点云库PCL学习教程》进行的学习,但是对于零基础的我来说,还是参考了网上多位大神的心得才成功运行了第一个示例程序,因此在这里总结一下遇到的问题,仅供其他零基础伙伴参考,个中错误不足之处也请大家不吝赐教。就是使用下边的示例程序进行的学习。#include &amp;lt;iostream&amp;gt; #include &amp;lt;pcl/io/pcd_io.h&amp;gt; #...
ROS中从摄像头获取PCL点云数据,并滤波后在Rviz中显示
一、点云简介    通过测量仪器得到的产品外观表面的点数据集合也称之为点云,通常使用三维坐标测量机所得到的点数量比较少,点与点的间距也比较大,叫稀疏点云;而使用三维激光扫描仪或照相式扫描仪得到的点云,点数量比较大并且比较密集,叫密集点云。        经过几十年的发展,机器人传感器领域已经发生了巨大的变化:从基于声呐的简单测距功能到现在的视觉传感器和激光扫描仪。由视觉传感器和激光扫描仪提供的大量...
3维Harris角点提取pcl实现
Harris响应一般是用在二维图像上的,用来寻找图像上的角点,算法见上一节描述,如何将二维扩展到三维呢,博主看的还不是很清楚,但是大致是这样的,对于空间上的某一个点,进行一个半径r的搜索,对于区域内的点进行pca重新确定它的主方向,我个人理解是相当于确定新的x和y方向,这样就可以类比到平面了,虽然会丢失一个维度,但是没有关系啊,对于最后一个维度,我们认为是该点拟合的x,y平面的法线方向,这也是十分...
PCL 添加噪声
添加高斯噪声#include &amp;lt;iostream&amp;gt; //标准输入输出流#include &amp;lt;pcl/io/pcd_io.h&amp;gt; //PCL的PCD格式文件的输入输出头文件#include &amp;lt;pcl/point_types.h&amp;gt; //PCL对各种格式的点的支持头文件#include &amp;lt;pcl/point_cloud.h&amp;gt;#include &amp;lt;pcl/v...
osg显示点云
利用pcl读取点云,osg显示,相比pcl中的vtk显示,osg显示点云稍微复杂一些。#include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers> #include <osg/Node> #include <osg/Geode> #include <osg/Geometry> #include <osgDB/ReaderWr
【PCL】点云栅格化2
// // Created by ethan on 18-6-6. // #include &amp;lt;iostream&amp;gt; #include &amp;lt;ros/ros.h&amp;gt; // PCL specific includes #include &amp;lt;sensor_msgs/PointCloud2.h&amp;gt; #include &amp;lt;pcl_conversions/pcl_conversio...