图像处理复习(一):SIFT

来源:互联网 发布:sftp登录 端口号 编辑:程序博客网 时间:2024/05/30 23:25

SIFT 复习笔记


最近复习图像处理的知识点。以前曾经多次实践应用过SIFT/SURF,但是因为OpenCV的便利,多数时候都是拿来就用,对其原理以及内涵却欠有细思,所以特地开了一个任务线,来梳理一下相关的概念和理论。

相关概念

尺度特征:在计算特征点的时候把尺度因素加入之中,避免因为物体的尺寸不同而造成特征强度不同以至于被误认为不同物体的特征。

SIFT <–> SURF:SIFT算法比较稳定,检测特征点更多,但是复杂度较高;而SURF要运算简单,效率高,运算时间短一点

尺度空间:一个图像的尺度空间L(x,y,σ)定义为原始图像I(x,y)与一个可变尺度的2D高斯函数G(x,y,σ)卷积运算。

尺度:尺度就是受σ这个参数控制的表示 。而不同的L(x,y,σ)就构成了尺度空间

卷积:二维图像的卷积是指一个特定大小的卷积模板(此处为高斯模板),在目标图像中每一个像素点处(作为模板中心)逐像素求得的加权和(以模板像素值为加权参数)。此卷积的定义与卷积神经网络(CNN)的卷积意义相同。和传统的卷积公式不同,图像处理求卷积往往是一个离散的求加权和的过程。


算法描述

:通过降采样实现,每次取二分之一边长,即四分之一面积

:通过高斯卷积实现,越往上尺度σ越大,也就是越模糊,一般σ的值满足某个系数k的幂的递增变化:σ,kσ,k2σ...;不同塔之间的相同层的高斯模板尺度是保持不变的,但是由于逐塔进行的2倍降采样,表现出来的“模糊程度”是增加的,而且是个模糊程度均匀增加的过程。这样一来在不同的塔之间会形成一个连续的尺度空间,使得特征在尺度上得到完整的覆盖。

DOG(Difference of Gaussian): (G(x,y,kσ)G(x,y,σ))I(x,y),用于检测极值区域,该极值区域的空间尺寸大小即为所在尺度。直观上的理解便是当尺度σ扩展到kσ时,高斯分布的“边界”跨过了极值区域“边缘”,导致基于这两个模板的图像积分开始出现差异。在塔层结构中的计算方式即为同一塔内相邻尺度的层之间作差。假设塔内有s 层,则k的经验值为21/s

这里写图片描述

特征点判定:一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个SIFT特征点。对于顶层和底层,无法得到尺度空间极值,则对得到的s层高斯模糊之上再加3层,正好在作差之后使得DOG的尺度空间在不同塔之间连续覆盖。
|D(x)|过小的点易受噪声的干扰而变得不稳定,所以将|D(x)|小于某个经验值(Lowe论文中使用0.03,Rob Hess等人实现时使用0.04/S)的极值点删除。由于尺度空间是离散的,得到的极值位置并不是精确的极值点,需要通过插值拟合的方式得到极值点。该极值点包含了(x,y,σ,σoctave)四个信息,分别代表横纵坐标,DOG尺度,塔编号。
我们需要提取出的特征点,是在尺度空间上的极值点,但是边缘通常也会产生较大的DOG特征,需要用主曲率判定的方法来筛选:

H=[DxxDyxDxyDyy]

H的两个特征值为α,β
Tr(H)=α+β

Det(H)=αβ

Tr(H)2Det(H)=(α+β)2αβ为指标表示边缘属性的强弱。当该值为正且小于某一阈值时,认为是极值点,予以保留。

特征点包含了位置信息和尺度信息,但是没有抵抗旋转或者一定程度的形变的能力。故需要添加一个主方向

特征点方向
特征点方向的推出应用的是图像处理算法中非常常见的“直方图”概念。此处描述的对象是特征点的方向,而且要有相对旋转的不变性,所以采用梯度方向直方图。以最简单的情况为例,所需要做的便是以当前提取出的特征点为中心,为经过设计的邻域中各个像素处的梯度方向记次(记录梯度在不同方向上出现的次数)。在遍历了特征点领域内的所有像素后,这种记次就呈现出了一种直方图的样子。其中最高的直方所对应的方向,就被作为该特征点的主方向

这里写图片描述

因为这个梯度方向是基于特征点领域内的像素的相对关系的,所以像素的集体旋转并不会对主方向的相对位置产生影响。当然这只是最简单的方向直方,在实际应用中在描述特征点时往往会同时考虑梯度方向、大小,以及根据相对于特征点位置的距离进行加权。

关键点描述:

  1. 为特征点设定描述子邻域
    根据先前得出的特征点的主方向,确定计算描述子所需的图像区域,描述子梯度方向直方图由关键点所在尺度的模糊图像计算产生。图像区域的半径通过下式计算:

    radius=32σoctave(d+1)2

  2. 旋转坐标系
    这里写图片描述
    默认主方向在领域内的相对位置不随图像整体的旋转而发生变化。

  3. 生成描述子

这里写图片描述

按照图中表示的那样,划出4*4的区域,在每个区域内根据区域矩形内的像素为8个方向计算梯度分布。该分布同时考虑了相对特征点位置的距离加权,最后得到 4*4*8=128 维的描述子向量。
至此得到一个SIFT特征点需要的所有信息:位置,尺度(塔、层),主方向,描述子。
若要利用SIFT特征点进行匹配,一般通过计算不同待匹配特征点之间的描述子相似程度(距离)来判定。

  1. 描述子处理
    光照的强度会直接影响图像梯度的大小,在特征点的数据上则是体现在梯度绝对值上:光照较强的特征点描述的整体数值会大于光照较弱的。所以,对得到的特征点描述子进行归一化能够减轻光照变化带来的干扰
    在同一图像中,光照可能出现不均匀的情况。这样的环境带来的会是光强的一侧梯度大,光弱一侧梯度小。应对这种情况可以给梯度设立一个截断上限,高于该值的梯度值一律设为该值。在完成截断后再归一化,则可以大大减轻光照不均匀带来的影响。
    除此之外,还可以通过尺度过滤来消除纹理,也可以通过匹配时的仿射关系来去除噪声点等。这方面的方法是茫茫多的,而且都有一定的效果,一般都需要根据自身的对象的特点,或者计算资源的限制来进行取舍

原创粉丝点击