kaze算法的图像配准研究(1)-KAZE算法原理

来源:互联网 发布:淘宝开学季有什么优惠 编辑:程序博客网 时间:2024/05/18 23:16

一:KAZE算法的由来
在2012年,ECCV会议中出现了一种比SIFT更稳定的特征检测算法。KAZE的取名是为了纪念尺度空间分析的开创者—日本学者Iijima。KAZE在日语中是‘风’的谐音,寓意是就像风的形成是空气在空间中非线性的流动过程一样,KAZE特征检测是在图像域中进行非线性扩散处理的过程。
二:KAZE算法的原理
(1)尺度空间的概念(Scale space)
尺度空间是在计算机视觉理论里面发展出来的的一个用来表示多尺度信号的理论。它通过将原始图像进行平滑,从而得到多尺度下的图像结构,图像结构取决于尺度参数t [1]。
以高斯卷积核为例, 高斯卷积核如下所示:

G(xi,yi,σ)=12πσ2exp((xxi)2+(yyi)22σ2)

高斯卷积核的图像为:

这里写图片描述

将高斯卷积核与原图像做卷积,可以得到一族图像:

L(xi,yi,σ)=I(xi,yi)G(xi,yi,σ)

σ取不同的值时,这一族图像构成了一个尺度空间。

构成尺度空间的核有无数个。但是只有高斯卷积核可以构建线性尺度空间,因为只有高斯卷积核在低分辨率的尺度空间上没有引入新的极值点。

(2)SIFT算法的原理。
作为特征子检测的经典算法,SIFT算法以及它的变种算法SURF得到了广泛的应用。然而SIFT算法的发明人Lowe已将SIFT算法申请专利,因此对于商业用途而言,使用SIFT算法进行图像匹配有待商榷。虽然如此,SIFT算法的原理是非常值得借鉴的。
SIFT算法的原理是生成尺度空间连续的图像金字塔,又称为DOG(Difference of Gaussian),步奏如下:
(1)对图像进行降采样,生成图像金字塔,每一层图像金字塔的大小都是前一层的一半。因此假设原图像大小为m*n,那么最多可以生成的图像金字塔层数为:

log2min(m,n)

生成图像金字塔后,对每一层进行不同尺度的高斯采样。得到的高斯图像金字塔如下所示:
这里写图片描述
假设每一层金字塔进行的高斯卷积为S层,SIFT为了定义连续的DOG(Difference of Gausissan),每一层图像的尺度的尺度为:
2o1(σ,kσ,k2σ....)

k=21/S

将连续尺度的高斯卷积图像尺度空间进行减法操作,即得到了DOG空间(DOG空间是LOG空间的近似)
这里写图片描述
然后在尺度空间寻找极值点,便可以初步实现特征点的检测。
这里写图片描述

SIFT算法在后续的特征点检测中,还为该特征点方向进行赋值,以实现旋转不变性。这里就不展开了。

(3)KAZE算法
KAZE算法与SIFT算法不一样,它采用的是非线性扩散滤波法。
具体地,非线性扩散滤波法是将图像亮度(L)在不同尺度上的变化视为某种形式的流动函数(flow function)的散度(divergence),可以通过非线性偏微分方程来描述:

Lt=div(c(x,y,t)L)       (1)

通过设置合适的传导函数 c(x,y,t) ,可以使得扩散自适应于图像的局部结构。传导函数可以是标量、也可以是张量。时间t作为尺度参数,其值越大、则图像的表示形式越简单。
Perona和Malik提出了传导函数的构造方式:
c(x,y,t)=g(|Lσ(x,y,t)|)

g1=exp(|Lσ|2k2)

g2=11+|Lσ|2k2

g3=1,|Lσ|2=0

g3=1exp(3.115(|Lσ|k)8),|Lσ|2>0

其中函数g1优先保留高对比度的边缘,g2优先保留宽度较大的区域,g3能够有效平滑区域内部而保留边界信息(KAZE代码中默认采用函数g2)

由(1)中所示的非线性微分方程可知,随着时间t的推移,图像L(x,y,t)也在进行变化,由此构成非线性尺度空间。
这里写图片描述

上图是论文中关于高斯尺度空间和非线性尺度空间的比较。可以知道,相比于线性尺度空间,非线性尺度空间并不会模糊原图像。

由于非线性微分方程没有解析解,一般通过数值分析的方法进行迭代求解。传统上采用显式差分格式的求解方法只能采用小步长,收敛缓慢。KAZE中采用AOS(Additive Operator Splitting)算法对结果进行收敛。这一部分以后再分析。

阅读全文
0 0