文献 A Comparison of SIFT,PCA-SIFT and SURF
原文作者:Luo Juan,Oubong Gwun
出处:IJIP
主要结论
SIFT 在大多数的情境下都可以保持稳定性,但是运行效率不高。
SURF 兼顾了效率与效果
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也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。
实现步骤:
在数据中随机选择几个点设定为内群。
计算适合内群的模型
把其他刚才没有选到的点带入刚才建立的模型中,计算是否为内群
记下内群数量
重复以上步骤多次
比较哪次计算中内群数量最多,内群最多的那次所建的模型就是我们所要求的解
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 定义为距离描述向量欧式距离最近的特征点。