检测原理
该算法在尺度空间中寻找极值点并提取出其位置、 尺度、 旋转不变量信息,提取的特征对视角变化、 仿射变换、 噪声具有一定的鲁棒性,对尺度缩放、 旋转具有较好的不变性。
SIFT关键点检测主要包括生成尺度空间构建、 空间极值点检测、 稳定关键点的精确定位、 确定稳定关键点的方向信息四个步骤。 在此,以SIFT 2D关键点检测为例介绍算法流程。
1.尺度空间构建
意义:建立观看物体近处清楚远处模糊的特性
一个图像的尺度空间表示为L(x,y,σ),其定义为原始图像I(x,y)与一个可变尺度的二维高斯核函数G(x,y,σ)的卷积运算,即
其中二维高斯核函数G(x,y,σ)=1/2πσ^2e^−x^2+y^2/2σ^2 , (x,y)是空间像素坐标, σ是尺度因子。 σ的大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。
2.空间极值点检测
在检测极值点时,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的2×9个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
一个像素点如果在尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点。
3.稳定关键点的精确定位
通过拟合三维二次函数以精确定位特征点的位置和尺度(达到亚像素精度),同时去除低对比度的关键点和不稳定的边缘响应点(DoG算子会产生较强的边缘响应),以增强匹配稳定性,提高抗噪声能力。
用尺度函数在尺度空间的泰勒展开式为:
其中,向量X=(x,y,σ),对D(X)进行求导并使一阶导数为0。可得特征点精确位置的偏移向量:
将X ̂加到原特征点的坐标,即得到特征点的亚像素精确估计。极值点精确位置方程的值为:
对于在尺度金字塔中检测出的关键点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。每个像素的梯度模m和方向θ分别为:
其中L所用的尺度为每个关键点各自所在的尺度
三维点云的SIFT 3D关键点检测方法是由SIFT 2D算法扩展而来的。SIFT 3D算法的实现步骤如下:
(a)关键点检测过程中所涉及到的点云高斯金字塔是通过对点云数据按照不同尺寸的三维高斯分布盒子,将其分离为体素网格集的方法进行下采样得到的;
(b)将输入点云表示为I(x,y,z),将3D高斯滤波器表示为G(x,y,z,kσ)表示,其中整数k表示尺度因子。
(c)在每个尺度空间,寻找当前邻域内的高斯差分极值点作为候选的关键点;
(d)判断候选关键点是否具有高对比度,如果是则将其加入关键点集中。
SIFT算子提取特征点时只考虑高斯差分金字塔的局部邻域情况,没有从全局角度考虑特征点分布的合理性,导致检测出的特征点中可能存在某些区域特征点异常密集,而某些区域特征点又异常稀疏的情况。
利用SIFT 3D算法提取点云关键点,并基于此实现粗配准的过程。 首先基于SIFT 3D算法对源点云和目标点云检测关键点,之后为每个关键点计算FPFH特征描述子,基于两组点云的特征描述子利用随机采样一致性算法实现粗配准。