Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41780
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2014-12-04 22:19
个人简介

Take notes for our web server

文章分类

全部博文(14)

分类: Windows平台

2015-05-18 21:12:55

PCA-SIFT与SIFT算法的区别在于产生描述子的方式不同,其他步骤都相同。
PCA-SIFT是在特征点主方向上取一个41*41的patch,对其进行水平和垂直的梯度,得到一个39*39*2=3042维德向量,然后用PCA对其降维(论文原文推荐是到20维,具体多少维可以自己定),得到低维数的描述子;
而SIFT是在主方向上取一个16*16的patch,把这个patch分为4*4个小patch,对每个小patch在8个方向上投票求幅值,得到一个4*4*8=128维的描述子;
所以PCA-SIFT相对SIFT而言会有更快的匹配速度,但效果相比不定。

首先说一下除产生描述子以外的步骤的关键点
1.对图像高斯平滑时,用的高斯滤波与图像卷积,图像的扩展方式要以复制边界的方式而不是填充0的方式,否则边界周围会出现错误的特征点。
2.精确定位时,求的▲x是分别在x,y,σ方向上求偏导,即分别求差分。


3.去除对比度比较低的点这步很重要,会滤去大部分点,留下特征性比较强的点。
4.确定主方向时,要先对图像高斯滤波,然后再在36个方向上加权幅值投票,要注意的是高斯滤波和幅值加权不是一回事。
对于PCA-SIFT产生描述子的关键点
1.将图像旋转到主方向上的方式是在特征点周围取一个59*59的patch,这样就能保证无论这个patch怎么旋转都能取到一个41*41的patch,matlab中可以用imrotate()双线性插值对图像进行旋转。图像旋转的原理可以想象为,对坐标旋转后生成新的坐标,这个坐标可能不是整数,用这个坐标如(31.5,22.3)周围的四个点(31,22),(31,23),(32,22),(32,23)上的灰度值按着距离比例对其插值形成这个点的灰度值。
2.PCA算法中,只对其中一副图像求投影矩阵,并用这个矩阵作为公共的转换矩阵,对所有图的k*3042维特征点进行降维,记住,投影矩阵只求一次!!!
阅读(4073) | 评论(0) | 转发(0) |
0

上一篇:Git 常用命令详解(二)

下一篇:没有了

给主人留下些什么吧!~~