KAZE特征的理解

KAZE特征的理解毕设要做图像配准,计划使用KAZE特征进行特征点的检测,以下是我对KAZE算法原理的理解,有什么不对的地方,希望提出来大家相互讨论学习。一、KAZE算法的由来KAZE算法是由法国学者在在2012年的ECCV会议中提出的,是一种比SIFT更稳定的特征检测算法。KAZE的取名是为了纪念尺度空间分析的开创者—日本学者Iijima。KAZE在日语中是‘风’的谐音,寓意是就像风的形成是空气在空间中非线性…

大家好,又见面了,我是你们的朋友全栈君。

毕设要做图像配准,计划使用KAZE特征进行特征点的检测,以下是我对KAZE算法原理的理解,有什么不对的地方,希望提出来大家相互讨论学习。
一、KAZE算法的由来
KAZE算法是由法国学者在在2012年的ECCV会议中提出的,是一种比SIFT更稳定的特征检测算法。KAZE的取名是为了纪念尺度空间分析的开创者—日本学者Iijima。KAZE在日语中是‘风’的谐音,寓意是就像风的形成是空气在空间中非线性的流动过程一样,KAZE特征检测是在图像域中进行非线性扩散处理的过程。
KAZE算法的原英文文献《KAZE Features》的地址为:https://link.springer.com/chapter/10.1007/978-3-642-33783-3_16
二、KAZE算法的原理
SITF、SURF算法是通过线性尺度空间,在线性尺度空间来检测特征点的,容易造成边界模糊和细节丢失;而KAZE算法是通过构造非线性尺度空间,并在非线性尺度空间来检测特征点,保留了更多的图像细节。KAZE算法主要包括以下步骤:
(1)非线性尺度空间的构建;
(2)特征点的检测与精确定位;
(3)特征点主方向的确定;
(4)特征描述子的生成。
下面详细讲述每一步的具体过程。
1.非线性尺度空间的构建
KAZE算法作者通过非线性扩散滤波和加性算子分裂(AOS)算法来构造非线性尺度空间。在此有必要了解下非线性扩散滤波和AOS算法。
(1) 非线性扩散滤波
非线性扩散滤波方法是将图像亮度(L)在不同尺度上的变化视为某种形式的流动函数的散度,可以通过非线性偏微分方程来描述:
KAZE特征的理解
其中c(x,y,t)为传导函数,可由下式来构造:
在这里插入图片描述
其中的▽Lσ是高斯平滑后的图像Lσ的梯度,《KAZE Features》一文中给出了g()函数的几种表达形式:
在这里插入图片描述
在这里插入图片描述
其中g1能够保留高对比度的边缘,g2能够保留宽度较大的区域,g3能够有效平滑区域内部而保留边界信息,《KAZE Features》一文中选择g2。参数k是控制扩散级别的对比度因子,决定保留多少边缘信息,其值越大,保留的边缘信息越少。
(2)AOS算法
非线性扩散滤波中的偏微分方程没有解析解。因此,需要使用数值方法来逼近微分方程。将上述偏微分方程离散化:
在这里插入图片描述
其中Al是表示图像在各维度(l)上传导性的矩阵,τ为时间步长。该方程的解如下:
在这里插入图片描述
了解了非线性扩散滤波和AOS算法后,下面进入我们的正题——非线性尺度空间的构建。
KAZE特征的尺度空间构造与SIFT类似,尺度级别按对数递增,但KAZE的各个层级均采用与原始图像相同的分辨率。
SIFT算法中线性尺度空间的构建是由由高斯金字塔相邻两层相减得到DOG金字塔的。需对对原始图像进行下采样,每次下采样所得到的新图像为金字塔的一层,多次下采样操作便构成了图像金字塔。为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波。将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave)。由SIFT算法特征点的检测过程知道,要使每组中检测S个尺度的极值点,则DOG金字塔每组需S+2层图像,高斯金字塔每组需S+3层图像。
那么,构建尺度空间的参数:
在这里插入图片描述
如何确定呢?
以上三个参数具有关系:
在这里插入图片描述
其中是σ0基准层尺度,o为组octave的索引,s为组内层的索引。关键点的尺度参数就是按关键点所在的组和组内的层数,结合上式计算来的(所以在后面特征描述符的生成中,对于对于处在同一组的同一层中的特征点的描述符相同)。
在构建高斯金字塔时,组内每层的尺度参数按如下公式计算:
在这里插入图片描述
其中
在这里插入图片描述
其中σ0为初始尺度,lowe取1.6,s为组内的层索引,S=3。由上式可知,不同组相同层的组内尺度参数相同。
在计算组内某一层图像的尺度时,直接使用如下公式进行计算:
在这里插入图片描述
为了保证尺度空间的连续性,下一组的第1层图像是由上一组的倒数第三层下采样得到的。假设第一组的初始尺度为σ,则第一组中每层的尺度参数依次为:σ,kσ,kkσ,kkkσ,kkkkσ…倒数第三层的尺度为
在这里插入图片描述
而DoG金字塔中间的层数被选出来检测极值点,第一组是kσ,kkσ,kkkσ,第二组是2kσ,2kkσ,2kkkσ,而kkkσ=2σ,2kσ,2kkσ,2kkkσ=kkkkσ,kkkkkσ,kkkkkkσ,和第一组的连续起来了,保证了尺度空间的连续性。下图是SIFT算法构造尺度空间的过程。
在这里插入图片描述
而KAZE的不同之处是,无需对图像进行下采样,各个层级均采用与原始图像相同的分辨率。非线性扩散滤波模型是以时间为单位的,故需要将尺度参数转换为时间(此处称为进化时间)。在高斯尺度空间下,使用标准差为σ的高斯核对图像进行卷积,相当于对图像进行持续时间为t=σσ/2的滤波,故两者的转换公式为:t=σσ/2。根据一组进化时间,利用AOS算法即可得到非线性尺度空间的所有图像:
在这里插入图片描述
2.特征点的检测与精确定位
(1)特征点的检测
KAZE的特征点检测与SIFT类似。是通过寻找不同尺度归一化后的Hessian行列式的局部极大值(或者极小值)点来实现的。
在这里插入图片描述
如上图中画×的特征点,比较其与同一层中周围的8个像素点,再加上相邻层的9+9=18个像素点,即26个像素点,当其大于(或者小于)所有相邻点时,该点就是极值点。
(2).特征点的精确定位
这一过程和SIFT一样,通过泰勒表达式:
在这里插入图片描述
对其求导数,并令导数等于零,解得
在这里插入图片描述
将解带入泰勒表达式,得
在这里插入图片描述
在这里插入图片描述
时保留该特征点,否则剔除。
3.特征点主方向的确定
这一过程和SURF一样。若特征点的尺度参数为σi,则搜索半径设为6σi。在这个圆形领域内做一个60度的扇形区域,统计这个扇形区域内的haar小波特征总和,然后转动扇形区域,再统计小波特征总和。小波特征总和最大的方向为主方向。
在这里插入图片描述
4.特征描述子的生成
对于尺度参数为σi的特征点,在梯度图像上以特征点为中心取一个24σi×24σi的窗口,并将窗口划分为4×4个子区域,每个子区域大小为9σi×9σi,相邻的子区域有宽度为2σi的交叠带(此处我认为应该是相邻的子区域有宽度为4σi的交叠带,不然24σi不够划分为4×4个子区域)。每个子区域都用一个高斯核(σ1 =2.5σi)进行加权,然后计算出长度为4的子区域描述向量:
在这里插入图片描述
再通过另一个大小为4×4的高斯窗口(σ2 =1.5σi)对每个子区域的向量dv进行加权,最后进行归一化处理。这样就得到了4×4×4=64维的描述向量。
到此KAZE特征检测算法的原理算是讲完了,下面说一下KAZE特征的优缺点。
优点:
(1)在图像模糊、噪声干扰和压缩重构等造成的信息丢失的情况下,KAZE特征的鲁棒性明显优于其它特征。
(2)相比于线性尺度空间,非线性尺度空间不会造成边界模糊和细节丢失,而且更稳定。
缺点:
(1)KAZE算法在尺度不变性上是逊于SIFT的。
(2)KAZE特征的匹配对参数的设置比较敏感。
(3)KAZE特征的检测时间高于SURF,但与SIFT相近。

