【图像处理】SIFT特征点学习

原文:http://blog.sina.com.cn/s/blog_9c8bc82b0101bw02.html



一、尺度不变性

尺度不变性的根本原因:极值点在提取上是在尺度空间上提取的,极值点的描述又是在尺度空间上建立的,因此具有尺度不变性。

尺度空间的构成:尺度空间由两部分构成,一部分为高斯(Gaussian)图像空间,一部分为高斯差分(DOG)图像空间,每一个Octave之间为如果为s层,则需要的Gassian图像数目为s+3。以s = 2为例子。在DOG空间中,每一个Octave由4副图像构成,极值点在中间的两幅图像产生(s = 2),上下两幅图像则是用来做极值点提取时的辅助图像(4副DOG图像)。而生成4副DOG图像则需要(2+3)副Gassian图像。

对于尺度不变性的理解:一个点,在距离远的时候是特征点,在距离近的时候因为纹理的逐渐的丰富,则不再是一个特征点,而变成了一块patch,如果把这一部分patch进行下采样,构建图像金字塔,则细节部分逐渐模糊,从而在某一层金字塔上具有和原来特征点相似的描述,这样就达到了匹配的结果。同样,当特征点的距离逐渐变远时,由于原来点的描述就是建立在多层的图像金字塔上的,因此在原来的特征点的金字塔中同样也可以找到相似的描述,这就是所说的尺度不变性。一句话概括,对于同一个特征来说,如果你把原始点和待匹配的点的描述都建成一个连续的无穷深的金字塔,总会有两组金字塔中的纹理是相似的,当然在现实中,只选取2-3个Octave也就可以了。




二、旋转不变性

旋转不变的主要原因是特征点被指定了主方向,然后通过这个主方向构建成了一个具有旋转不变描述。

所使用的图像:在统计patch中每一个像素点方向的时候,是在距离当前当前极值点最近的(因为金字塔是离散的,因此这里使用“最近的”这个严格的表达方式)一个sigma图层上统计的,也就是极值点所在的DOG图像(对应sigma)所对应的Gassian图像。

主方向的计算:对于每一个象素点,旋转方向为y轴梯度和x轴梯度比值的反正切函数,梯度的2范数作为其幅值。把[0,2pi]分为36个bin,然后统计角度直方图。需要注意的两点是:第一,这个直方图统计的不是落入某一个bin里面的方向的数目,而是每个方向乘以幅度后的值。第二,幅度是经过高斯加权后的值,这主要出于下面的考虑,距离特征点近的象素应该对于特征点的方向影响更大,而距离较远的应该影响小一些,这个加权函数是1.5*sigma的高斯函数。这样得到直方图后,找到极值点所对应的角度,即为主方向。当然可能会统计出多个接近的主方向,实验表明,这样的点只占15%左右,因此多数情况下是直接将这样的点去掉的。

构建具有旋转不变性的描述:计算出主方向后,则需要将特征点周围的方向全部旋转一个主方向的角度,这样相当于将patch转正,主方向为x轴。此后,把patch周围的象素点分为4*4个bin,然后在每一个bin中统计8个方向的梯度强度的直方图,因此一共有4*4*8 = 128维的信息。由于所有的点的描述都是在主方向为0度的情况下建立的,因此就构成了一个具备旋转不变的描述。这也就相当于每来一个特征点,都把它所在的patch转正后再匹配,因此无论一个点的怎么旋转,匹配都是在转正后的patch上匹配的,此匹配与旋转无关,这就是旋转不变的原因。

三、光照不变性

Sift点也具有一定的光照不变性,这个原因主要是在均匀光照下,象素之间的梯度是不会改变的,因此光照的变换不会影响描述的建立。但是当光照是非均匀,出现阴影或者高光的情况下,光照不变性则要大打折扣。在图像层面上,并没有严格的光照不变的特征,谁让图像本身是记录的是光度信息呢。


四、极值点的提取

        一个函数二阶导的极值点就是函数的极值点,LOG图像实际上为图像的二阶导。DOG是LOG的近似,因此在DOG图像上找极值点就相当于找到原来图像上的极值点。

         提取极值点:极值点是DOG图像空间上相邻的三层图像来决定的,实际上相当于在一个3*3*3的立方体中(1+8+9+9 = 27个象素)寻找极大值或者极小值,这样提取的极值点只是近似值,原因是DOG空间是离散的。有个这个近似值,就可以通过子像元差值的方法(泰勒展开,求极值)来得到一个精炼后的极值点位置以及其数值。

        极值点的精炼:精炼后的极值点坐标如果相对于差值中心点(初始值)距离超过0.5个象素,说明这个值已经偏移到了邻近象素,也就是差值函数过于平滑,这个极值点不稳定,则删除;如果极值点的数值小于0.03的时候,说明这个极值和周围的区分度并不大,也删除。


         边缘点的删除:边缘点的判断是根据极值点邻域的曲率来判断的,曲率大的时候,则是边缘点的可能性较小,反之,则较大。曲率可以使用Hessian矩阵特征值之间的比率来计算。这个和Harris点是一样的。Lowe在论文中将这个曲率的比率设置为10,大于10则删除,反之,则保留。


你可能感兴趣的:(SIFT,图像处理,Machine,Learning,机器学习算法理论与实战)