SURF算法详解
【超实战追-女孩干货】【扣:⒈01⒍.x.9⒌⒉б】 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矩阵。 其行列式为:
b.图像的Hessian矩阵
由于我们的特征点需要具备尺度无关性,所以在进行Hessian矩阵构造前,需要对其进行高斯滤波。这样,经过滤波后在进行Hessian的计算
其中表示图像函数与高斯函数二阶微分()在像素点处的卷积。和也类似这么定义
c.盒子滤波器
高斯函数的高阶微分与离散的图像函数做卷积运算时相当于使用高斯滤波模板对图像做滤波处理。在实际运用中,高斯二阶微分进行离散化和裁剪处理得到盒子滤波器近似代替高斯滤波板进行卷积计算
网格中渐变的颜色深度代表高斯滤波模板中不同的权重系数。某一尺寸的高斯滤波模板经过离散化和裁剪生成的盒子滤波器包括三个方向。
对高斯高阶微分函数进行离散化处理的同时也将滤波模板的各部分的滤波权重进行简化,所以系数都是集合中的元素
三.尺度空间的构造
上述工作是通过模板卷积求二阶偏导数得到H矩阵,接下来要通过H矩阵构建尺度空间。
a.SIFT尺度空间
在SIFT中,尺度空间是用金字塔模型对图像滤波缩放得到的。SIFT算法首先对一幅图片进行下采样得到若干图像,每次下采样得到的图片作为每一组的原始图像。为了保证图像金字塔的连续性,对每组的原始图像以不同的进行高斯滤波,金字塔每组中又得到若干滤波后的图像。
这样得到的图像金字塔分为若干组(Octave),同时每组又有若干层(Layer)图片组成。显然,图像金字塔的计算量会随着金字塔组数和层数的增加而变大。
b.SURF尺度空间 1.相同点
SURF算法的尺度空间同样由若干组(Octave)构成,每一组中包含若干层(Level)。
2.不同点
SURF算法中不会对图片进行下采样。SURF算法先从尺寸的盒子滤波器开始,对盒子滤波器的尺寸进行扩展,尺寸的盒子滤波器是为1.2时的高斯二阶微分函数经过离散和减裁后的滤波模板。在SURF中,我们保持图像不变,仅仅改变高斯滤波窗口的大小来获得不同尺度的图像,即构成了尺度空间。
每一层对应的与滤波模板尺寸之间的关系式为。Bay建议将尺度空间分为四组,每组中包括四层。
为了保持尺度空间的连续性,SURF算法尺度空间相邻组中有部分层重叠,同时每组中的盒子滤波器的尺寸都是逐渐增大的。
c.Hessian行列式图像的产生过程
在SURF算法的尺度空间中,每一组中任意一层包括三种盒子滤波器。对一幅输入图像进行滤波后通过Hessian行列式计算公式可以得到对于尺度坐标下的Hessian行列式的值,所有Hessian行列式值构成一幅Hessian行列式图像。
一幅灰度图像经过尺度空间中不同尺寸盒子滤波器的滤波处理,可以生成多幅Hessian行列式图像,从而构成了图像金字塔。
四.特征点精确定位 a.非极大值抑制过程
在每一组中选取相邻的三层Hessian行列式图像,对于中间层的每一个Hessian行列式值都可以做为待比较的点,在空间中选取该点周围的26个点进行比较大小,若该点大于其他26个点,则该点为特征点。从上诉过程可以知道,当尺度空间每组由四层构成时,非极大值抑制只会在中间两层进行,相邻的组之间不进行比较。
b.设定Hessian行列式的阀值
低于Hessian行列式阀值的点不能作为最终的特征点。在实际选择阀值时,根据实际应用中对特征点数量和精确度的要求改变阀值。阀值越大,得到的特征点的鲁棒性越好。在处理场景简单的图像时,其阀值可以适当的调低。在复杂的图像中,图像经旋转或者模糊后特征点变化的数量较大,测试需要适当提高阀值。
五.主方向计算
为了使特征具备较好的旋转不变性,需分配给每个特征点一个主方向。