一种基于FAST改进的SIFT图像配准方法与流程

文档序号:16136677发布日期:2018-12-01 01:04阅读:408来源:国知局

本发明涉及图像中的特征点检测与匹配技术领域,特别涉及一种基于fast改进的sift图像配准方法。

背景技术

sift算法是由davidlowe在1999年开始发表,直到2004年才进一步完成改进,最终形成的一个较为完善的尺度不变特征变换算法。实验证明,该算法对特征点的位置、旋转和尺度信息具有较强的不变性。在现实情况中,由于被拍摄对象的状态变化、外部环境以及拍摄设备的影响,导致精准并快速的匹配两幅具有重合部分的图像较为困难。而sift特征点是在高斯差分金字塔中进行检测的,它在一定程度上解决了图像的平移变换和尺度缩放问题,并对噪声也表现出很好的稳定性,另一方面该算法在对特征点进行描述的时候包含了特征点邻域的信息,在邻域内为特征点分配主方向和多个辅助方向,这有效的解决了图像的旋转问题。另外,sift算法还对光照问题和目标遮挡问题具有很好的鲁棒性。sift在图像特征点检测中的优秀表现,使得它成为该领域应用最广泛和最有效的算法之一。

虽然sift特征点检测算法有如上所述的众多优点,但是该算法在进行特征点检测和匹配时依然存在一些缺点,其中主要的两点如下所述:(1)由于需要在尺度空间中与检测点相邻的26个像素点做比较来进行极值点检测,所以该算法在此步骤耗时较长;(2)由于为了保证特征点具有较好的鲁棒性,其描述符总共有128维,而经典的ransac特征点匹配算法复杂度高,导致匹配效率降低。



技术实现要素:

本发明针对现有技术的缺陷,提供了一种基于fast改进的sift图像配准方法,能有效的解决上述现有技术存在的问题。

为了实现以上发明目的,本发明采取的技术方案如下:

一种基于fast改进的sift图像配准方法,其特征在于,主要包括以下几个步骤:

步骤s1:输入具有重叠区域的两张待匹配图像;

步骤s2:分别对两张输入图像建立高斯金字塔;

步骤s3:分别对两个高斯金字塔建立高斯差分金字塔;

步骤s4:对高斯差分金字塔图像中每个像素点邻域内进行fast特征点检测;

步骤s5:根据步骤s4检测到的对应特征位置的尺度空间中进行插值得到特征点的精确尺度和坐标位置;

步骤s6:为步骤s5所得到的特征点分别分配方向,生成特征描述子;

步骤s7:对两个描述子集合分别建立k-dtree;

步骤s8:分别利用一个树去搜索另一个树;

步骤s9:对比两次搜索结果,如果一个特征描述子集合a的某一个特征描述子a在另一个特征描述子集合b中搜索到的最近欧式距离的描述子为b,并且特征描述子集合b中的描述子b在特征描述子集合a中搜索到最近欧氏距离的描述子为a,那么描述子a和b视为一个特征匹配点对。

进一步地,所述步骤s2具体为:对原始图像进行o-1次下采样,加上原始图像总共有o张图像,然后分别对这o张图像的每张图像都采用一组个数为i+1的高斯核函数对其进行模糊,那么输出图像有o组,每一组有i+1张图像。

进一步地,所述步骤s3具体为:根据s2生成的高斯金字塔图像,对其中每一组的i+1张图像的相邻两张图像做差分,得到dog(高斯差分)金字塔图像其中有o组图像,每组有i张图像。

进一步地,所述步骤s4具体为:对高斯差分金字塔中的每张图像进行fast特征点定位,以每个像素点为中心的半径为3个像素的圆上共16个像素点,把这16个像素点的灰度值与中心点像素点的灰度值进行比较,如果满足条件则视中心像素点为特征点。

