SURF算法介绍

SURF算法介绍
SURF算法介绍

蒙娜丽莎的图像匹配---SURF算法

1.图像匹配

1.1.图像匹配的概念

图像匹配成为计算机视觉和图像处理中的一个重要技术。其方法思想就是根据己知的图像在其他图像中查找出含有己知图像的过程。图像匹配的架构流程如图1.1。该技术的研究涉及到许多相关的知识领域,如图像预处理、图像采样、特征提取等,同时将计算机视觉、多维信号处理和数值计算等紧密结合在一起。图像匹配技术还与图像融合、图像匹配等研究方向系系相关,为图像理解和图像复原等相关领域的研究提供基础。

图1.1 图像匹配流程图

图像匹配技术作为图像处理的关键技术之一,在国防领域和医学领域等得到广泛的研究和应用[2]。如果在不同视角,或是不同时间,或是使用了不同的传感器获取到的两幅或多幅图像间存在共同区域,如何寻找到图像间的共同区域,就是图像匹配需要解决的问题。

1.2.图像匹配的算法组成

图像匹配技术的分支很多,对图像匹配提出的构架也是千姿百态,根据布朗提出了图像匹配的组成要素,将图像匹配的要素主要分为四个方面,分别是图像的特征空间,为求取变换参数定义的搜索空间和搜索策略,图像匹配的相似性度量。

特征空间是指在待配图像和参考图像上提取到的一系列特征集合。将提取到的特征进行描述后参与最后的匹配,因此特征选取的好坏直接影响匹配的可行性和匹配的效果。好的特征是满足自动匹配的前提,因此选取的特征一般包含图像的关键信息,此类特征存在以下特性:首先,此类特征具有公有性、唯一性和显著性,保证匹配的顺利进行和匹配的精度;其次,此类特征具有多量性,而且分布合理,保证匹配的稳定性。合理的特征空间会降低匹配算法的计算量,提高算法的性能。

相似性度量是指评判待匹配图像和参考图像上特征的相似程度,它很大程度上决定了参与匹配的因素,一般采用某种代价函数或者是距离函数来进行度量。好的相似性度量不仅可以减少算法的计算量,而且对于算法的匹配性能和鲁棒性起着重要的作用。

搜索空间为求取图像变换参数的空间。它为图像间可能存在的所有变换组合的空间。搜索空间的组成取决于图像畸变的类型,而搜索空间的取值围取决于图像畸变的强度。假如图像间只存在平移和旋转变换,那么搜索空间为简单的二维

空间。假如图像间存在扭曲变形,那么搜索空间为复杂的三维甚至更高维的空间。搜索空间是为了使图像间能够寻找到最优的变换参数而建立的空间,好的搜索空间能够得到较准确的变换参数。

搜索策略是指在建立的搜索空间中,以一种方法来求取图像间的变换参数,使变换参数达到最优。可见搜索策略不仅影响到图像变换参数的求取,而且对于匹配时间也具有很大的影响。一般来说,一种好的搜索策略都是采用搜索精度和搜索时间来评判的。较为常用的搜索策略主要包括序贯判定、层次性搜索法、穷尽搜索法、松弛算法、树与图匹配搜索、动态规划、多尺度搜索算法等。每种搜索算法都是针对具体的应用领域产生的,不同的方法具有不同的优势。针对不同的要求,选择合适的搜索策略是非常重要的。

图像匹配的四要素是密切相关的,而且每个要素对匹配的最终结果都有很大的影响。针对不同的匹配需求和匹配的具体应用,匹配要素的选取各异。首先针对图像的类型和具体的图像特征建立合适的特征空间;根据图像间的畸变类型和畸变强度建立合适的搜索空间;通过合适的搜索算法来计算相似性度量;从而得到最优的变换参数。

2.SURF算法

SURF的全称是Speed-up robust features(加速健壮特征),SURF算法是SIFT(Scale-invariant feature transformation,尺度不变特征变换)算法的加速版,SURF算法可以在适中的条件下完成两幅图像中物体的匹配基本实现了实时处理。

2.1.SIFT算法

在计算机领域的图像处理希望可以和人类视觉一样通过程序自动找出两幅图像里面相同的景物,建立它们之间的对应,SIFT(尺度不变特征)算法提供了一种解决方法,通过这个算法可以使得满足一定条件下两幅图像中相同景物的某些点可以匹配起来。

