SURF算法详解

Speeded Up Robust Features(SURF,加速稳健特征)

一.积分图像

1.什么是积分图像

积分图像是输入的灰度图像经过一种像素间的累加运算得到种新的图像媒介。对于一幅灰度的图像,积分图像中的任意一点(x,y)的值是指从图像的左上角到这个点的所构成的矩形区域内所有的点的灰度值之和。

从直观来说,一张图像就是一个矩形,这个矩形中每个像素点的积分值,就是以图像左上角像素点为左上角顶点,以该像素点为右下角顶点的矩形中包含的所有元素之和。如下图所示,点(x,y)处的积分值为矩形区域中所有像素之和(包括该点)。

2.积分图像的作用

积分图像是SURF算法减小计算量的关键,从SIFT到SURF算法的性能提升很大程度归功于积分图像的使用。

3.积分图像与原始图像的关系

a.相同点:

积分图像与原始图像的尺寸相同,积分图像中每个位置坐标与原始灰度图像的像素坐标相对应。

(

详细解释:

        尺寸相同:积分图像与原始图像具有相同的尺寸,即它们具有相同的宽度和高度。

        坐标对应:积分图像中的每个位置坐标与原始灰度图像的像素坐标相对应。换句话说,积分图像中的每个像素值对应于原始图像中相同位置的像素值。

)

b.不同点:

不同的是,在原始图像采用灰度图像的情况下,灰度图像每个像素使用8bit表示,而积分图像由于像素的累加运算,或者由于图像尺度的变化,积分图像中每个像素位宽将会需要积分的像素尾款来表示

4.如何得到积分图像

a.积分像素值

1.坐标系的建立

对于一幅原始的灰度图像,以图像中的第一个像素位置作为坐标原点,向右为x轴正向,向下为y轴正向建立坐标系。

2.积分像素值的确定

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

b.积分图像的确定

 有了积分图像的概念,在原始图像中我们可以计算任意矩形区域内的像素之和。这种运算方式有效的减少了运算量,因为矩形的面积大小不会影响到运算量。任意矩形内的像素累加只需要使用矩形四个顶角位置的积分像素值进行加减运算即可得到。

 如果要计算矩形ABCD内的所有像素的累加值只需要再积分图像中找到对应A,B,C,D四个位置的积分像素的值进行加减运算:

 二.Hessian矩阵

0.与SIFT算法对比

a. SIFT算法采用的是DoG图像,而SURF采用的是Hessian矩阵行列式近似值图像

 SIFT:

 b. SIFT算法中使用高斯差分对Lxx、Lxy、Lyy进行近似估计,使用Dxx,Dxy,Dyy函数代替高斯拉普拉斯函数,即

 高斯函数的高阶微分与离散的图像函数I(x,y)做卷积运算时相当于使用高斯滤波模板对图像做滤波处理

其行列式为

 1.定义

a.图像中某个像素点Hessian矩阵

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

其行列式为:

补充:为什么使用hessian矩阵:

Hessian矩阵在计算机视觉领域中被使用的一个主要原因是它能够提供关于图像局部结构的丰富信息。Hessian矩阵是一个二阶偏导数矩阵,描述了图像局部区域的曲率和边缘信息。通过分析Hessian矩阵的特征值和特征向量,可以获得关于图像的局部形状和结构的重要特征。

使用Hessian矩阵的一些主要应用:

1.特征点检测:Hessian矩阵可以用于检测图像中的关键特征点,如边缘、角点、斑点等。通过分析Hessian矩阵的特征值,可以确定特征点的位置和尺度,并判断其是否为稳定的关键点。

2.尺度空间表示:Hessian矩阵可以用于构建尺度空间,通过在不同尺度下对图像进行高斯模糊,计算Hessian矩阵的特征值,可以得到图像在不同尺度上的局部结构信息。这种尺度空间表示在尺度不变特征变换(Scale-Invariant Feature Transform,SIFT)算法中得到了广泛应用。

3.物体识别与检测:Hessian矩阵可以用于图像中物体的局部特征描述。通过计算Hessian矩阵的特征值,可以生成描述物体局部结构的特征向量或描述子。这些描述子可以用于物体的识别、分类和检测任务。

4.边缘检测:Hessian矩阵可以提供图像中边缘的信息。通过分析Hessian矩阵的特征值,可以确定边缘的位置、方向和强度,并用于边缘检测和图像分割等任务。