进一步地,所述步骤s5具体为:由于按照s4所述,特征点是在离散空间上检测到的,所以其空间位置可能存在误差,需要对尺度空间高斯差分函数进行曲线拟合,可以通过拟合三维二次函数来精确确定特征点的位置和尺度。

进一步地,所述步骤s6具体为:以s5确定的特征点为中心,对其8×8邻域内的像素进行梯度方向的直方图统计,直方图中的最大值对应的方向为特征点的主方向,且以峰值大于主方向峰值80%的方向作为特征点的辅助方向。然后在以特征点为中心的4×4邻域窗口内对每个窗口统计8个梯度方向信息,生成128维的特征点描述子。

进一步地,所述步骤s7具体为:对s6生成128维的描述子,统计它们在每个维度上面的方差,对应方差最大的维度就是要进行数据切分的维度,并且对此维度上的数据进行排序,以排序后的中值作为根节点,然后将大于该中值的数据分配到右子树,将小于该中值的数据分配到左子树。重复此过程直到子区域内没有实例点时终止。

进一步地,所述步骤s8具体为:首先对描述子集合a中的每一个点在集合b生成的k-d树中搜索与其欧氏距离最近的点,并且建立数组s,索引号为描述子集合a中各点的编号,数组值为对应在b中与其欧式距离最近点的编号;然后对描述子集合b中的每一个点在集合a生成的k-d树中搜索与其欧氏距离最近的点,并且建立数组d,索引号为描述子集合b中点的编号,数组值为对应在描述子集合a中与其欧式距离最近点的编号。

进一步地,所述步骤s9具体为:对比两次搜索结果,如果一个特征描述子集合a的某一个特征描述子a在另一个特征描述子集合b中搜索到的最近欧式距离的描述子为b,且特征描述子集合b中的描述子b在特征描述子集合a中搜索到最近欧氏距离的描述子为a,那么描述子a和b视为一个特征匹配点对。即对比s8生成的两个数组s和d,把数组s的每个索引号对应的值作为在d中的索引号,并在d中查找此索引号对应的值比较该值是否和对应s的索引号相等,如果相等则匹配成功,否则匹配失败。

与现有技术相比本发明的优点在于:为了解决sift在尺度空间中进行极值检测过程繁琐及耗时的问题,提出使用fast特征检测器代替空间极值检测,在保持sift特征点对光照、旋转、平移和尺度等变换的稳定性的前提下,尽可能提高特征点检测效率。另外,针对ransac特征点匹配算法复杂度高,匹配效率低的问题,提出使用双向k-d树对特征描述子建立索引,提高特征点匹配的速度和精度。

附图说明

图1为本发明方法流程图;

图2为本发明实施例基于fast改进的sift图像配准方法流程框图;

图3为本发明实施例特征点检测的邻域示意图;

图4为本发明实施例特征点检测流程框图;

图5为本发明实施例双向k-d树的特征匹配示意图;

图6为本发明实施例双向k-d树的特征匹配流程框图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图并列举实施例,对本发明做进一步详细说明。

如图1、2所示,一种基于fast改进的sift图像配准方法,其特征在于,主要包括以下几个步骤:

步骤s1:输入具有重叠区域的两张待匹配图像;

步骤s2:分别对两张输入图像建立高斯金字塔;

步骤s3:分别对两个高斯金字塔建立高斯差分金字塔;

步骤s4:对高斯差分金字塔图像中每个像素点邻域内进行fast特征点检测;

步骤s5:根据步骤s4检测到的对应特征位置的尺度空间中进行插值得到特征点的精确尺度和坐标位置;

步骤s6:为步骤s5所得到的特征点分别分配方向,生成特征描述子;

步骤s7:对两个描述子集合分别建立k-dtree;

步骤s8:分别利用一个树去搜索另一个树;

步骤s9:对比两次搜索结果,输出匹配成功的特征点对。

所述步骤s1具体为:输入两张待匹配的图像,需要注意的是这两张图像具有部分重叠的区域。