SIFT算法实现物体识别主要有三大工序,1、提取关键点;2、对关键点附加详细的信息(局部特征)也就是所谓的描述器;3、通过两方特征点(附带上特征向量的关键点)的两两比较找出相互匹配的若干对特征点,也就建立了景物间的对应关系。

日常的应用中,多数情况是给出一幅包含物体的参考图像,然后在另外一幅同样含有该物体的图像中实现它们的匹配。两幅图像中的物体一般只是旋转和缩放的关系,加上图像的亮度及对比度的不同,这些就是最常见的情形。基于这些条件下要实现物体之间的匹配,SIFT算法的先驱及其发明者想到只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应。首先在形状上物体既有旋转又有缩小放大的变化,如何找到这样的对应点呢?于是他们的想法是首先找到图像中的一些“稳定点”,这些点是一些十分突出的点不会因光照条件的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点,既然两幅图像中有相同的景物,那么使用某种方法分别提取各自的稳定点,这些点之间会有相互对应的匹配点,正是基于这样合理的假设,SIFT算法的基础是稳定点。SIFT算法找稳定点的方法是找灰度图的局部最值,由于数字图像是离散的,想求导和求最值的操作都是使用滤波器,而滤波器是有尺寸大小的,使用同一尺寸的滤波器对两幅包含有不同尺寸的同一物体的图像求局部最值将有可能出现一方求得最值而另一方却没有的情况,但是容易知道假如物体的尺寸都一致

的话它们的局部最值将会相同。

SIFT的精妙之处在于采用图像金字塔的方法解决这一问题,我们可以把两幅图像想象成是连续的,分别以它们作为底面作四棱锥,就像金字塔,那么每一个截面与原图像相似,那么两个金字塔中必然会有包含大小一致的物体的很多截面,但应用只能是离散的,所以我们只能构造有限层,层数越多当然越好,但处理时间会相应增加,层数太少不行,因为向下采样的截面中可能找不到尺寸大小一致的两个物体的图像。有了图像金字塔就可以对每一层求出局部最值,但是这样的稳定点数目将会十分可观,所以需要使用某种方法抑制去除一部分点,但又使得同一尺度下的稳定点得以保存。有了稳定点之后如何去让程序明白它们之间是物体的同一位置?研究者想到以该点为中心挖出一小块区域,然后找出区域的某些特征,让这些特征附件在稳定点上,SIFT的又一个精妙之处在于稳定点附加上特征向量之后就像一个根系发达的树根一样牢牢的抓住它的“土地”,使之成为更稳固的特征点,但是问题又来了,遇到旋转的情况怎么办?发明者的解决方法是找一个“主方向”然后以它看齐,就可以知道两个物体的旋转夹角了。

2.2.SURF算法步骤

2.2.1.特征点检测

特征点的检测一般包括三个步骤,积分图像的建立,箱式滤波器建立图像的尺度空间,然后在建立的尺度空间上对特征点进行定位。

积分图像的建立:SURF 算法和其他算法相比不仅具有较好的缩放、旋转、平移等特性,而且计算速度很快,计算速度的提升很大程度上取决于积分图像的建立。积分图像是对原始图像进行积分计算得到的图像。积分图像的每一点表示为原图像从原点到该点的矩形区域的像素和,积分图像的建立之所以能够加快计算速度,是因为我们对整幅图像进行积分图像遍历后,原始图像中的任一矩形区域的像素之和就可以通过加减运算来完成,而与矩形的面积无关,矩形越大,节省的计算时间越多。SURF 算法之所以能够采用积分图像来计算,另外一个很重要的近似就是采用箱式滤波器来近似高斯核函数。箱式滤波器的引入使得卷积模板都是框状模板,使用积分图像来计算就大大减少了计算量,从而提高了算法的运算效率。

箱式滤波器建立尺度空间:SURF 算法采用箱式滤波器来近似代替高斯核函数,使得卷积模板均由简单的矩形构成。积分图像的引入解决了矩形区域快速计算的问题,箱式滤波器的近似极大提升了计算速度。箱式滤波器近似效果如图1.2所示:

图1.2 箱式滤波器