但KAZE特征是如何保证尺度不变性的?首先尺度不变性是指,不论原图怎么缩放,都能够找到相同的特征点。我个人看法是,在图像配准过程中,虽然浮动图像和参考图像可能在尺度上存在一定的缩放,但他们在非线性尺度空间中,肯定存在两幅图像在尺度上是相同的(由非线性尺度空间的构建可知),那么在这两幅相同尺度的图像中进行特征点的检测,生成的描述子应该是相同的,进而保证了尺度不变性。
但这只是我的个人见解,本人太菜,也不知道正确与否,哪里有不对的地方,欢迎留言讨论,相互学习!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148463.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月29日 上午7:16
下一篇 2022年6月29日 上午7:16


相关推荐

  • httprunner(3)用脚手架快速搭建项目

    httprunner(3)用脚手架快速搭建项目前言如何快速搭建一个httprunner项目呢?我们可以使用脚手架,脚手架就是自动地创建一些目录,形成一个项目的架构,不需要我们再手动的去创建查看创建新项目的命令先来查看一下帮助命令httpr

    2022年7月29日
    20
  • response 的ContentType 说明[通俗易懂]

    response 的ContentType 说明[通俗易懂]不同的ContentType会影响客户端所看到的效果.默认的ContentType为text/html也就是网页格式.代码如: 显示的为网页,而 则会显示html原代码.以下为一些常用的ContentTypeGIFimages  JPEGimages  TIFFimages  MICROS

    2022年7月19日
    36
  • java中判断字符串是否日期格式的方法建议收藏

    大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。此处内容已经被作者隐藏,请输入验证码查看内容验证码:请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全…

    未分类 2021年12月18日
    61
  • SQL的主键和外键约束

    SQL的主键和外键约束SQL 的主键和外键的作用 nbsp nbsp 外键取值规则 空值或参照的主键值 1 插入非空值时 如果主键表中没有这个值 则不能插入 2 更新时 不能改为主键表中没有的值 3 删除主键表记录时 你可以在建外键时选定外键记录一起级联删除还是拒绝删除 4 更新主键记录时 同样有级联更新和拒绝执行的选择 简而言之 SQL 的主键和外键就是起约束作用 nbsp nbsp 定义主键和外键主要

    2026年3月26日
    2
  • 使用AOP实现自定义注解以及获取用户请求IP

    使用AOP实现自定义注解以及获取用户请求IP使用 AOP 实现自定义注解功能 1 先导入 AOP 依赖 2 编写一个注解 3 使用 AOP 对注解进行增强完成验证邮箱的逻辑 4 在需要进行邮箱验证的方法上添加自定义注解 VerifyMailbo value true 表示需要进行邮箱验证 VerifyMailbo value false 表示不需要进行邮箱验证使用 AOP 对 controller 方法进行增强使用 IP 工具类获取用户请求 IP 我的学习论坛

    2026年3月17日
    2
  • n8n部署教程

    n8n部署教程

    2026年3月15日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号