SURF算法分析

合集下载

机器视觉中基于SURF算法的目标识别研究

机器视觉中基于SURF算法的目标识别研究

机器视觉中基于SURF算法的目标识别研究第一章:引言随着计算机技术的不断发展,机器视觉技术逐渐应用于各种领域。

其中,目标识别是机器视觉技术的重要应用之一,可以在自动控制、工业制造、军事等领域中发挥重要作用。

在目标识别中,特征点检测和匹配是关键技术。

SURF算法是一种快速有效的特征点检测和匹配算法,已经得到广泛应用。

本文将介绍机器视觉中基于SURF算法的目标识别研究,具体包括SURF算法原理、SURF算法在目标识别中的应用及其优劣势分析、SURF算法在实际系统中的应用及其发展趋势等。

第二章:SURF算法原理SURF算法是加速稳健特征(Speeded Up Robust Feature)的缩写。

它是基于尺度空间理论的特征点检测和匹配算法。

SURF算法主要包括三个步骤:尺度空间构建、特征点检测和特征描述。

尺度空间构建是指先将原始图像进行高斯滤波,得到不同尺度下的图像金字塔,然后通过差分的方式得到尺度不变的DoG (Difference of Gaussian)图像组。

特征点检测是指在DoG图像组中检测出极值点,SURF算法中采用的是Hessian矩阵。

特征描述是指在检测到的特征点周围的邻域内,计算一组具有较强区分度的局部特征描述子,SURF算法中采用的是基于积分图像的Haar小波特征描述子。

第三章:SURF算法在目标识别中的应用及其优劣势分析SURF算法在目标识别中的应用主要包括两个方面:特征点检测和匹配。

特征点检测是指在图像中寻找具有独特性、稳定性和可重复性的特征点,SURF算法对尺度空间建立和特征点检测都有良好的性能,能够有效地检测到目标物体中的关键点。

匹配是指在两个图像中寻找相似的特征点,SURF算法具有较高的匹配准确率和速度,能够实现快速准确地目标匹配。

但是,SURF算法也存在一些不足之处,比如对图像旋转、缩放、变形等变化不够鲁棒,需要额外的操作来进行补偿。

第四章:SURF算法在实际系统中的应用及其发展趋势SURF算法在实际系统中的应用非常广泛,例如在工业机器人、自动驾驶、安防监控等领域中都得到了应用。

SURF算法分析

SURF算法分析

2021/10/10
15
标出特征点的图像
2021/10/10
16
二.特征点 匹配
2021/10/10
17
特征点匹配
步骤1. 在检测特征点的过程中,计算了 Hessian 矩阵
的行列式,与此同时,计算得到了 Hessian 矩阵的迹,矩
阵的迹为对角元素之和。
按照亮度的不同,可以将特征点分为两种,第一种为
用stitching算法 进行图像拼接
2021/10/10
1
• 第一部分:用surf算法提 取特征点
• 第二部分:特征点匹配
• 第三部分:构建透视矩阵 完成拼接
• 第四部分 : 图像融合
2021/10/10
2
一.用SURF算法 提取特征点
1.SURF 介绍
SURF (Speeded Up Robust Feature)是一种高鲁棒性的局 部特征点检测器。由Herbert Bay 等人在2006年提出。该算法 可以用于计算机视觉领域例如物体识别或者三维重建。根据 作者描述该算法比SIFT更快更加具有鲁棒性。该算法中采用 积分图像、Haar小波变换和近似的Hessian矩阵运算来提高时 间效率,采用Haar小波变换增加鲁棒性。
给定图像f(x,y)中一个点 (x,y),其Hessian矩阵H(x,o) 定义如下:
2021/10/10
位置 尺度
快速 Hessian
5
• Lxx(x, ϭ )是高斯二阶微分在点X=(x,y)处与图像I的卷积 。
• Bay指出,高斯函数虽然是最佳的尺度空间分析工具, 但由于在实际应用中总要对高斯函数进行离散化和剪 切处理,从而损失了一些特性(如重复性)。这一因 素为我们用其他工具代替高斯函数对尺度空间的分析 提供了可能,只要误差不大就可以。所以就引入了盒 装滤波器。

