KAZE 特征
本文是在研读论文KAZE Features的基础上以及看了作者源代码后的一个总结,由于能力有限,总结可能存在误差,读者可以在论文作者项目主页上下载源代码,更深入熟悉KAZE特征
一、特征简介
虽然sift,surf等特征在图像特征提取方面已经取得比较好的成绩,但是这类特征都是基于一个通过高斯核进行的线性的尺度空间进行特征检测的,相同尺度下每个点的变换是一样的,由于高斯函数是低通滤波函数,会平滑图像边缘,以至图像损失掉许多细节信息。针对这一问题,作者提出了一种基于非线性尺度空间的特征点检测方法,该非线性尺度空间保证了图像边缘在尺度变化中信息损失量非常少,从而极大地保持了图像细节信息。
二、KAZE 特征检测
1.1 非线性尺度空间构建
1.1.1 非线性尺度滤波
文中非线性尺度空间的构建主要基于非线性扩散滤波原理,非线性扩散滤波的基本公式是:
其中 div 和 ∇ 分别表示散度和梯度,而函数 c(x,y,t) 表示扩散的传导函数,正是该函数的引入使得扩散能够适应图像局部特征,在本文中该传导函数主要由梯度幅值控制,参数 t 是尺度参数。
1.1.2 Perona Malik 扩散方程
非线性滤波在图像方面的应用是由Perona 和 Malik 于1990年文章Scale-space and edge detection using annisotropic diffusion提出来的,为了尽量使平滑在区域内而不是区域间,减少在边缘处的扩散,Perona提出了一个使得传导函数
其中 Lσ 是原始图像高斯平滑后的梯度
Perona 提出了两个传导函数:
而后Weircket又提出了另外一个方程:
其中参数 k 表示控制扩散的对比因子,值越大,同一点处相对扩散越小。在文中作者主要通过图像梯度百分比完成,一般是k是梯度直方图中70%百分比的值,其求解伪代码如下:
ComputeContrast_K(img, kpercentile=0.7, nbins = 300):
//calculate gradient
foreach point in img:
calculate dx dy in x and y dirctions
mog = dx*dx + dy*dy
hmax = max[mog in img]
//calculate gradient histogram
foreach point in gradient:
nbin = floor(nbins*(mog/hmax));
hist[nbin]++
//find the perc of the histogram percentile
kp = the bin that make sum[0-kp] > kpercentile * npoints
k = hmax*((float)(kp)/(float)nbins);
return k
1.1.3 AOS方法求解非线性扩散方程
对于上述的非线性扩散偏微分方程没有解析解,只能通过一些数学方法近似求解该偏微分方程,本文主要引用了文章Efficient and Reliable Schemesfor Nonlinear Diffusion Filtering中的AOS求解方案。上述方程的离散化表达式如下: