课程小结——SURF特征提取

       Surf(Speeded Up Robust Features)改进了特征的提取和描述方式,用一种更为高效的方式完成特征的提取和描述。


背景 

       计算机视觉中,引入尺度不变的特征,主要思想是每个检测到的特征点都伴随着对应的尺度因子。然而经常会遇到图像尺度不同的问题,不同图像中特征点的距离也会不同,如果通过修正特征点的大小就会造成强度不匹配。为了解决这个问题,提出了尺度不变的SURF特征检测,在计算特征点的时候把尺度因素加入其中。SURF与SIFT类似,SIFT算法比较稳定,检测特征点更多,但复杂性更高,而SURF要运算简单,效率高,运算时间也较短。


优缺点  

       Sift算法的优点是特征稳定,对旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性;缺点是实时性不高,并且对于边缘光滑目标的特征点提取能力较弱。

算法流程

1. 构建Hessian(黑塞矩阵),生成所有的兴趣点,用于特征的提取;
2. 构建尺度空间
3. 特征点定位
4. 特征点主方向分配
5. 生成特征点描述子
6. 特征点匹配
    


算法描述

1、构建Hessian(黑塞矩阵),生成所有的兴趣点,用于特征的提取       

       黑塞矩阵(Hessian Matrix)是一个多元函数的二阶偏导数构成的方阵,描述了函数的局部曲率。surf构造的金字塔图像与sift有很大不同,Sift采用的是DOG图像,而surf采用的是Hessian矩阵行列式近似值图像。Hessian矩阵是Surf算法的核心,构建Hessian矩阵的目的是为了生成图像稳定的边缘点(突变点),为下文的特征提取做好基础。

       每一个像素点都可以求出一个Hessian矩阵:
                                                       

             Hessian矩阵的判别式为:
                                                                                                       

       当Hessian矩阵的判别式取得局部极大值时,判定当前点是比周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置。

       在SURF算法中,图像像素l(x,y)即为函数值f(x,y)。但是由于我们的特征点需要具备尺度无关性,所以在进行Hessian矩阵构造前,需要对其进行高斯滤波,选用二阶标准高斯函数作为滤波器:

                                                                 

        通过特定核间的卷积计算二阶偏导数。通过特定核间的卷积计算二阶偏导数,这样便能计算出H矩阵的三个矩阵元素Lxx, Lxy, Lyy从而计算出H矩阵:

                                                          

       由于高斯核是服从正态分布的,从中心点往外,系数越来越低,为了提高运算速度,Surf使用了盒式滤波器来近似替代高斯滤波器,提高运算速度。盒式滤波器(Boxfilter)对图像的滤波转化成计算图像上不同区域间像素和的加减运算问题,只需要简单几次查找积分图就可以完成。
       每个像素的Hessian矩阵行列式的近似值:
                                                             

在Dxy上乘了一个加权系数0.9,目的是为了平衡因使用盒式滤波器近似所带来的误差。


2、构建尺度空间

       同Sift一样,Surf的尺度空间也是由O组L层组成,不同的是,Sift中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大;而在Surf中,不同组间图像的尺寸都是一致的,但不同组间使用的盒式滤波器的模板尺寸逐渐增大,同一组间不同层间使用相同尺寸的滤波器,但是滤波器的模糊系数逐渐增大。
                                           

3、特征点定位

       特征点的定位过程Surf和Sift保持一致,将经过Hessian矩阵处理的每个像素点与二维图像空间和尺度空间邻域内的26个点进行比较,初步定位出关键点,再经过滤除能量比较弱的关键点以及错误定位的关键点,筛选出最终的稳定的特征点。

                                                                     

4、特征点主方向分配

       Sift特征点方向分配是采用在特征点邻域内统计其梯度直方图,而在Surf中,采用的是统计特征点圆形邻域内的harr小波特征。在特征点的圆形邻域内,统计60度扇形内所有点的水平、垂直harr小波特征总和,然后扇形以一定间隔进行旋转并再次统计该区域内harr小波特征值之后,最后将值最大的那个扇形的方向作为该特征点的主方向。

                                                       

5、生成特征点描述子

       在Sift中,是取特征点周围4*4个区域块,统计每小块内8个梯度方向,用着4*4*8=128维向量作为Sift特征的描述子。Surf算法中,也是在特征点周围取一个4*4的矩形区域块,但是所取得矩形区域方向是沿着特征点的主方向。每个子区域统计25个像素的水平方向和垂直方向的haar小波特征,这里的水平和垂直方向都是相对主方向而言的。该haar小波特征为水平方向值之后、垂直方向值之后、水平方向绝对值之后以及垂直方向绝对值之和4个方向。

                                                       

       这4个值作为每个子块区域的特征向量,所以一共有4*4*4=64维向量作为Surf特征的描述子,比Sift特征的描述子减少了一半。


6、特征点匹配

       与Sift特征点匹配类似,Surf也是通过计算两个特征点间的欧式距离来确定匹配度,欧氏距离越短,代表两个特征点的匹配度越好。不同的是Surf还加入了Hessian矩阵迹的判断,如果两个特征点的矩阵迹正负号相同,代表这两个特征具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度变化方向是相反的,即使欧氏距离为0,页直接予以排除。


详细描述见链接http://blog.csdn.net/songzitea/article/details/16986423


程序实现

matlab源代码链接http://blog.csdn.net/u010278305/article/details/42684723



---------------------------------------------------------------------------------------------------------------------------------------------------------

References

http://blog.csdn.net/songzitea/article/details/16986423


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值