箱式滤波器建立图像的尺度空间:为了保证图像匹配具有尺度不变性,需要对图像进行分层,建立图像的尺度空间,然后在不同尺度的图像上来寻找特征点。SURF 算法尺度空间的建立是保持原始图像大小不变,通过改变箱式滤波器的大小来对原始图像计算得到的积分图像进行滤波,从而形成图像的尺度空间。采用

箱式滤波器建立图像的尺度空间如图1.3所示:

图1.3 尺度空间

特征点定位:通过上面所述的尺度空间的建立,在得到图像的尺度空间后,在尺度空间的

每一层图像上使用快速 Hessian 矩阵来检测图像的极值点。对于空间的任意一点 ( x , y ),对应尺度空间中的尺度为σ,则 Hessian 矩阵的定义如下所示:

H(x,σ)=[L LL(Lσ)L LL(Lσ) L LL(Lσ)L LL(Lσ)]

其中L LL(Lσ)、L LL(Lσ)、L LL(Lσ)是图像上的点分别与高斯二阶

偏导数L 2L(L)

LL2

,L

2L(L)

LLL

,L

2L(L)

LL2

卷积的结果,其中g为高斯函数。

为了减少计算量,此处又做了一个近似,我们采用箱式滤波模板与原始输入图像的卷积记为L LL,L LL,L LL来分别代替L LL,L LL,L LL,把 9×9 的初始箱式滤波器与σ等于1.2的二阶高斯偏导近似,Hessian矩阵的行列式计算可以近似表示为:

Det(Hessian)=L LL L LL-(LL LL)

2

其中权重系数L约为0.9.

对于计算得到的 Hessian 矩阵,设定一个阈值,只有当det( Hessian )大于这个阈值时,才进行下一步的判定。对于进行下一步判定的点,取该点的上下层中对应 3*3*3 的立体邻域来进行非极大值抑制(Non-maximum suppression),只有比立体近邻的 26个响应值都大的点才被选定为特征点。为了在得到特征点的稳定位置和尺度值,需要对尺度空间进行插值,这样就得到了特征点的位置值和特征点的尺度值。

2.2.2.特征描述

特征描述分为两个步骤,首先求取特征点的主方向,这样可以保证算法的旋转不变性,然后将特征点的邻域旋转到主方向,对特征点进行描述。

主方向描述:为了使图像的匹配具有旋转不变性,引入了主方向的概念。主方向的计算是以特征点为中心,取特征点周围半径为 6s(s 为特征点所在的尺度值)的圆形区域,计算邻域的像素点在 x ,y方向上的哈尔小波响应值。对计算得到的响应值按距离赋予一定的权值系数,继而对加权后的响应值进行直方图统计。统计从x轴开始,对圆形区域 60 度围的哈尔小波响应值相加计算得到一个新的矢量。每隔 5 度以同样的方法计算矢量,遍历整个圆形区域,可以得到 72 个新的矢量。我们选择最长的矢量方向作为该特征点的主方向。

对于待匹配图像和参考图像,提取到图像的特征后,获得了特征的位置坐标和尺度值。为了使特征点能够匹配,必须对特征点进行描述。好的描述可以提高图像间的匹配率。SURF 算法对于检测到的特征点,以特征点为中心,选取中心点邻域围20 S *20 S 大小的区域,然后将区域的主方向旋转到特征点的主方向。为了更好的利用图像的空间信息,将 20S *20S 的区域分为 4*4 共 16 个子区域,这样每个子区域的像素值大小为 5S *5S 。SURF 算法通过统计像素点的哈尔小波响应值来对特征点进行描述,对于每个子区域,分别计算每个像素点的哈尔小波在 X 方向和Y方向的响应值,用数学表达分别表示为L L,L L。统计完所有的响应值后,为了增强特征点对亮度变化的鲁棒性和定位的准确性,以特征点为中心对计算到的L L,L L进行高斯加权(σ= 3.3s)。对于每一个区域,得到了每个像素点经过加权的哈尔小波在 X 方向和Y 方向的响应值L L和L L,对区域所有的像素点的响应值进行求和计算∑L L,∑L L。建立一个四维的特

