第十章

  • 第一节 特征描述与提取的概念及相关算法
    • 3D形状内容描述子
    • 旋转图像
  • 第二节 点云特征描述与提取入门级实例
    • pcl中描述三维特征相关基础
    • 估计一个点云的法向量
      • PCA降维
      • PCA降维与SVD奇异值分解之间的关系
      • 点云法向量估计和PCA之间的关系
      • 出现的问题

https://robotica.unileon.es/index.php?title=PCL/OpenNI_tutorial_4:3D_object_recognition(descriptors)
上述PCL/OpenNI tutorial官方网页,关于这一章的各个特征点的解释写的非常好

第一节 特征描述与提取的概念及相关算法

3D形状内容描述子

比较简单,看书即可~

旋转图像

旋转图像官方解释
https://robotica.unileon.es/index.php?title=PCL/OpenNI_tutorial_4:3D_object_recognition(descriptors)#Spin_image

The Spin Image (SI) is the oldest descriptor we are going to see here. It has been around since 1997, but it still sees some use for certain applications. It was originally designed to describe surfaces made by vertices, edges and polygons, but it has been since adapted for point clouds. The descriptor is unlike all others in that the output resembles an image that can be compared with another with the usual means.
自旋图像(SI)是我们将在这里看到的最古老的描述子。它自1997年就出现了,但在某些应用中仍有一些用途。它最初设计用于描述由顶点、边和多边形构成的曲面,但后来被改编用于点云。这个描述子不同于所有其他描述子,因为这种算法形成的描述子输出类似于一个图像,可以用通常的方法与另一个图像进行比较。
The support structure used is a cylinder, centered at the point, with a given radius and height, and aligned with the normal. This cylinder is divided radially and vertically into volumes. For each one, the number of neighbors lying inside is added up, eventually producing a descriptor. Weighting and interpolation are used to improve the result. The final descriptor can be seen as a grayscale image where dark areas correspond to volumes with higher point density.
使用的支撑结构是一个圆柱体,以点为中心,具有给定的半径和高度,并与法线对齐。这个圆柱体在径向和垂直方向上被分成若干体积。对于每一个,将内部邻居的数量相加,最终生成一个描述符。使用加权和插值来改进结果。最后的描述符可以看作是灰度图像,其中暗区域对应于具有较高点密度的体积

高清大图链接:
https://robotica.unileon.es/index.php?title=File:Spin_images.png

这个例子一出其实书上内容很容易理解了,需要特别注意,右边的三幅图像这个不是投影!不是投影!不是投影!,一看这样很容易就把这个错误理解成了在切平面上的投影,其实是两个概念!!!投影的话β其实已经没有了,但是这个坐标轴上是有β的!!!右边spin-image标签的图像其实就是旋转图像描述子了(Spin Image descriptor )

第二节 点云特征描述与提取入门级实例

pcl中描述三维特征相关基础

这一小节书里写的真抽象
首先我们要明确,我们在调用点云进行相应的计算时,有三个函数可供我们选择,分别是setInputCloud(),setIndice(),和setSearchSurface(),分别代表输入的点云集合,点云的索引和点云的搜索平面.因为setInputCloud()是必须的,我们每次都必须输入一个点云集合,所以对待确定的输入进行组合就变成了四种,如下图所示

首先我们给定两个点云集合,P和Q,两个集合中的点分别用p1,p2…pn以及q1,q2…qm表示
依次对上述四种情况进行讨论

  • 情况1,索引和搜索平面都不给定
    这是最常见的情况,大部分时候都是只给定一个点云集合,假设给定集合P,首先pcl会给P创建一组索引,这个索引包含P中的所有点,然后依次对索引中的点进行近邻搜索,依次搜索p1邻域,然后p2邻域…直到对P中的所有点都完成邻域搜索
  • 情况2,只给定索引,不给定搜索平面
    这种情况也很常见,比如我们假设给定的索引是集合P中所有点中编号(索引)为奇数的点,p(2k+1),那么索引为偶数的点就不会被执行近邻搜索的操作.
  • 情况3,只给定搜索平面,不给定索引
    我们假设给定的搜索平面是Q,setInputCloud()输入的是P
    这种情况其实就相当于,情况2中集合P的所有点的索引都被给定了,但是是在Q上进行搜索的,不是P了
  • 情况4,给定搜索平面也给定索引
    假设给定搜索平面是Q,输入P,给定的索引是P中的编号为奇数的点
    与情况2是类似的,无非就是把情况2中对P本身的近邻搜索更换成了Q,搜索的索引还是P中编号为奇数的点

采用这四种方法的根本目的是为了节省计算,我们当然可以对吧点云的所有点都执行近邻点搜索计算,但是,在很多时候我们感兴趣的点往往只是点云中的一部分,举个例子,还是两个点集P和Q,P是从Q中筛选出来的关键点,这时候我们就可以对应情况3,把P设置为setinputcloud,Q设置为搜索平面,这样其实就相当于是对一个点云集合中的关键点执行了近邻点搜索的计算,在对关键点进行的后续计算中,大大节省了计算量.

估计一个点云的法向量

参考博客:
3D【24】PCA点云法向量估计
如何直观地理解「协方差矩阵」?
PCA(主成分分析)原理推导

b站的up同济小旭学长视频讲解PCA,SVD奇异值分解的部分也非常值得一看!

用最直观的方式告诉你:什么是主成分分析PCA
【学长小课堂】什么是奇异值分解SVD–SVD如何分解时空矩阵

