-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathorb
33 lines (31 loc) · 4.7 KB
/
orb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
SIFT特征提取算子
SIFT(Scale-invariant feature transform)是一种检测局部特征的算法,该算法通过求一幅图中的特征点(interest points,or corner points)及其有关scale 和 orientation 的描述子得到特征并进行图像特征点匹配,获得了良好效果。
算法描述
SIFT特征不只具有尺度不变性,即使改变旋转角度,图像亮度或拍摄视角,仍然能够得到好的检测效果。整个算法分为以下几个部分:
(1)构造尺度空间:尺度空间理论目的是模拟图像数据的多尺度特征,DoG尺度空间;
(2)检测DoG尺度空间极值点;
(3)去除不好的特征点;
(4)给特征点赋值一个128维的方向参数。每个关键点都包含三个信息:位置、尺度和方向;
(5)关键点描述子的生成:首先将坐标轴旋转为关键点的方向,以确保旋转不变性。以关键点为中心取8×8的窗口;
(6)最后进行特征匹配。当两幅图像的SIFT特征向量(128维)生成后,采用关键点特征向量的欧式聚类来作为相似性判定度量。取图像1中的某个关键点,并找出其与图像2中欧式距离最近的前两个关键点,在这两个关键点中,如果最近的距离除以次近的距离少于某个比例阈值,则接受这一对匹配点。降低这个比例阈值,SIFT匹配点数目会减少,但更加稳定。
详细解释:
http://blog.csdn.net/abcjennifer/article/details/7639681
SURF特征提取算子
SURF(Speeded Up Robust Features),是SIFT角点检测算法的改进版,主要体现在速度上,SURF是SIFT速度的3倍。SIFT在尺度和旋转变换的情况下匹配效果比SURF好,而SURF在亮度变化下匹配效果比较好。与SIFT的区别在于:
(1)尺度空间的建立:SIFT建立一幅图像的金字塔,在每一层上进行高斯滤波并求取DoG进行特征点的提取,而SURF用的是Hessian矩阵;
(2)SIFT特征建立图像金字塔处理尺度不变特性,而SURF特性将高斯核近似为方形滤波。
算法流程:
(1)构建Hessian矩阵,计算H矩阵判别式,判断是大于0还是小于0;
(2)构造尺度空间:不同尺度的box filters与原图片卷积,使原始图像保持不变而只改变滤波器的大小。
(3)精确定义特征点:先利用Hessian矩阵确定候选点,然后进行非极大抑制。
(4)特征点描述子的生成:在圆形区域内,计算各个扇形范围内x、y方向的haar小波响应,找模最大的扇形方向;20*20的区域划分为4*4的子区域,每个子区域找5*5个采样点,计算采样点的haar小波响应,记录∑dx,∑dy,∑|dx|,∑|dy|,一共4*4*4=64维。
性能比较
对SIFT、PCA-SIFT、SURF三种方法给出了性能上的比较,源图片来源于Graffiti dataset,对原图像进行尺度、旋转、模糊、亮度变化、仿射变换等变化后,再与原图像进行匹配,统计匹配的效果。效果以可重复出现性为评价指标。由此可见,SIFT在尺度和旋转变换的情况下效果最好,SURF在亮度变化下匹配效果最好,在模糊方面优于SIFT,而尺度和旋转的变化不及SIFT,旋转不变上比SIFT差很多。速度上看,SURF是SIFT速度的3倍。
FAST特征提取算子
FAST和它的变形方法是实时系统中用于视觉特征匹配查找关键点的主要方法,很多关键点检测模型都包含了定位算子(比如SIFT和SURF)即描述子,FAST算法却没有。BRIEF是特征向量描述子,其结果是在平滑图像块中使用简单的二进制比较两个像素的值。FAST算法并不生成角点,我们发现它在边缘上有明显特征。我们采用Harris角点(也叫特征点,关键点,兴趣点) 检测器算法来规则化局部FAST关键点。对于N个局部关键点,首先设置一个很低的阈值以足够获得N个关键点,再根据Harris角点检测器来把它们规则化,选取前N个点。FAST算法并不能产生多尺度的特征点。我们采用图像金字塔尺度模型,在金字塔的每层采用Harris滤波生成FAST关键点。
算法步骤
(1)从图片中选取一个像素P,下面我们将判断它是否是一个特征点。我们首先把它的亮度值设为PI;
(2)设定一个合适的阈值t;
(3)考虑以该像素点为中心的一个半径等于3像素的离散化的Bresenham圆,这个圆的边界上有16个像素(如图1所示);
(
(4)现在,如果在这个大小为16个像素的圆上有n个连续的像素点,它们的像素值要么都比PI+t大,要么都比PI+t小,那么它就是一个角点。(如图1中的白色虚线所示)。n的值可以设置为12或者9,实验证明选择9可能会有更好的效果。