|,∑|L L|),将 16 个子区域的向量分征向量:v=(∑L L,∑L L,∑|L

L

别加入到特征向量中,就形成了一个 64(4*16)维的特征向量。为了使描述子具有亮度和尺度不变性,对描述子进行归一化处理。

2.2.

3.特征匹配

特征描述子生成后,首先通过 Hessian 矩阵的迹来进行初始判断,加快匹配的速度,然后采用欧式距离来度量两个特征向量的匹配。

照亮度的不同,可以将特征点分为两种,第一种为特征点及其周围小邻域的亮度比背景区域要亮;另外一种为特征点及其周围小邻域的亮度比背景区域要暗。对于第一种特征点,计算得到的 Hessian 矩阵的迹为正,而对于第二种特征点恰恰相反,它们计算得到的 Hessian 矩阵为负值。根据这个特性,首先对两个特征点的 Hessian 的迹进行比较。如果同号,说明两个特征点具有相同的对比度;如果是异号的话,说明两个特征点的对比度不同,放弃特征点之间后续的相似性度量。这样可以减少匹配所用时间,而且不会影响匹配的匹配率。

欧式距离的相似性度量:对于待匹配图上的特征点,计算它到参考图像上所有特征点的欧氏距离,得到一个距离集合。通过对距离集合进行比较运算得到最小欧氏距离和次最小欧式距离。设定一个阈值,当最小欧氏距离和次最小欧式距离的比值小于该阈值时,认为特征点与对应最小欧氏距离的特征点是匹配的,否则没有点与该特征点相匹配。阈值设定越小,匹配点对越少,但匹配更稳定。2.3.SURF算法的编程

首先编写SURF描述子特征提取实现函数,可以分为五个步骤来实现,1计算积分图;2 计算hessian矩阵;3 提取兴趣点; 4 计算SURF描述子;5 释放积分图。

计算积分图,在图像空间的积分其实就是左右象素的加减法:

计算hessian矩阵采用相应的模板。

提取兴趣点,首先定义一个二维数组,赋给初值,用来建立一个对应表。再进行二重循环计算兴趣点,计算每行每列是否极值,判断极值的条件是 1 是否越界;2 hessian行列式的值与阈值相比;3 在一个矩形领域;如果存在大于改点的行列式的点,就判定不是极值。通过极值的判定,如果是兴趣点,就进行插值计算精确的坐标。

计算描述子:考虑图像会存在倾斜的情况,所以首先要对图像兴趣点的主方向进行计算。再计算harr特征,计算是根据积分图来的。对每一对x,y,以x,y为中心,将图像旋转到主方向,得到一组坐标,就是当前图上的样本点,旋转到主方向,得到的坐标就是主方向上的坐标,实际上,相当于在原始的积分图上计算harr特征。

SURF主要的步骤就是就是特征的提取,之后再加上一些图像的读取、处理等步骤,就可以完成对图像的匹配。

根据编程调试之后,得到的SURF算法匹配如图1.4-1.6所示,找出的匹配点十分吻合。

图1.4 蒙娜丽莎头像图像匹配

图1.5 蒙娜丽莎手匹配

图1.6 蒙娜丽莎图像匹配

参考文献:

[1]Herbert Bay,Tinne Tuytelaars. SURF:Speed Up Robust[C]. European Conference on Computer Vision, 2006, 404-417

视觉里程计原理(一)特征提取(SURF算法)

MPIG Seminar0045 Feature Extraction 陈伟杰 Machine Perception and Interaction Group (MPIG) https://www.360docs.net/doc/7f10310568.html, cwj@https://www.360docs.net/doc/7f10310568.html,

Feature Extraction Refined based on the book: Mastering OpenCV with Practical Computer Vision Projects_full.pdf and Bay H, Tuytelaars T, Van Gool L. Surf: Speeded up robust features [M]. Computer vision–ECCV 2006. Springer. 2006: 404-417.

or F for [R|t]Drawing path The main steps of Visual Odometry images parameters Feature Extraction Feature matching Compute E

First Feature Extraction What feature is? Characteristics can be easily identified in images Edges Corners Blobs lines points

Harris SIFT SURF Commonly used algorithm: ?Corner extractor ?Fast operation ?Poor resolution ?Not applicable when scale changes ?Blobs extractor ?Slow operation ?Good resolution ?Scale invariance ?Upgrade from SIFT ?Speed up ?More robust

SURF算法介绍

蒙娜丽莎的图像匹配---SURF算法 1.图像匹配 1.1.图像匹配的概念 图像匹配成为计算机视觉和图像处理中的一个重要技术。其方法思想就是根据己知的图像在其他图像中查找出含有己知图像的过程。图像匹配的架构流程如图1.1。该技术的研究涉及到许多相关的知识领域,如图像预处理、图像采样、特征提取等,同时将计算机视觉、多维信号处理和数值计算等紧密结合在一起。图像匹配技术还与图像融合、图像匹配等研究方向系系相关,为图像理解和图像复原等相关领域的研究提供基础。 图1.1 图像匹配流程图 图像匹配技术作为图像处理的关键技术之一,在国防领域和医学领域等得到广泛的研究和应用[2]。如果在不同视角,或是不同时间,或是使用了不同的传感器获取到的两幅或多幅图像间存在共同区域,如何寻找到图像间的共同区域,就是图像匹配需要解决的问题。 1.2.图像匹配的算法组成 图像匹配技术的分支很多,对图像匹配提出的构架也是千姿百态,根据布朗提出了图像匹配的组成要素,将图像匹配的要素主要分为四个方面,分别是图像的特征空间,为求取变换参数定义的搜索空间和搜索策略,图像匹配的相似性度量。 特征空间是指在待配图像和参考图像上提取到的一系列特征集合。将提取到的特征进行描述后参与最后的匹配,因此特征选取的好坏直接影响匹配的可行性和匹配的效果。好的特征是满足自动匹配的前提,因此选取的特征一般包含图像的关键信息,此类特征存在以下特性:首先,此类特征具有公有性、唯一性和显著性,保证匹配的顺利进行和匹配的精度;其次,此类特征具有多量性,而且分布合理,保证匹配的稳定性。合理的特征空间会降低匹配算法的计算量,提高算法的性能。 相似性度量是指评判待匹配图像和参考图像上特征的相似程度,它很大程度上决定了参与匹配的因素,一般采用某种代价函数或者是距离函数来进行度量。好的相似性度量不仅可以减少算法的计算量,而且对于算法的匹配性能和鲁棒性起着重要的作用。 搜索空间为求取图像变换参数的空间。它为图像间可能存在的所有变换组合的空间。搜索空间的组成取决于图像畸变的类型,而搜索空间的取值围取决于图像畸变的强度。假如图像间只存在平移和旋转变换,那么搜索空间为简单的二维

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矩阵行列式的近似值: 在Dxy上乘了一个加权系数0.9,目的是为了平衡因使用盒式滤波器近似所带来的误差: 2. 构建尺度空间 同Sift一样,Surf的尺度空间也是由O组L层组成,不同的是,Sift中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大;而在Surf中,不同组间图像的尺寸都是一致的,但不同组间使用的

SURF算法

SURF算法 SURF是一种尺度、旋转不变的detector和descriptor。最大的特点是快!在快的基础上保证性能(repeatability,distinctiveness 和robustness)。 SURF采用有效策略的主要有:1)积分图像(用于对图像卷积)2)detector 是基于Hessian矩阵,descriptor是基于分布的。 下面是SURF算法的具体实现: 1.兴趣点检测 SURF对于兴趣点的检测是基于最基本的Hessian近似矩阵。 1.1积分图像

