不多说,直接上干货!
PCA-SIFT算法在描述子构建上作了创新,主要是 将统计学中的主成分分析(PCA)应用于对描述子向量的降维,以提高匹配效率 。
PCA 的原理是:一般有效信号的方差大,噪声的方差小;通过PCA可以降维滤除噪声,保留信号。
1、算法分析
PCA-SIFT与标准SIFT有相同的亚像素位置(sub-pixel),尺度(scale)和主方向(dominant orientations),但在第4步计算描述子的时候,它用特征点周围的41×41的像斑计算它的主元,并用PCA-SIFT将原来的2×39×39维的向量降成20维,以达到更精确的表示方式。
算法步骤如下:
(1)构建描述子的区域选定为以特征点为中心的41X41矩形(已与特征点主方向对齐);
(2)计算39x9矩形内每个像素对水平、垂直两个方向的偏导数(最外层像素不计算偏导数)。得到一个39x39x2=3042维的向量,对其归一化;
(3)假设有N个特征点,那么所有特征点描述子向量构成一个Nx3042的矩阵。对这N个向量计算NxN协方差矩阵;
(4)计算协方差矩阵的前k个最大特征值所对应的特征向量,这k个向量组成一个3042xk的投影矩阵;
(5)将Nx3042的描述子矩阵与3042xk的投影矩阵相乘,得到Nxk的矩阵,即降维描述子向量组成的矩阵。此时N个特征点的描述子向量均为k维。文中作者经过实验,取k=36。
算法步骤还有另一种描述,见这里。
该算法的创新之处 在于降低描述子维度的同时滤除了部分描述子向量中的干扰信息,有较好的鲁棒性 。同时该算法为后人研究描述子打开了一个方向,例如GLOH算法在描述特征点时也是用PCA将16*17维的向量降为40维,但GLOH算法构建描述子的方法不同,它是基于对数极坐标来构建的。
2、比较
(1)结果比较:PCA-SIFT所得的描述子在旋转、尺度变换,透视变换,添加噪声匹配的情形下,匹配均大幅领先于SIFT;在亮度变换时,与传统SIFT不相上下。在匹配时所得的正确点对也多于传统SIFT。可见PCA-SIFT生成的描述子质量很高。SIFT和PCA-SIFT的比较 。在运行时间方面,PCA-SIFT在特征点提取、描述子计算中略快于SIFT;但在后续的描述子匹配过程中,PCA-SIFT的速度大大超过SIFT的速度。
(2)优缺点比较:
△ SIFT:
维数:128
缺点:维数高、不完全的仿射不变
优点:需要较少的经验主义知识,易于开发
△ PCA-SIFT:
维数:可变,推荐20或者更少
缺点:不完全的仿射不变;投影矩阵需要一系列有代表性的图像;这个矩阵只对这类图像起作用
优点:保留不变性的同时低维,大大减少了计算时间。
参考资料:
【特征匹配】PCA-SIFT原理及源码解析
PCA-SIFT特征分析(提升篇)PCA-SIFT
PCA-SIFT:一个更鲜明地局部图像描述符特征提取方法 SIFT,PCA-SIFT,GLOH,SURF
SURF PCA-SIFT and SIFT 开源代码 总结
谈谈SIFT、PCA-SIFT、SURF及我的一点思考
SIFT算法详解