因此,特征提取可大致描述为以下步骤:
1. 找到一系列的可区分的点
2. 在每个关键点周围划一块区域,要求要对尺度或仿射变换有不变性,即一张图像进行变换后,仍能找到该区域。
3. 将区域的内容提取出来并归一化
4. 从提取的区域数据计算出一个描述符。
接下来,我们将对这些内容进行详细介绍。
2.2.2 兴趣点及区域的检测
提取特征的第一步是找到一个有特异性的点集,要并要求在不同的条件下能稳定得到,如不同的图像状况、视角的变化及存在噪声等。人们已经开发出许多的检测算子。如Hession检测算子,可以检测到一些角落点,Harris检测算子,也是对角落点进行检测,一般而言,Harris会检测到更精确的位置,而Hession除了可以检测角落点,还会返回一些很强纹理上的点。
尺度不变特征转换(SIFT)是一种对位置、尺度及旋转都有很好的不变性的特征描述符,这里,我们要介绍其中所用到的兴趣点及区域检测所用到的方法。
为了达到尺度不变性,SIFT使用的方法是高斯差分(difference of Gaussian(DoG))。在检测兴趣点之前,生成一个尺度空间,再在其中找到极值点。SIFT使用高斯函数生成尺度空间,高斯函数为: ,再用高斯核与图像作卷积,得到图像 ,其中 表示图像在(x,y)点的像素值。该操作的直观感觉是图像变得模糊了。如图 4所示。
图 4:上图分别为t值为0,1,4,16时,经过高斯模糊后的效果。图片来自文基百科。
上述进行高斯卷积时,要遍历整幅图像以得到最后的结果。为了更有效的在尺度空间中检测到稳定的关键点,也为了缩小时间及空间复杂度,使用高斯差分(DoG)的方法来改进上述操作。利用不同尺度的高斯差分与原始图像做卷积得到结果。高斯差分算子为:
在建立的高斯金字塔相邻的层间作减法,即得到DoG层。
具体的步骤为:
1. 建立图像金字塔:对一幅图像建立高斯尺度空间,为高斯金字塔的第一个度(octave),再将图像缩小为原来的二分之一作为下一个度的原始图像,再进行同样的操作,直到足够的层。
图 5:左图为建立高斯金字塔的的两个度,右图为由高斯金字塔一个度中的层生成DoG金字塔。
2. 生成DoG金字塔:用高斯差分算子对高斯金字塔的每个度进行运算,得到对应度的DoG层。具体的算法是在高斯金字塔的每个度上的相邻层进行相减,再与图像作卷积,最后得到所要求的结果。
图 6:高斯差分提供了对高斯拉普拉斯算子的一个良好近似。通过对邻近的高斯金字塔层进行相减,我们能容易地进行计算。之后,DoG层用于后续的计算。
3. 找出关键点(keypoint)
我们采用的是尺度空间的方法来寻找感兴趣的点,前面的步骤中,我们做出了良好的尺度空间,下面的任务就是根据已经生成的尺度空间,找出相应的极值点,以确定我们所要的兴趣点。为了寻找极值点,每个采样的点都要和它所有的相邻点比较,以确定它是局部极大值或极小值点,如图 7所示,中间的检测点需要与它同尺度的8个相邻点以及相邻尺度的9x2=18个点,共26个点进行比较,以确定该点在尺度空间和二文图像空间都是极值点。
图 7:DoG尺度空间寻找极值点
当然,这样生成的点并不是稳定的点。因为计算是离散化的,得到的点并不一定是真正的极值点,为了得到极值点,保证稳定性,我们对极值点周围的分布作一个估计,用泰勒展开式
,其中 ,来描述表示极值点周围的函数,再对这个函数导数为0为条件,算出真正的极值点位置。如果真正的极值点 与原先的极值点 在每个文度上的差别都超过0.5,表明极值点更靠近另一个候选点,这种情况下,当前的候选点就被抛弃了,而选用另一个候选点;相反,如果差别不超过0.5,则对当前点做插值,以矫正当前点。 基于局部视觉特征的图像识别研究(4):http://www.youerw.com/jisuanji/lunwen_6448.html