1.2 用于检测兴趣点的Hessian矩阵 中得到启发,采用了盒子型滤波器(box filter)对上面的滤波器进行近似。盒子型滤波器见图1.3.

再根据filter的大小做一个归一化。这对于尺度不变性是有必要的。 有了前面的着一些准备工作,就可以对一幅图像I计算每个点的近似Hessian矩阵的行列式值,将这些值存储,备用! 1.3尺度空间表示 算法的尺度不变性主要靠不同尺度下寻找感兴趣点。谈到不同尺度就不得不说‘金字塔’。Lowe在其SIFT大作中是这样构造尺度空间的:对原图像不断地进行Gauss平滑+降采样。得到金字塔图像后,又进一步得到了DOG图,边和斑状结构就是通过DOG图得到其在原图的位置。SURF中的做法与SIFT是有所不同的。SIFT算法在构造金字塔图层时Gauss滤波器大小不变,改变的是图像的大小;而SURF则恰恰相反:图像大小保持不变,改变的是滤波器的大小。 之所以这么做的目的考虑的主要目的还是效率问题(这样可以利用积分图有关的快速计算,用不同size的Mask进行卷积运算,复杂度是一样的,仅仅是三个加减法而已)。而且,由于没有对图像进行降采样,所以不存在混叠现象。 与SIFT类似,SURF的尺度空间也是按组(Octaves)划分的。每一个Octave 里是对输入图像用size不断增加的filter进行滤波后得到的一系列响应。总的来说,一组包含了一个缩放因子。每一组内的层数是一个常量。