surf算法代码 -回复

surf算法代码 -回复

surf算法代码-回复什么是Surf算法Surf算法(Speeded Up Robust Features)是一种用于图像特征检测和描述的计算机视觉算法。

它是在2006年由Herbert Bay等人提出的,旨在提高图像处理中的特征点检测与匹配的速度和准确性。

Surf算法在计算机视觉和图像处理领域中得到广泛应用,它的主要目标是在图像中找到稳定且唯一的局部特征点。

Surf算法的步骤1. 尺度空间构建:Surf算法在图像中使用多尺度空间来有效地检测特征点。

它通过不断模糊图像,并计算模糊后的图像与原始图像的差异来构建多尺度空间。

算法使用一个高斯滤波器来进行图像模糊,并通过逐渐增加滤波器的方差来构建不同尺度下的图像。

这样做的目的是使得算法能够在不同尺度下检测到特征点,而不受图像缩放的影响。

2. 关键点检测:在构建好尺度空间后,Surf算法会在每个尺度中检测关键点。

关键点是那些在图像中具有稳定尺度和位置,并且对缩放、旋转和光照变化具有不变性的点。

Surf算法使用Hessian矩阵来检测关键点。

Hessian矩阵是一个用于测量图像局部变化的矩阵,在Surf算法中,它被用来检测图像中的高强度点。

3. 关键点定位:在检测到关键点后,Surf算法会对关键点进行精确定位。

它使用一个Haar 小波响应来定位关键点的位置和方向。

Haar小波是一种多尺度基函数,它能够识别出图像中的边缘和纹理特征。

Surf算法利用Haar小波响应来定位出关键点的具体位置和方向,以便后续的特征描述步骤。

4. 特征描述:在完成关键点定位后,Surf算法会对每个关键点进行描述,以便后续的特征匹配。

Surf算法使用了一种叫做加速权重积分(Fast Hessian)的方法来生成特征描述子。

特征描述子是一个向量,它能够描述关键点周围区域的结构和纹理信息。

Surf算法会通过计算关键点周围区域的灰度变化来生成特征描述子。

5. 特征点匹配:在完成特征描述后,Surf算法会使用一种叫做KD树的数据结构来进行特征点的匹配。

S U R F 算 法

S U R F 算 法

特征点检测学习(surf算法)网上有些文章对surf做了介绍,比如:surf算法原理,有一些简单介绍.对surf的某些细节做了通俗易懂的解释.一、Surf描述子形成步骤1. 构造高斯金字塔尺度空间其实surf构造的金字塔图像与sift有很大不同,就是因为这些不同才加快了其检测的速度。

Sift采用的是DOG图像,而surf采用的是Hessian矩阵行列式近似值图像。

首先来看看图像中某个像素点的Hessian 矩阵,如下:即每一个像素点都可以求出一个Hessian矩阵。

但是由于我们的特征点需要具备尺度无关性,所以在进行Hessian矩阵构造前,需要对其进行高斯滤波。

这样,经过滤波后在进行Hessian的计算,其公式如下:公式中的符号,估计有点数学基础的朋友都能够猜到,这里就不多解释了。

最终我们要的是原图像的一个变换图像,因为我们要在这个变换图像上寻找特征点,然后将其位置反映射到原图中,例如在sift中,我们是在原图的DOG图上寻找特征点的。

那么在surf中,这个变换图是什么呢?从surf的众多资料来看,就是原图每个像素的Hessian矩阵行列式的近似值构成的。

其行列式近似公式如下:由于求Hessian时要先高斯平滑,然后求二阶导数,这在离散的像素点是用模板卷积形成的,这2中操作合在一起用一个模板代替就可以了,比如说y方向上的模板如下:该图的左边即用高斯平滑然后在y方向上求二阶导数的模板,为了加快运算用了近似处理,其处理结果如右图所示,这样就简化了很多。

并且右图可以采用积分图来运算,大大的加快了速度,关于积分图的介绍,可以去查阅相关的资料。

同理,x和y方向的二阶混合偏导模板如下所示:上面讲的这么多只是得到了一张近似hessian行列式图,这例比sift中的DOG图,但是在金字塔图像中分为很多层,每一层叫做一个octave,每一个octave中又有几张尺度不同的图片。

在sift算法中,同一个octave层中的图片尺寸(即大小)相同,但是尺度(即模糊程度)不同,而不同的octave层中的图片尺寸大小也不相同,因为它是由上一层图片降采样得到的。

S U R F 算 法

S U R F 算 法

opencv之SURF算法原理及关键点检测在基础篇里面讲模板匹配的时候已经介绍过,图像匹配主要有基于灰度和基于特征两种方法。

基于特征匹配的方法有很多种如:FAST、HARRIS、SIFT、SURF、SUSAN等。

其中SIFT算法由D.G.Lowe于1999年提出,2004年完善总结。

SIFT是一种鲁棒性好的尺度不变特征描述方法,但SIFT算法计算数据量大、时间复杂度高、算法耗时长。

针对上述缺点许多研究者对SIFT算法做了不同的改进,Yanke等人提出用PCA-SIFT方法对特征描述进行数据降维,但在没有任何先验知识的情况下反而增加了计算量;Delpont等人提出用SVD方法进行特征匹配,但匹配过程计算复杂,且不能用于宽基线匹配;Grabner等人用积分图像虽提高了SIFT的计算速度,但是降低了SIFT方法的优越性。

Herbert Bay等人于2006年提出了SIFT算法的改进算法SURF算法,其性能超过了SIFT算法且能够获得更快的速度。

SURF在光照变化和视角变化不变性方面的性能接近SIFT算法,尤其对图像严重模糊和旋转处理得非常好。

且标准的SURF算子比SIFT算子快好几倍,SURF算法最大的特征在于采用了harr特征以及积分图像的概念,这大大加快了程序的运行速度。

SURF算法和SIFT算法在opencv中是一种很高级的算法,opencv提供了SURF算法的API接口。

需要说明的是SURF和SIFT算法在OpenCV提供的nonfree中,而且在OpenCV3.x后不再集成到OpenCV发行版中,同意存放到opencv_contrib中,需要去opencv github页面手动下载编译。

点击跳转,编译方法网上有很多教-程。

2.Surf原理特征点的提取基于尺度空间理论,我们通过检测图像局部极值点来锁定特征点坐标,即局部的最亮点或最暗点。

2.1构建Hessian矩阵SURF算法检测特征点是基于Hessian矩阵实现的,Hessian矩阵是SURF 算法的核心。

S U R F 算 法

S U R F 算 法

SURF算法详解Speeded Up Robust Features(SURF,加速稳健特征)一.积分图像什么是积分图像积分图像是输入的灰度图像经过一种像素间的累加运算得到种新的图像媒介。

对于一幅灰度的图像,积分图像中的任意一点(x,y)的值是指从图像的左上角到这个点的所构成的矩形区域内所有的点的灰度值之和积分图像的作用积分图像是SURF算法减小计算量的关键,从SIFT到SURF算法的性能提升很大程度归功于积分图像的使用积分图像与原始图像的关系a.相同点:积分图像与原始图像的尺寸相同,积分图像中每个位置坐标与原始灰度图像的像素坐标相对应。

b.不同点:不同的是,在原始图像采用灰度图像的情况下,灰度图像每个像素使用8bit表示,而积分图像由于像素的累加运算,或者由于图像尺度的变化,积分图像中每个像素位宽将会需要积分的像素尾款来表示如何得到积分图像a.积分像素值1.坐标系的建立对于一幅原始的灰度图像,以图像中的第一个像素位置作为坐标原点,向右为轴正向,向下为轴正向建立坐标系。

2.积分像素值的确定将任意像素与坐标原点之间围成的矩形区域内所有像素值相加得到一个新的值,在这里我们把它定义为积分像素值。

b.积分图像的确定原始图像中每个像素经过运算都会得到新的积分像素值,最终构成一幅新的积分图像。

c.积分图像的作用有了积分图像的概念,在原始图像中我们可以计算任意矩形区域内的像素之和。