PCA降维

PCA降维与SVD奇异值分解之间的关系

点云法向量估计和PCA之间的关系

出现的问题

运行法向量估计部分的代码
在运行书中代码时候出现警告:传递给寻找包的句柄的变量名openni,与调用的包的名称pcl不一致

The package name passed to `find_package_handle_standard_args` (openni) does not match the name of the calling package (PCL).

查到的解决办法
Ubuntu18.04编译pcl时警告以及找不到vtk
https://github.com/gnuradio/gnuradio/issues/3581
https://github.com/PointCloudLibrary/pcl/issues/3680

直接忽略掉报的警告,但是这样可执行程序还是无法生成
这个错误太逆天了,竟然是因为忘记make了,实际上make一下就能解决了
下面的代码添加到CMakeLists里面就能消除这些警告了

if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS)set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings")
endif()
if(NOT PKG_CONFIG_FOUND)INCLUDE(FindPkgConfig)
endif()

点云库pcl从入门到精通 第十章相关推荐

  1. 点云库PCL学习笔记 -- 点云滤波Filtering -- 3. StatisticalOutlierRemoval 统计滤波器

    点云库PCL学习笔记 -- 点云滤波Filtering -- 3.StatisticalOutlierRemoval 统计滤波器 StatisticalOutlierRemoval 统计滤波器相关简介 ...

  2. 学习笔记:点云库PCL(Point Cloud Library )介绍

    本文简要介绍点云库(PCL),一个用于处理2D和3D数据的开源库,如激光雷达点云. 通过熟悉使用PCL的一些基础知识,以便后续使用PCL进行定位.主要涵盖以下内容: 点云数据Point Cloud D ...

  3. 《PCL从入门到精通学习》第六章点云滤波

    最近发现了一个很好的博客:https://blog.csdn.net/longer88888/article/details/104751036,里面对pcl和相关滤波解释的相当清楚.朱德海老师书中源 ...

  4. 一文详解点云库PCL

    3D is here: Point Cloud Library (PCL) 摘要: 随着新型,低成本的3D传感器硬件的出现(例如Kinect),以及科研人员在高级点云处理研究上的不断努力,3D感知在机 ...

  5. python从入门到精通pdf百度云下载-Python从入门到精通PDF高清完整版免费下载|百度云盘...

    提取码:xahb 内容简介 <Python从入门到精通>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术.全书共分22章,包 ...

  6. python从入门到精通百度云资源-Python从入门到精通(资源汇总)

    1.入门阶段 [The Python Tutorial* 零基础入门学习Python ** 网易云课堂,老师诙谐幽默,上手快 2.拔高阶段 最好自己动手写一些项目,一定要使用GitHub 3.方向进阶 ...

  7. 点云库PCL模块介绍(二)

    7.关键点 关键点也称为兴趣点,它是 2D 图像或 3D 点云或曲面模型上,可以通过定义检测标准来获取的具有稳定性.区别性的点集. 从技术上来说,关键点的数量相比于原始点云或图像的数据量减小很多,与局 ...

  8. ubuntu16.04使用prebuilt binaries 方法安装点云库PCL

    网上的许多PCL安装教程都提到网络原因导致按官网教程无法成功安装PCL,因而提出使用源码安装之.不久前在服务器上成功用prebuilt文件安装了PCL,今天在另一台电脑上却装不上. 思来想去可能是更换 ...

  9. ubuntu下点云库pcl错误问题集

    1.           https://blog.csdn.net/unlimitedai/article/details/86481912    参考的链接 错误问题: yuhaiwei@yuha ...

最新文章

  1. 总结一下“网络连接受限制”无法上网的解决办法
  2. VITIS 2019.2使用非正式测评
  3. 2019年上海市数学建模讲座笔记(2)概率统计模型
  4. LaTeX技巧如何拆分源文件并且分别编译
  5. 策略(strategy)模式
  6. Django从理论到实战(part42)--QueryDict对象
  7. ftp无法连接虚拟机_一步步编写操作系统4 安装x86虚拟机 bochs
  8. unzip 解压_每天一条Linux命令(11) unzip (超详细)
  9. 计算机考研择校真的要选大城市吗,2020考研,择校前要考虑的6大问题
  10. http-server 简介 复制的
  11. 可以发外链的网站_可以发外链的地方有哪些?-top推
  12. 【SpringCloud】Spring cloud Alibaba Nacos 集群和持久化配置
  13. 数据结构HashMap(Android SparseArray 和ArrayMap)
  14. 注册 aspnet_regiis
  15. eclipse与myeclipse恢复已删除的文件和代码
  16. python中pygame放入图_python使用PyGame绘制图像并保存为图片文件的方法
  17. NVIDIA Nsight Compute,Nsight Systems, Nsight Graphics,Nsight Deep Learning Designer简介-草稿
  18. 单片机蓝牙模块与手机蓝牙通信(4)
  19. SQL Server列转行
  20. 电子商务的未来谁主宰?

热门文章

  1. Linux中的阻塞机制
  2. Python 文件查找
  3. linux计划任务1
  4. 最完美安装amd显卡驱动方法
  5. Android 毕业设计高仿抖音(视频类App)(内附源码)
  6. 已解决SyntaxError:expected ‘:‘
  7. js PhotoSwipe库开源的手机版相册产品的Code.PhotoSwipe.attach方法使用
  8. 如何做好一名游戏测试工程师
  9. 批处理---findstr命令详解
  10. 基于JAVASE的彩票摇号系统