C#+EmguCV实现SURF算法

C#+EmguCV中SURF算法的实现 EmguCV的官方网站上的例子中,有SURF算法的实现,其实现的时候利用的GPU的加速,看着比较复杂。此外,官网上例子的实现并没有做界面,看着不舒服,加载图片也不是很方便,因此,为了学习,我将官网上的例子进行了修改,去掉了GPU加速的部分,然后在做了显示界面,操作起来更友好些。 我是在Vs2012下使用2.9 Alpha版本的EmgucV做的。 首先显示界面如下图所示,显示界面是两个窗体,第一个如下: 窗体上有两个PictureBox控件,一个用来显示待匹配的源图像,一个用来显示匹配的目标图像。 然后相对应的有三个Button控件,第一个用来打开源图像,第二个用来打开目标图像,第三个用来匹配,当点击第三个Button控件实现匹配,匹配的图像显示在新的窗体上,新的窗体很简单,就一个窗体,图像我们使用窗体的Paint 事件绘制在上面,第二个窗体如下:

其中button1实现的是打开源图像,代码如下: private void buttonSrc_Click(object sender, EventArgs e) { //Create open dialog; OpenFileDialog opnDlg = new OpenFileDialog(); opnDlg.Filter = "All Image files|*.bmp;*.gif;*.jpg;*.ico;*png"; //Seting the title of dialog; opnDlg.Title = "Open Src image files"; opnDlg.ShowHelp = true; if (opnDlg.ShowDialog() == DialogResult.OK) { curFileNameSrc = opnDlg.FileName; try { curBitmapSrc = new Bitmap(curFileNameSrc); pictureBoxSrc.Image = curBitmapSrc; } catch { MessageBox.Show("programe error");

surf算法详解

SURF学习笔记 Speed-Up Robust Features(SURF) SURF 是一种尺度,旋转不变的detector和descriptor.最大的特点是快!在快的基础上保证性能(repeatability,distinctiveness 和robustness)。 SURF采用有效策略的主要有:1)积分图(用于对图像卷积)2)detector是基于Hessian矩阵,descriptor是基于分布的 下面是SURF算法的具体实现: 1.兴趣点检测 SURF 对于兴趣点的检测是基于最基本的Hessian近似矩阵。 1.1积分图像 (由于不会在这里编辑公式,直接截图了)

PS:这里加一点自己的一点个人理解:关于矩形区域内像素点的求和应该是一种简单重复性运算,采用这种思路总体上提高了效率。为什么这么说呢?假设一幅图片共有n个像素点,则计算n个位置的积分图总共的加法运算有n-1次(注意:可不是 次哦,要充分利用递推思想),将这些结果保存在一个跟原图对应的矩阵M中。当需要计算图像中某个矩形区域内的所有像素之和是直接像查表一样,调出A,B,C,D四点的积分图值,简单的加减法(注意只需要三次哦)即可得到结果。反之,如果采用naive的方式直接在原图像 中的某个矩形区域内求和,你想想,总共可能的矩形组合有多少?!!且对于一幅图像n那是相当大啊,所以2^n 那可是天文数字,而且这里面绝大部分的矩形有重叠,重叠意味着什么?在算求和的时候有重复性的工作,其实我们是可以有效的利用已经计算过的信息的。这就是积分图法的内在思想:它实际上是先计算n个互不重叠(专业点说是不相交)的矩形区域内的像素点求和,充分利用这些值(已有值)计算未知值,有点类似递推的味道...这就完全避免了重复求和运算。 1.2 用于检测兴趣点的Hessian矩阵 作者Herbert Bay利用Hessian矩阵来检测兴趣点,具体是用Hessian矩阵行列式的最大值标记斑状结构(blob-like structure)的位置。同时,行列式值也作为尺度选择的依据,这里,作者是参考了Lindeberg的做法('Feature detection with automatic scale selection'我还没有拜读原文!!)。 说一下Hessian矩阵的定义:

相关文档
最新文档