大家好,又见面了,我是你们的朋友全栈君。
AKAZE是KAZE的加速版本。KAZE在构建非线性空间的过程中很耗时,在AKAZE中将Fast Explicit Diffusion(FED)加入到金字塔框架可以dramatically speed-up。在描述子方面,AKAZE使用了更高效的Modified Local Difference Binary(M-LDB),可以从非线性空间中利用梯度信息gradient information。M-LDB是旋转和尺度不变的,并且对内存的要求更低。
1 Introduction
最出名的SIFT和SURF都使用了高斯尺度空间Gaussian scale space,区别是SIFT在金字塔框架下构建高斯尺度空间,SURF通过盒子滤波近似得到高斯微分Gaussian derivatives。他们都有一个缺点就是高斯滤波无法保留边缘,它会把所有尺度的细节和噪声平滑到相同的水平。损失了位置精度和独特性。
KAZE和BFSIFT都在非线性尺度空间中进行特征点的检测和描述,这样可以使得模糊根据图像内容自适应地调整,保留边界。KAZE相比于SIFT和SURF,提高了重复度repeatability和独特性distinctiveness。KAZE的缺点是计算量大computationaly intense,因为非线性扩散方程没有解析解analytical solutions,所以需要数值方法numerical methods来近似,其中一种方法就是Additive Operator Splitting(AOS)。BFSIFT则将标准的高斯尺度空间通过双边滤波用各向异性尺度空间来代替。BFSIFT可以提高SIFT在SAR(Synthetic Aperture Radar)图像中的表现,SAR图像中有较多的斑点噪声(speckle noise).但是,双边滤波也是一个耗时的过程,所以无法使用在实时性图像匹配的应用中。
移动设备的计算能力是有限的,所以一些算法希望在保持性能的同时减少计算量。ORB和BRISK都结合了FAST算法和二进制的描述子BRIEF,比SIFT和SURF速度快了许多,但只有在图像变换程度较小时才能保证一定的性能。
在这篇文章中,使用了Fast Explicit Diffusion(FED),可以更快地构建非线性尺度空间,易于实施easy to implement,比AOS更准确。将FED方法应用于金字塔框架中,策略是fine to coarse,由精到粗?
为了达到低计算量,降低对内存的需求,还提出了一种高效的M-LDB描述子。因为原始的LDB方法和BRIEF一样,对旋转和尺度没有不变性,所以要在非线性空间中利用梯度信息进行改进。
2 Nonlinear Diffusion Filtering
非线性扩散方程是将图像在不同尺度水平的亮度的演进描述为流动方程flow function的散度divergence。这个可以通过非线性偏微分方程nonlinear partial differential(PDEs)来表示,因为图像亮度通过非线性尺度空间进行扩散的微分方程的非线性特性。
传导函数的值由差分结构differential structure决定,所以传导函数使得扩散可以根据图像结构自适应滤波。时间t是尺度参数,t越大,得到的图像形式越简单.
传导函数有多种选取方法。传导函数是原始图像的高斯平滑版本的梯度图gradient of a Gaussian smoothed version of the original image的复合函数。其中又有一个对比度参数,决定图像的哪些部分被保留或者加强。
因为没有解析解,需要通过离散化PDE来近似求解。最简单的方法是explicit schemes,因为可以直接使用,缺点是由于稳定问题,许多迭代需要达到理想的尺度水平,这样会造成计算量大。另外一种是使用semi-implicit,可以借助AOS高效计算,因为AOS在任意步长下都是稳定的,缺点是AOS在每一步都需要求解大量的线性方程组。
2.1
FED结合了explicit和semi-implicit方法的优点,同时避免他们的缺点。FED是被explicit的盒子滤波的分解启发的。盒子滤波可以很好地近似高斯核,加快速度,易于实施。主要思想是执行M次循环,每次循环有n步explicit扩散,每一步的步长是变化的,初始步长起源于盒子滤波的因式分解。
是不违反explicit scheme的稳定条件的最大步长。对应的一次FED循环的停止时间 可以由下式得到:
个别步长其实会违反稳定条件,但是由于FED和盒子滤波的相似性,我们最终在FED停止循环会得到稳定的scheme。非线性扩散方程的矩阵形式:
是图像传导函数的编码,是一个常数,表示时间步长,保证满足稳定条件。在explicit scheme中,解可以直接由前一个演化水平和图像传导函数求得:
I是单位矩阵identity matrix。先验估计 ,则FED的n次循环是:
是每次的可变步长。需要注意的是在每次循环中,是保持不变的。
3 Accelerated-KAZE Features
3.1 Building a Nonlinear Scale Space with Fast Explicit Diffusion
和KAZE一样,第一步建立O个octaves,S个sub-levels,并计算出每子层的高斯尺度,为了使用扩散方程,要把离散的尺度因子转换成时间单位。从高斯平滑的图像,可以求得对比度因子,可取值为梯度直方图的70%。
在得到输入图像和对比度因子之后就可以开始FED算法了。分成两个循环,外循环有M-1个,因为我们目标是得到M个过滤后的图像。每一个外循环需要计算对应的内循环的最小步数。在2D图像中,考虑的方框大小是1个像素时(considering a grid size of 1 pixel for the image derivatives),满足违反稳定条件的最大step size是。每个外循环的时间 ,每个内循环的时间在公式中已被定义,只有几组离散的取值。为了满足循环时间T的任意性In order to allow arbitrary cycle times T,需要计算内循环的最短循环长度n,将每次内循环时的steps sizes乘一个缩放因子 ,其中。
在文献6,7中使用FED的策略是coarse to fine的金字塔分解pyramidal decomposition.,因为这些文章的应用场景是去噪,图像修复inpainting或者可变的图像光流variational optical flow,感兴趣的是演化的稳定状态,t逼近于无穷大,使用coarse to fine可以更快地达到稳定状态。而在我们在研究内容中,目标是得到一组过滤后的图像,使用的策略是fine to coarse。
在每一个octave中达到最后一个子层后,需要进行倍数为2 的下采样,使用平滑模板 。下采样后的图像作为下一个octave的初始图像,并开始FED循环。在下采样之后还需要重新调整对比度因子,因为平滑模板使得边缘对比度减少了25%,所以对比度因子需要乘0.75进行调节。
3.2 Feature Detection
对每一个过滤后的图像求其Hessian矩阵的特征值determinant。为了考虑每个过滤图像的octave,对不同尺度的算子归一化使用尺度因子进行归一化
为了计算二阶导,我们利用了添加了步长step size的Scharr滤波器。Scharr滤波器是近似旋转不变性的。首先在空域spatial location内寻找极大值点maxima。具体是在每一个演化水平evolution level i上检查检测器的响应,响应大于设定的阈值并且是否在3×3的邻域内是极大值。这样可以迅速舍弃掉非极大值响应。对每一个潜在的极大值点,再检验其在上下相邻的演化水平的窗口内是否是极大值。相比于SIFT和SURF在27个像素的范围内寻找极值,这样可以及早地剔除掉非极大值。最后,通过对Hessian矩阵的行列式进行二次方程2D quadratic function的拟合可以得到特征点的亚像素sub-pixel级别的精确定位。
3.3 Feature Description
二进制描述子如BRIEF,ORB,BRISK被广泛认可,因为可以很高效地被计算和匹配。虽然如此,直到最近人们才弄清楚这些二进制描述子的工作机理。Ziegler的工作表明不是之前认为的二进制描述子可以估计图像的梯度信息,而是kendall的 tau矩阵下的局部敏感哈希locality sensitive hashing(LSH)。他们还提出了LUCID描述子,使用了一个稳定的排序算法对特征点邻域内的像素值进行排序。使用Kendall的tau距离的复杂度是O(nlogn),所以建立使用汉明距离。LUCID的结果比BRIEF要稍微差一点,表明使用哈希进行降维没有提升性能。
我们提出了M-LDB,从非线性尺度空间提取了梯度gradient和强度intensity信息。LDB在文献20中被提出,LDB的基本原则和BRIEF是一样的,但是为了更具有鲁棒性,是在区域的均值之间使用二进制集binary tests而不是单独的像素之间using binary tests between the average of areas instead of single pixels for additional robustness.对于强度值intensity values,比较区域中水平和垂直方向的偏导,每个比较结果用3bits表示。LDB提出使用可变的方框grids,将邻域patch分成2×2,3×3,4×4的方框。如果描述子是垂直upright的(没有旋转不变性),这些子方框的均值可以使用积分图integral images很快被计算出来。但是,如果考虑特征点的选择,积分图就失效了,访问子方框中的点就变得很耗时。旋转不变性通过KAZE中的方法找到主方向,然后LDB的方框根据主方向调整到水平或者垂直方向。Instead of使用子方框中所有的像素计算均值,而是对方框进行下采样,采样的倍数是特征点所在尺度的函数,与尺度相关的采样scale-dependent sampling使得描述子对尺度变换具有鲁棒性。实验表明这种对均值的近似表现良好。M-LDB可以使用特征点检测步骤中计算出的导数,减少了描述子生成过程中的计算量。
M-LDB计算得到强度图和梯度图的相同区域下的均值的近似值。由比较对得到的布尔值之间不是互相独立的。可以使用文献20中的随机选取二进制字符串的子集减小描述子的大小,或者使用文献5和15中的ORB算法改善结果。
4 Experimental Results
我们使用文献9中的VLBenchmarks框架来评估检测器的可重复度http://www.vlfeat.org/benchmarks/。VLBenchmarks是一个MATLAB的框架,用于测试图像特征检测和描述子,使用了文献12中对于局部检测器评估的协议。重复度衡量的是包含相同场景的两幅不同的图像在特征检测之后被检测到的区域的重叠程度。The detector repeatability measures to what extent do detected regions overlap exactly the same scene region by comparing detected features in two images of the same scene.我们认为当重叠错误率overlap error小于40%时认为是对应的correspondence。此外,我们还附加认为对应区域的特征点的相对位置必须小于2.5个像素,例如 ,H是两幅图像之间单应矩阵真值true homography。实验比较了A-KAZE与BRISK、ORB、SURF、SIFT和KAZE。KAZE使用了作者的源码,其余算法使用了OpenCV库。
图2展示了使用牛津大学数据集的含旋转synthetic rotation和高斯噪声变换的图像组的检测器重复度得分。对于旋转中的合成变换synthetic changes,我们consider的是Graffiti图像组中的第一幅图像。AKAZE在所有实验中都取得了很好的表现,KAZE的得分和AKAZE接近,但是KAZE的速度慢了几个数量级severl orders of magnitude slower。KAZE在相同的图像分辨率下进行非线性扩散滤波和特征检测。A-KAZE在每个尺度上进行下采样,加快了非线性尺度空间的构建和检测。下采样没有对检测器产生负面影响,这是因为非线性扩散滤波作用在每个像素的很小的邻域上mainly acts within a fairly small vicinity around each pixel.。AKAZE性能更好的一个原因是FED方法比AOS更加精确,所以在FED下的非线性扩散方程离散化的错误更少。
对于快速特征点检测算法如ORB和BRISK,当增加了像素位置限制后,这些算法的表现出现了急剧下降,尤其是BRISK。注意,我们的评估和文献10中的不同,因为文献10中只考虑了特征点之间的overlap area error。ORB没有在尺度空间上进行非极大值抑制,所以在不同的尺度上会出现重复的特征点。我们认为ORB和BRISK检测表现较差的原因是使用了FASR角点检测的变形。正如文献1中的评估结果所说,FAST用于解决大尺度图像变换下的图像匹配问题是不可靠的is unreliable for solving image matching problems under large image transformations.。综上,基于Hessian矩阵或者高斯差分的特征检测是更受欢迎的。表1描述了结合了检测器和描述子在评价指标Matching Score(MS)和Recall(RC)下的表现,这两个指标的具体含义可以在文献8中找到。MS = # Correct Matches=# Features,描述了导致正确匹配的特征点数目,RC =
# Correct Matches=# Correspondences,和MS相似,但是受到重复度的影响,因为重复度影响correspondences的数目。我们采取了SIFT中的最近邻比率的匹配准则nearest neighbor distance ratio matching criteria,使用的描述子的距离比值是0.8.判断是否是正确匹配对的准则和检测器的准则一样:重叠区域错误为40%,像素位置误差为2.5个像素。
我们还使用随机比特选择的方法测试了改变描述子的大小对于性能的影响。在表1中可以看到,486bits的A-KAZE和KAZE在大部分实验中都取得了最好的表现,例外是在Boat图像组中SIFT取得了更好的效果。256bits版本的A-KAZE的性能和486bits版本相近,更有意思的是,64bits版本的A-KAZE在近一半的情景下甚至可以取得比原始版本A-KAZE更好的表现。
图3中的a,b以Precision为纵坐标,Precision = # Correct Matches=# Putative Matches。a图描述了Precision与描述子比特数的关系,可以看到在描述子长度大于96bits时,性能表现和486bits的完全版本处于同一个水平,在比特数大于128后性能提升很有限。图b是Wall数据集的视角变化的实验,表现了性能与M-LDB的通道数的关系。3通道指描述子综合考虑了强度intensity和想,y方向上的微分,单通道指仅仅考虑了强度。
图c描述了结合了检测器和描述子的时间性能评估。不同算法对Graffiti图像组的第一幅图像提取1000个特征点,图像的尺寸为800×640,。实验平台的CPU是Intel Core i7-3770。借助了OpenCV图像库对算法进行实现,因为OpenCV对算法的速度进行了优化,所以还另外增加了使用SURF源码和来自VLFeat库实现SIFT的实验。A-KAZE比ORB和BRISK要慢,但是快于SURF,SIFT,KAZE。A-KAZE与KAZE的性能接近,但是速度是KAZE的好几个数量级。因为使用了二进制的描述子,在匹配步骤可以使用汉明距离而高效地计算。此外,还利用文献22中的高帧率的目标追踪检测图像集来比较A-KAZE和BRISK和ORB的检测器性能。
5 Conclusions
文章介绍了运用在特征检测和描述中的FED算法。通过FED算法可以减少在构建非线性空间中的计算量。还介绍了一个全新的LDB的改进版本作为描述子,这种描述子更高效,对旋转和尺度变换具有不变性。A-KAZE在检测和描述中都取得了很好的性能,计算量小,占用内存也小。A-KAZE的源码使用了C++作为语言,并且调用了一些OpenCV中的函数。可以在作者网站进行下载。www.robesafe.com/personal/pablo.alcantarilla/kaze.html
Reference:
https://blog.csdn.net/small_munich/article/details/79585808
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149615.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...