这种运算方式有效的减少了运算量,因为矩形的面积大小不会影响到运算量。

任意矩形内的像素累加只需要使用矩形四个顶角位置的积分像素值进行加减运算即可得到。

如果要计算矩形内的所有像素的累加值只需要再积分图像中找到对应,,,四个位置的积分像素的值进行加减运算:二.Hessian矩阵0.与SIFT算法对比a. SIFT算法采用的是DoG图像,而SURF采用的是Hessian矩阵行列式近似值图像b. SIFT算法中使用高斯差分对、和进行近似估计,使用、和函数代替高斯拉普拉斯函数,即Hessian矩阵通过高斯差分后得到近似估计的Hessian矩阵高斯函数的高阶微分与离散的图像函数做卷积运算时相当于使用高斯滤波模板对图像做滤波处理其行列式为a.图像中某个像素点Hessian矩阵即每一个像素点都可以求出一个Hessian矩阵。

SURF算法

SURF算法

SURF算法⼀、原理:Sift算法的优点是特征稳定,对旋转、尺度变换、亮度保持不变性,对视⾓变换、噪声也有⼀定程度的稳定性;缺点是实时性不⾼,并且对于边缘光滑⽬标的特征点提取能⼒较弱。

Surf(Speeded Up Robust Features)改进了特征的提取和描述⽅式,⽤⼀种更为⾼效的⽅式完成特征的提取和描述。

⼆、Surf实现流程如下:1. 构建Hessian(⿊塞矩阵),⽣成所有的兴趣点,⽤于特征的提取⿊塞矩阵(Hessian Matrix)是⼀个多元函数的⼆阶偏导数构成的⽅阵,描述了函数的局部曲率。

由德国数学家Ludwin Otto Hessian于19世纪提出。

surf构造的⾦字塔图像与sift有很⼤不同,Sift采⽤的是DOG图像,⽽surf采⽤的是Hessian矩阵⾏列式近似值图像。

Hessian矩阵是Surf算法的核⼼,构建Hessian矩阵的⽬的是为了⽣成图像稳定的边缘点(突变点),为下⽂的特征提取做好基础。

每⼀个像素点都可以求出⼀个Hessian矩阵。

Hessian矩阵的判别式为:当Hessian矩阵的判别式取得局部极⼤值时,判定当前点是⽐周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置。

在SURF算法中,图像像素l(x,y)即为函数值f(x,y)。

但是由于我们的特征点需要具备尺度⽆关性,所以在进⾏Hessian矩阵构造前,需要对其进⾏⾼斯滤波,选⽤⼆阶标准⾼斯函数作为滤波器。

H矩阵的三个矩阵元素L_xx, L_xy, L_yy从⽽计算出H矩阵:Surf使⽤了盒式滤波器来近似替代⾼斯滤波器,提⾼运算速度。

盒式滤波器(Boxfilter)对图像的滤波转化成计算图像上不同区域间像素和的加减运算问题,只需要简单⼏次查找积分图就可以完成。

每个像素的Hessian矩阵⾏列式的近似值:2. 构建尺度空间同Sift⼀样,Surf的尺度空间也是由O组L层组成,不同的是,Sift中下⼀组图像的尺⼨是上⼀组的⼀半,同⼀组间图像尺⼨⼀样,但是所使⽤的⾼斯模糊系数逐渐增⼤;⽽在Surf中,不同组间图像的尺⼨都是⼀致的,但不同组间使⽤的盒式滤波器的模板尺⼨逐渐增⼤,同⼀组间不同层间使⽤相同尺⼨的滤波器,但是滤波器的模糊系数逐渐增⼤。

SIFTSURFORBFAST特征提取算法比较

SIFTSURFORBFAST特征提取算法比较

SIFTSURFORBFAST特征提取算法比较在计算机视觉领域中,SIFT(Scale-Invariant Feature Transform,尺度不变特征转换)、SURF(Speeded Up Robust Features,加速鲁棒特征)、ORB(Oriented FAST and Rotated BRIEF,方向性的快速特征和旋转的BRIEF)、FAST(Features from Accelerated Segment Test,加速线段测试特征)都是常用的特征提取算法。