所述步骤s2具体为:对原始图像进行o-1次下采样,加上原始图像总共有o张图像,然后分别对这o张图像的每张图像都采用一组个数为i+1的高斯核函数对其进行模糊,那么输出图像有o组,每一组有i+1张图像。

所述步骤s3具体为:根据s2生成的高斯金字塔图像,对其中每一组的i+1张图像的相邻两张图像做差分,得到dog(高斯差分)金字塔图像其中有o组图像,每组有i张图像。

如图3、4所示,所述步骤s4具体为:对高斯差分金字塔中的每张图像进行fast特征点定位。特征点检测流程具体为:将中心像素点的灰度值定义为p,并且将其半径为3个像素的圆上共16个像素点的灰度值分别定义为{p1,p2,…,p16}。首先分别计算得到p1与p差的绝对值y1、p9与p差的绝对值y9,判断y1和y9是否都大于设定的阈值x,如果满足条件则进行下一步处理,否则该中心被判定为不是特征点;然后分别计算得到p5与p差的绝对值y5、p13与p差的绝对值y13,判断y1、y5、y9、y13中的是否有三个值大于设定的阈值x,如果满足条件则进行下一步处理,否则该中心点被判定为不是特征点;进一步计算得到p2与p差的绝对值y2、p与p差的绝对值y3、p4与p差的绝对值y4、p6与p差的绝对值y6、p7与p差的绝对值y7、p8与p差的绝对值y8、p10与p差的绝对值y10、p11与p差的绝对值y11、p12与p差的绝对值y12,判断{y1,y2,…,y13}中是否有九个值大于设定阈值x,如果满足条件则中心点被判定为特征点,否则中心点被判定为不是特征点。

所述步骤s5具体为:由于按照s4所述,特征点是在离散空间上检测到的,所以其空间位置可能存在误差,需要对尺度空间高斯差分函数进行曲线拟合,可以通过拟合三维二次函数来精确确定特征点的位置和尺度。

所述步骤s6具体为:以s5确定的特征点为中心,对其8×8邻域内的像素进行梯度方向的直方图统计,直方图中的最大值对应的方向为特征点的主方向,且以峰值大于主方向峰值80%的方向作为特征点的辅助方向。然后在以特征点为中心的4×4邻域窗口内对每个窗口统计8个梯度方向信息,生成128维的特征点描述子。

如图5、6所示,所述步骤s7具体为:对s6生成128维的描述子,统计它们在每个维度上面的方差,对应方差最大的维度就是要进行数据切分的维度,并且对此维度上的数据进行排序,以排序后的中值作为根节点,然后将大于该中值的数据分配到右子树,将小于该中值的数据分配到左子树。重复此过程直到子区域内没有实例点时终止。

所述步骤s8具体为:经过前述几个步骤已经对两张待匹配图像分别生成了特征描述子,并且对两个特征描述子集合建立了k-d树,那么接下来就是一个相互搜索的过程。首先对描述子集合a中的每一个点在集合b生成的k-d树中搜索与其欧氏距离最近的点,并且建立数组s,索引号为描述子集合a中各点的编号,数组值为对应在b中与其欧式距离最近点的编号;然后对描述子集合b中的每一个点在集合a生成的k-d树中搜索与其欧氏距离最近的点,并且建立数组d,索引号为描述子集合b中点的编号,数组值为对应在描述子集合a中与其欧式距离最近点的编号。

所述步骤s9具体为:对比两次搜索结果,如果一个特征描述子集合a的某一个特征描述子a在另一个特征描述子集合b中搜索到的最近欧式距离的描述子为b,且特征描述子集合b中的描述子b在特征描述子集合a中搜索到最近欧氏距离的描述子为a,那么描述子a和b视为一个特征匹配点对。即对比s8生成的两个数组s和d,把数组s的每个索引号对应的值作为在d中的索引号,并在d中查找此索引号对应的值比较该值是否和对应s的索引号相等,如果相等则匹配成功,否则匹配失败。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的实施方法,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1