Hessian矩阵作为一种图像局部结构的表示方法,具有丰富的信息,能够捕捉到图像中的曲率、边缘等重要特征。在特征点检测、尺度空间表示、物体识别和边缘检测等任务中,使用Hessian矩阵能够提供有力的工具和方法。

 b.图像的Hessian矩阵

由于我们的特征点需要具备尺度无关性,所以在进行Hessian矩阵构造前,需要对其进行高斯滤波。这样,经过滤波后再进行Hessian的计算。

 其中Lxx表示I(x,y)图像函数与高斯函数二阶微分()在像素点(x,y)处的卷积。Lxy和Lyy也类似这么定义

 c.盒子滤波器

高斯函数的高阶微分与离散的图像函数I(x,y)做卷积运算时相当于使用高斯滤波模板对图像做滤波处理。在实际运用中,高斯二阶微分进行离散化和裁剪处理得到盒子滤波器近似代替高斯滤波板进行卷积计算

 网格中渐变的颜色深度代表高斯滤波模板中不同的权重系数。某一尺寸的高斯滤波模板经过离散化和裁剪生成的盒子滤波器包括Dxx,Dxy,Dyy三个方向。

对高斯高阶微分函数进行离散化处理的同时也将滤波模板的各部分的滤波权重进行简化,所以系数都是{1,-1,-2,0}集合中的元素。

三.尺度空间的构造

上述工作是通过模板卷积求二阶偏导数得到H矩阵,接下来要通过Hessian矩阵构建尺度空间。

a.SIFT尺度空间

在SIFT中,尺度空间是用金字塔模型对图像滤波缩放得到的。SIFT算法首先对一幅图片进行下采样得到若干图像,每次下采样得到的图片作为每一组的原始图像。为了保证图像金字塔的连续性,对每组的原始图像以不同的σ进行高斯滤波,金字塔每组中又得到若干滤波后的图像。

这样得到的图像金字塔分为若干组(Octave),同时每组又有若干层(Layer)图片组成。显然,图像金字塔的计算量会随着金字塔组数和层数的增加而变大。

 b.SURF尺度空间

1.相同点

SURF算法的尺度空间同样由若干组(Octave)构成,每一组中包含若干层(Level)。

2.不同点

组:

SURF算法中不会对图片进行下采样。SURF算法先从9x9尺寸的盒子滤波器开始,对盒子滤波器的尺寸进行扩展,9x9尺寸的盒子滤波器是σ为1.2时的高斯二阶微分函数经过离散和减裁后的滤波模板。在SURF中,我们保持图像不变,仅仅改变高斯滤波窗口的大小来获得不同尺度的图像,即构成了尺度空间。

层:

每一层对应的σ与滤波模板尺寸之间的关系式为。Bay建议将尺度空间分为四组,每组中包括四层。

 为了保持尺度空间的连续性,SURF算法尺度空间相邻组中有部分层重叠,同时每组中的盒子滤波器的尺寸都是逐渐增大的。

c.Hessian行列式图像的产生过程

在SURF算法的尺度空间中,每一组中任意一层包括Dxx,Dxy,Dyy三种盒子滤波器。对一幅输入图像进行滤波后通过Hessian行列式计算公式可以得到对于尺度坐标下的Hessian行列式的值,所有Hessian行列式值构成一幅Hessian行列式图像。

一幅灰度图像经过尺度空间中不同尺寸盒子滤波器的滤波处理,可以生成多幅Hessian行列式图像,从而构成了图像金字塔。

四.特征点精确定位

a.非极大值抑制过程

在每一组中选取相邻的三层Hessian行列式图像,对于中间层的每一个Hessian行列式值都可以做为待比较的点,在空间中选取该点周围的26个点进行比较大小,若该点大于其他26个点,则该点为特征点。从上述过程可以知道,当尺度空间每组由四层构成时,非极大值抑制只会在中间两层进行,相邻的组之间不进行比较。

b.设定Hessian行列式的阀值

低于Hessian行列式阀值的点不能作为最终的特征点。在实际选择阀值时,根据实际应用中对特征点数量和精确度的要求改变阀值。阀值越大,得到的特征点的鲁棒性越好。在处理场景简单的图像时,其阀值可以适当的调低。在复杂的图像中,图像经旋转或者模糊后特征点变化的数量较大,测试需要适当提高阀值。