本文将对这四种算法进行比较,主要从算法原理、特点以及在不同应用场景的优缺点进行分析。

1.SIFT算法SIFT算法是由Lowe在1999年提出的一种获取图像局部特征的算法。

其主要兴趣点在于尺度不变特征的提取,通过尺度空间构建和关键点提取和描述来实现图像匹配。

SIFT算法的特点是具有旋转不变性、尺度不变性和光照不变性。

然而,SIFT算法计算复杂度较高,不适合实时应用。

2.SURF算法SURF算法是由Bay等人在2024年提出的一种加速鲁棒特征提取算法。

与SIFT算法相比,SURF算法主要优化了尺度空间构建、关键点检测和描述子生成等步骤。

SURF算法利用图像的Hessian矩阵来检测尺度空间的极值点,并通过Haar小波响应计算描述子。

该算法具有较好的尺度不变性和旋转不变性,同时计算速度更快。

然而,SURF算法对于局部对比度较低的图像特征提取效果较差。

3.ORB算法ORB算法是由Rublee等人在2024年提出的一种速度和描述能力兼具的特征提取算法。

该算法结合了FAST关键点检测和BRIEF描述子生成算法,并引入了旋转和尺度不变性。

ORB算法在FAST检测关键点时,通过计算像素灰度和检测周围点的弧长度来提高检测的稳定性。

在描述子生成过程中,ORB算法利用了方向梯度直方图(DOG)来提取关键点的旋转信息。

ORB算法具有快速、简单和可靠的特点,适合于实时应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

