继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

对于SIFT,PCA-SIFT,SURF几种特征提取方法的比较

德玛西亚99
关注TA
已关注
手记 410
粉丝 92
获赞 559

文献 A Comparison of SIFT,PCA-SIFT and SURF

原文作者:Luo Juan,Oubong Gwun

出处:IJIP

主要结论

  1. SIFT 在大多数的情境下都可以保持稳定性,但是运行效率不高。

  2. SURF 兼顾了效率与效果

  3. PCA-SIFT 对于旋转和光照的影响适应的较好

几种提取方法的发展历程

  • 2004  Lowe 提出SIFT特征对于图像的尺度和旋转保持不变,之后广泛应用于图像马赛克、识别、以及检索

  • Ke and Sukthankar 使用PCA来代替归一化gradient patch 代替直方图(没明白这里具体是什么意思)
     他们认为基于PCA的局部描述对于图像的变形有很好的鲁棒性,但是这种提取方法很慢

  • 2006 Bay and Tuytekaars 使用积分图的方式来加速PCA-SIFT(PCA-SIFT的快速算法)用来进行图像卷积和Fast-Hessian 检测,即SURF。

相关概念

比较方法



  • 使用KNN 和 RANSAC 来对三种方法的识别结果进行评价


KNN(K最邻近算法,使用一个样本的最近的K个样本来表示该样本)。
 KNN算法主要使用加权投票法,即根据距离的远近,对邻近的投票进行加权,距离越近权重越大(权重为距离平方的倒数)。    
 优点:易于实现,无需训练

缺点:计算量大,分析速度慢

以上KNN内容引用自CSDN博客 KNN算法描述

RANSAC算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。

实现步骤:

  1. 在数据中随机选择几个点设定为内群。

  2. 计算适合内群的模型

  3. 把其他刚才没有选到的点带入刚才建立的模型中,计算是否为内群

  4. 记下内群数量

  5. 重复以上步骤多次

  6. 比较哪次计算中内群数量最多,内群最多的那次所建的模型就是我们所要求的解

iterations = 0best_model = null
best_consensus_set = null
best_error = 无穷大while ( iterations < k )
maybe_inliers = 从数据集中随机选择n个点
maybe_model = 适合于maybe_inliers的模型参数
consensus_set = maybe_inliersfor ( 每个数据集中不属于maybe_inliers的点 )if ( 如果点适合于maybe_model,且错误小于t )
将点添加到consensus_setif ( consensus_set中的元素数目大于d )
已经找到了好的模型,现在测试该模型到底有多好
better_model = 适合于consensus_set中所有点的模型参数
this_error = better_model究竟如何适合这些点的度量if ( this_error < best_error )
我们发现了比以前好的模型,保存该模型直到更好的模型出现
best_model =  better_model
best_consensus_set = consensus_setbest_error =  this_error
增加迭代次数
返回 best_model, best_consensus_set, best_error1234567891011121314151617181920212223
Data       一组观测数据
Model     适应于数据的模型
 n        适应于模型的最小数据个数
 k        算法的迭代次数
 t         用于决定数据是否适应于模型的阈值
 d         判定模型是否适用于数据集的数据数目
参考链接:http://blog.csdn.net/pi9nc/article/details/26596519Best_model  与数据最匹配的模型参数(没有返回null)
Best_consensus_set 估计出模型的数据点
Best_error   跟数据相关的估计出的模型错误12345678910

以上RANSAC内容引用自CSDN博客RANSAC算法详解

Overview

1. SIFT Detectors

SIFT 的四个阶段
 1. scale-space extrema detection  通过高斯卷积构造不同尺度空间的图像,从而找出对于尺度变换和角度变换不敏感的点。通常使用DOG算子来代替高斯卷积
 2. keypoint localization 点定位  拒绝低对比度的点
 3. 对一个区域内的样点生成一个方向直方图从而得到方向的分布
 4. 文章中使用4*4 的八个方向的直方图数组来描述,所以SIFT的descriptor有128维

2. PCA-SIFT detector
  • 使用PCA对提取到的特征进行降维,即PCA-SIFT使用主成分而不是直方图来对gradient patch 进行归一化。

  • 这个特征向量比标准的SIFT特征占用更小的空间

  • PCA-SIFT也使用欧氏距离来判断两个向量是不是对应同一个特征点

  • PCA-SIFT对水平和竖直的梯度图进行连接得到输入向量

3. SURF
  • SURF不使用降采样和高斯模糊的方式构建图像金字塔,而是使用积分图来构建一个栈,使用盒式滤波器来对这个栈进行过滤,并且使用这种方式可以保证在常数时间内完成计算。

  • 在特征点匹配阶段,将nearest neighbor 定义为距离描述向量欧式距离最近的特征点。

对比结果

这里写图片描述

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP