PCL学习笔记四:3D feature in PCL

介绍一下3D特征抽取

理论原型

Rusu在他的博士论文中讲到:点,在3D绘图系统中,是用笛卡尔坐标系下,相对给定原点的x,y,z值定义的。假定坐标系原点不随时间变化而改变,那么可能存在两个分别在t1和t2时刻得到的p1和p2点,具有相同的坐标。比较这些点实际是病态的,因为即使它们相对于某距离度量(如欧氏度量)相等,也可以是完全不同的表面上采样得到的,因而当与其附近其他点一同考虑时,代表着完全不同的信息。因为实际生活中,无法保证t1和t2之间世界没有改变。有些采集设备可能提供采样点额外信息,如采样点强度,surface remission value,颜色,但不能完全解决此问题,这种比较仍然模棱两可。

出于各种原因,为了用更好的特性和度量来区分几何表面,笛卡尔坐标系下的三维点作为一个单一实体的概念消失了,取而代之的是一个新的概念——局部描述子(local descriptor)。类似的概念还有shape descriptor,或geometric descriptor。本文后面描述时将称其为point feature representaion。

通过包括周围相邻点,采样暗含的曲面几何体可以从特征表达中推断出来。这有助于解决模糊比较的问题。在理想的情况下,对在相同或类似表面上的点,所得到的特征将非常相似(相对于一些度量);不同表面上的点得到的特征不同。如下图所示。好的特征表示存在如下标准:

  • 刚性变换 ——三维旋转和平移不影响所得特征向量F估计;
  • 采样密度可变—— 局部曲面块采样密度变化,特征向量签名不变;
  • 噪音—— 在存在轻度噪声的情况下, 特征向量不变。

PCL学习笔记四:3D feature in PCL_第1张图片

一般,PCL用快速kd树查找法决定有多少点作为相邻点,需要:

  • 决定哪k(用户输入参数)个作为相邻点(k-search);
  • 所有相邻点处于以目标点为球心,半径为r的球内(r-search).

(k,r的选取见Rusu的论文)

如何输入数据

setInputCloud (PointCloudConstPtr &)       -必选

setIndices (IndicesConstPtr &)                     -可选

setSearchSurface (PointCloudConstPtr &)   -可选

共四种可能,用到setSearchSurface()时,最常见的情况是输入数据量很大,想在keypoints或降维了的点云(pcl::VoxelGrid<T> filter)。做法是:setInputCloud(downsampled/keypoints);setSearchSurface(the original data).

Normal Estimation表面法向量

综上,先搜索到临近点,再用来估计局部特征表现(最能描述被搜索点附近的几何曲面)。描述几何曲面,首先要解决的问题是——找出曲面在坐标系中的方向,即法向量。表面法向量在CG应用中经常用于计算光源,投影和其他视觉效果。由于实际得到的是曲面抽样点,以下两种计算法向量方法:

  1. 从点云获取表面,生成表面mesh,再算法向量;
  2. 从点云直接近似推出法向量。

下面用的是方法2。

理论基础

(未完待续。。。)

你可能感兴趣的:(PCL学习笔记四:3D feature in PCL)