极值点 抑制
SURF 提取特征点
为了保证特征矢量具有旋转不变形,需要对每一个特征点 分配一个主要方向。需要以特征点为中心,以6s(s为特正点 的尺度)为半径的圆形区域内,对图像进行Haar小波响应运 算。这样做实际就是对图像进行了梯度运算,但是利用积分 图像,可以提高计算图像梯度的效率。为了求取主方向值, 需要设计一个以方向为中心,张角为PI/3的扇形滑动窗口,以 步长为0.2弧度左右,旋转这个滑动窗口,并对窗口内的图像 Haar小波的响应值进行累加。 主方向为最大的Haar响应累加 值对应的方向 。
式中,S(i,j)表示一列的积分,且S(i,-1)=0,n(-1,j)=0。 求积分图像,只需对原图像的所有像素进行一遍扫描。
积分图像
SURF 提取特征点
盒子滤波结构: ShotHessianTemplate[]={
3,0,2,2,6,15,1, 3,2,5,6,15,-2, 6,2,8,6,15,1, 0,0,0,0,0,0,
如果行列式的结果符号为负,则特征值有不 同的符号,则不是局部极值点。 如果行列式的符号为正,则该行列式的两个 特征值同为正或负,所以该店可以归类为极值 点。
快速 Hessian
SURF 提取特征点
由于采用的盒子滤波和积分图像,不需要像SIFT算法 那样去直接建立金字塔图像,而是采用不断增大的盒子滤 波模板的尺寸的间接方法。通过不同尺寸盒子滤波模板和 积分图像求取Hessian矩阵行列式的响应图像,然后,在 响应图像上采用3D非最大值抑制,求取各种不同尺度的斑 点。 模板
旋转到主方向
主方向 5s*5s
生成特 征矢量
SURF 匹配特征点
步骤1. 在检测特征点的过程中,计算了 Hessian 矩阵 的行列式,与此同时,计算得到了 Hessian 矩阵的迹,矩 阵的迹为对角元素之和。 按照亮度的不同,可以将特征点分为两种,第一种为 特征点及其周围小邻域的亮度比背景区域要亮,Hessian 矩阵的迹为正;另外一种为特征点及其周围小邻域的亮度 比背景区域要暗,Hessian 矩阵为负值。根据这个特性, 首先对两个特征点的 Hessian 的迹进行比较。如果同号, 说明两个特征点具有相同的对比度;如果是异号的话,说 明两个特征点的对比度不同,放弃特征点之间后续的相似 特征点 性度量。
匹配
SURF 匹配特征点
步骤2.对于两个特征点描述子的相似性度量,我们采用 欧式距离进行计算:
式中,Xik表示待配准图中第 i 个特征描述子的第 k 个元素, Xjk是参考图中第 j个特征描述子的第k 个元素, n表示特征向量的维数。 。
特征点 匹配
SURF 匹配特征点
对于待配准图上的特征点,计算它到参考图像上所有 特征点的欧氏距离,得到一个距离集合。通过对距离集 合进行比较运算得到小欧氏距离和次最小欧式距离。设 定一个阈值,一般为 0.8,当最小欧氏距离和次最小欧式 距离的比值小于该阈值时,认为特征点与对应最小欧氏 距离的特征点是匹配的,否则没有点与该特征点相匹配。 阈值越小,匹配越稳定,但极值点越少。
特征点 匹配
i ' i , j ' j

p ( i ' , j ' ) 式中,P(i’,j’)表

A
B

D
SABCD=D-C-B+A
C
积分图像
SURF 提取特征点
上式子中n(i,j)可以用以下两式子迭代计算得到 S(i,j)=S(i,j-1)+p(i,j) n(i,j)=n(i-1,j)+S(i,j)
……}
第1位:滤波器盒子数量 第4、5位:第1个盒子右下角坐标 第7位:盒子填充值 第2、3位:第1个盒子左上角坐标 第6位:RF 提取特征点
在SURF中,采用近似的Hessian矩阵的行列式的局部 最大值来定位感兴趣点的位置。当Hessian行列式的局部值 最大的时候,所检测出来的就是感兴趣点。感兴趣点的特 征为比周围邻域更亮或者更暗一些。 给定图像f(x,y)中一个点 (x,y),其Hessian矩阵H(x,o) 定义如下:
构建尺 度空间
图片 SIFT构建尺度空间 SURF构建尺度空间
SURF 提取特征点
与SIFT相类似,SURF也将尺度空间划分成若干组 (Octaves)。一个组代表了逐步放大的滤波模板对同一个 输入图像进行滤波的一系列响应图像。每一组又有若干 固定的层组成。
变 化 量
51 27 15 27 15 51
特征点 方向分配
旋转窗口
SURF 提取特征点
生成特征点的特征矢量需要计算图像的Haar小波响应。 在一个矩形的区域内,以特征点为中心,沿主方向将 20s*20s的图像划分成4*4个子块,每个子块利用尺寸2s 的Haar小波模板进行响应计算,然后对响应值进行统 计 d x , d x , d y , d y 形成的特征矢量 。
99
147 195
Octaves
6*n
75 99 构建尺 度空间
39 51
变化量 n*6
9
21 27
Scale
SURF 提取特征点
为了在目标影像上确定SURF特征点,我们使用了 3*3*3的模板在3维尺度空间进行非最大化抑制,根据 预设的Hessian阈值H,当h大于H,而且比临近的26 个点的响应值都大的点才被选为兴趣点。最后进行插 值精确。
SURF算法分析
SURF 介绍
SURF (Speeded Up Robust Feature)是一种高鲁 棒性的局部特征点检测器。由Herbert Bay 等人在2006 年提出。该算法可以用于计算机视觉领域例如物体识 别或者三维重建。根据作者描述该算法比SIFT更快更 加具有鲁棒性。该算法中采用积分图像、Haar小波变 换和近似的Hessian矩阵运算来提高时间效率,采用 Haar小波变换增加鲁棒性。 参考程序:
/computer-vision-opensurf.html
SURF 提取特征点
积分图像中任意一点I(i,j)的值n(i,j),为原图像左上 角到该任意点I(i,j)相应的对角线区域灰度值的总和,即:
n(i,j)= 示原图像中(i’,j’)的灰度值
2 f 2 f 2 x xy H ( f ( x , y )) 2 f 2 f 2 xy y
位置
尺度
快速 Hessian
SURF 提取特征点
加权系数 Lxx是高斯模板与图像卷积 Dxx是盒子模板与图像卷积 用Dxx近似代替Lxx
相关文档
最新文档