SURF算法详解

news2024/9/22 5:35:51

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/564477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【投毒情报】PyPI中 colorara 等组件包泄漏主机截屏等敏感信息

漏洞描述 PyPI仓库中受影响版本的 colorara 和 libida组件在安装过程中会根据不同操作系统分别执行恶意逻辑,针对Windows执行White Snake远控木马,针对Linux收集系统截屏、主机名、用户名、IP等主机敏感信息发送至telegram。 漏洞名称PyPI中 colorara …

大数据可视化大屏电子沙盘合集

大数据可视化电子沙盘 使用HTML、CSS、JavaScript,实现的可视化大数据电子沙盘 如果觉得对你有用,随手点个 🌟 Star 🌟 支持下,这样才有持续下去的动力,谢谢!~ 体验地址&#xff0…

一文告诉你黑盒测试、白盒测试、集成测试和系统测试的区别与联系

于开发人员来说,往往对各种测试方法感到疑惑。特别是在整合代码的时候,我们就能深刻感觉受到测试的重要性。很多开发人员只注重写代码,轻视测试的重要性。总是代码一写完提交然后就交给测试组测试了,没多久测试组发回测试报告。然…

java 在线音乐网站系统Myeclipse开发mysql数据库struts2结构java编程计算机网页项目

一、源码特点 java 在线音乐网站系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助struts2开发技术,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mys…

二叉树初阶和堆的详解

前言:二叉树是一种基础数据结构,它由节点和边构成,其中每个节点最多只有两个子节点,称为左子节点和右子节点。二叉树具有许多应用,例如搜索算法和排序算法,还可以用于创建堆等高级数据结构。 堆是一种基于完…

一次完整的性能测试,测试人员需要做哪些工作?

今天和大家讲一下完成性能测试,测试人员需要做哪些工作?接下来一菲用四个步骤妥妥的教会你,啥叫完整的性能测试,请看好了呀! 一.流程概述 1.规范流程的意义 规范的性能测试实施流程能够加强测试工作流程控制&#x…

Unity3D安装:从命令行安装 Unity

推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 从命令行安装 Unity 如果要在组织中自动部署 Unity,可以从命令行安装 Editor 和其他组件。这些组件是普通的安装程序可执行程序和软件包,可以给用来自动部署…

【MySQL新手到通关】第四章 排序与分页

文章目录 🐼1. 排序数据🪂🪂1.1 排序规则🪂🪂1.2 单列排序🪂🪂1.3 多列排序 🐼2. 分页🪂🪂2.1 背景🪂🪂2.2 实现规则🪂&am…

实用交互设计工具大盘点

近年来,页面交互设计有了很好的发展,越来越受到人们的重视。如果你想成为一名页面交互设计师,除了对平面设计和产品设计有一定的了解外,更重要的是要知道哪个软件适合页面交互设计。本文将带您了解5款流行的页面交互设计软件。 1…

一题都看不懂,大厂面试真的变态......

最近我的一个读者朋友去了字节面试,来给我发信息吐槽,说字节的面试太困难了,像他这种三年经验的测试员,在技术面,居然一题都答不上来,这要多高的水平才能有资格去面试字节的测试岗位。 确实,字…

Hudi(三)集成Flink

1、环境准备 将编译好的jar包放到Flink的lib目录下。 cp hudi-flink1.13-bundle-0.12.0.jar /opt/module/flink-1.13.2/lib 2、sql-client方式 2.1、修改flink-conf.yaml配置 vim /opt/module/flink-1.13.2/conf/flink-conf.yamlstate.backend: rocksdb execution.checkpoi…

SpringCloud Gateway高级应用

目录 1 SpringCloud技术栈1.1 SpringCloud技术栈1.2 SpringCloud经典技术介绍1.3 SpringCloud项目场景 2 SpringCloud Gateway2.1 Gateway工作原理2.2 Gateway路由2.2.1 业务说明2.2.2 基于配置路由设置2.2.3 基于代码路由配置2.2.4 Gateway-Predicate2.2.5 断言源码剖析 2.3 G…

Settings apk进行系统签名覆盖安装

由于AndroidStudio中Settings编译出来的包是未签名的,不能将设备覆盖安装替换原先签名的包,故需要将AndroidStudio打包出来的apk进行签名 一.拷贝未签名的apk 注意签名过程需要在ubuntu中进行,所以需要将未签名的apk拷贝到ubuntu中,如下: 二.拷贝libconscrypt_openjd…

Sketch文件用什么软件打开

现在,想要在线打开 Sketch 文件只需要 2 步就能搞定了! 第一步,访问Windows 也能用的「协作版 Sketch」——即时设计官网并点击免费使用,即可进入即时设计工作台。 第二步,进入即时设计工作台后,点击【文件…

【软件分析/静态分析】学习笔记01——Introduction

🔗 课程链接:李樾老师和谭天老师的:南京大学《软件分析》课程01(Introduction)_哔哩哔哩_bilibili 目录 一、静态程序分析介绍 1.1 PL and Static Analysis 程序语言和静态分析 1.2 为什么要学 Static Analysis? …

JavaScript 基础 DOM (三)

日期对象 实例化 获得当前时间 const date new Date() 获得指定时间 const date1 new Date( 指定时间) 方法 // 1. 实例化const date new Date();// 2. 调用时间对象方法// 通过方法分别获取年、月、日,时、分、秒const year date.getFullYear(); // 四位年份 时…

JDK8以后接口的新特性

JDK8以前,接口内只能定义抽象方法; JDK8,接口内允许定义默认方法、静态方法; JDK9,接口内允许定义私有方法 default:默认方法 public interface Essay01 {/*** 在接口内定义默认方法*/public default v…

CMU - FarPlanning 代码速读

https://github.com/MichaelFYang/far_planner https://www.cmu-exploration.com/ 系统结构 Far Planner 属于 High-level planning module,进行全局规划,找到可行路径;将 way_point发布给 Local planner和 path following KeyPoint Local-la…

帮公司面了个要21K的测试,结果.....

深耕IT行业多年,我们发现,对于一个程序员而言,能去到一线互联网公司,会给我们以后的发展带来多大的影响。 很多人想说,这个我也知道,但是进大厂实在是太难了,简历投出去基本石沉大海&#xff0…

arm嵌入式系统下,手把手教你移植pppoe拨号客户端,使用pppoe拨号上网

移植pppoe拨号客户端 一、概述二、移植过程1、内核配置2、pppd工具编译3、pppoe工具编译 三、配置pppoe参数四、创建节点信息五、pppoe服务器搭建 一、概述 PPPoE(英语:Point-to-Point Protocol Over Ethernet),以太网上的点对点协…