五.主方向计算

为了使特征具备较好的旋转不变性,需分配给每个特征点一个主方向。在SURF中,主方向是对以特征点为中心的6倍特征尺度为半径的圆形区域内的Haar小波响应做统计运算得到的。

a.兴趣点方向的确定

首先赋予每一个兴趣点方向特征。我们以某个兴趣点为圆心,以6S(S为该兴趣点对应的尺度)为半径的圆形领域里,用尺寸为4S的Haar小波模板对图像进行处理,求x,y两个方向的Haar小波响应。

Haar小波的模板如图所示

 其中左侧模板计算X方向的响应,右侧模板计算y方向的响应,黑色表示-1,白色表示+1。用其对圆形领域进行处理后,就得到了该领域内每个点对应的x,y方向的响应,然后用以兴趣点为中心的高斯函数(σ=2S)对这些响应进行加权。

在这个圆形领域内做一个60度的扇形区域,统计这个扇形区域内的haar小波特征总和,然后转动扇形区域,再统计小波特征总和。小波特征总和最大的方向为主方向。

 b. 构建描述子向量

1. SIFT算法

在SIFT中关键点描述是选取了关键点周围16x16的领域,又将其划分为4x4的区域,每个区域统计8个方向梯度,最后得到4x4x8=128维度的描述向量。

2.SURF算法

在SURF中,我们在关键点周围选取一个正方形框,方向为关键点的主方向,边长为20S。将其划分为16个区域(边长为5S),每个区域统计25个像素的水平方向和垂直方向的Haar小波特性(均相对于正方形框的主方向确定的)。

 该小波特征包括水平方向值之和,水平方向绝对值之和,垂直方向值之和和垂直方向绝对值之和(为了把强度变化的极性信息也包括描述符中,所以对绝对值进行累加)。这样每个区域有4个值,则每个正方形框有4x16=64维,即每个关键点描述是64维,比SIFT描述少了一半。

六.SURF算法与SIFT算法总结对比

(1)在生成尺度空间方面,SIFT算法利用的是差分高斯金字塔与不同层级的空间图像相互卷积生成。SURF算法采用的是不同尺度的box filters与原图像卷积

(2)在特征点检验时,SIFT算子是先对图像进行非极大值抑制,再去除对比度较低的点。然后通过Hessian矩阵去除边缘的点。

而SURF算法是先通过Hessian矩阵来检测候选特征点,然后再对非极大值的点进行抑制

(3)在特征向量的方向确定上,SIFT算法是在正方形区域内统计梯度的幅值的直方图,找到最大梯度幅值所对应的方向。SIFT算子确定的特征点可以有一个或一个以上方向,其中包括一个主方向与多个辅方向。

SURF算法则是在圆形邻域内,检测各个扇形范围内水平、垂直方向上的Haar小波响应,找到模值最大的扇形指向,且该算法的方向只有一个。

(4)SIFT算法生成描述子时,是将16x16的采样点划分为4x4的小方格,每个子区域25个采样点,计算haar小波响应,一共4x4x4=64维。

 综上,SURF算法在各个步骤上都简化了一些繁琐的工作,仅仅计算了特征点的一个主方向,生成的特征描述子也与前者相比降低了维数。

  • 6
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,surf函数是用于绘制三维着色曲面图的函数,它可以产生由X、Y、Z指定的有色参数化曲面,即三维有色图。具体调用方法如下: surf(X,Y,Z,C) surf(X,Y,Z) surf(x,y,Z,C) surf(x,y,Z) surf(Z,C) surf(Z) \[1\] 另外,MATLAB还提供了两个扩展函数,分别是surfc函数和surfl函数。surfc函数在surf函数绘图的基础上添加等高线,而surfl函数则在surf函数绘图的基础上绘制带有光源的曲面图。需要注意的是,surf函数没有surfz函数,而ezsurf函数只有ezsurfc函数。\[3\] 所以,如果你想在MATLAB中使用surf函数绘制三维曲面图,可以根据上述的调用方法进行操作。 #### 引用[.reference_title] - *1* *3* [MATLAB-surf/ezsurf函数绘制三维图形](https://blog.csdn.net/weixin_56691527/article/details/128548507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [matlab三维阴影曲面绘图函数surfsurfc、furfl【matlab图行绘制六】](https://blog.csdn.net/weixin_46567845/article/details/120147259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值