Harris-Affine仿射不变特征匹配算法

Harris-Affine原理概述

    文末已添加Github代码链接地址

尺度不变Harris-Laplace角点算法简述

  经典Harris作为当下运用最为广泛的提取角点算子,具有旋转、尺度、部分光照不变性,计算简单。Hessian角点检测是比Harris算子的更加稳定的角点检测算子只是计算效率相比Harris要高。随着Harris算子提出进一步发展为具有尺度不变性的角点检测算子Harris-LaplaceHarris-Laplace尺度不变算子主要通过在尺度空间图像上检测角点时添加尺度参数,主要步骤:
  1 当前尺度图像上搜索每一个候选点进行拉普拉斯响应值计算,满足Harris矩阵绝大值大于给定阈值条件。

F(x,y,σn)=σ2|Lxx(x,y,σn)+Lyy(x,y,σn)|thresholdL F ( x , y , σ n ) = σ 2 | L x x ( x , y , σ n ) + L y y ( x , y , σ n ) | ≥ t h r e s h o l d L
  2 随后,检测到的 Harris角点与上下两层临近的拉普拉斯响应值进行比较,当前层的响应值大于临近上下两层。满足上述两步的尺度特征就是在尺度空间上提取的尺度不变特征点。
F(x,σn)>F(x,σl)   l[n1,n+1] F ( x , σ n ) > F ( x , σ l )       l ∈ [ n − 1 , n + 1 ]

图1 Harris-Laplace尺度空间搜索特征点

  当然求得候选的尺度空间不变点能够进一步进行精确化,通过迭代运算调整尺度参数收敛,非极大值抑制尺度归一化后多个相同或类似点的筛选。精确化尺度不变 Harris-Laplace角点将会提升时间复杂度。 [关于Harris-Laplace尺度不变特征点不再详细描述]。

为什么Harris-Laplace角点具有尺度不变性?

  对于同一个景物,在不同传感器观察距离远近不同、焦距不同,导致成像分辨率不同(带来特征尺度值也不相同)。但是经过实验统计出来特征尺度之所对应的区域(在3 σ σ 为半径范围圆形区域)具有尺度不变性。因此,当Harris算子在尺度空间的每一层图像进行特征点搜索记录当前层的极值点,同时对比上下两层尺度参数相差为 σ σ 的图像相同位置比较,来进行不同尺度下极值点确定。通过这种策略来提取尺度不变点。

Harris-Affine仿射不变点

  图像之间的仿射变换是由于传感器视差导致的成像仿射变化。如何对仿射变换下提取特征不变点引起研究者的兴趣。Harris-Affine算法能够检测仿射变换和不同光照变化下图像的相似区域,其检测出来的角点区域具有不变性协变性不变性是指检测到的角点位置独立于图像变换,不随着图像的变换而变动(特征点提取)协变性是指区域的特征描述随着图像的变换而变换(即特征描述子是区域变换后才进行提取)

图2 Harris-Affine提取特征点及其描述子过程

  在图2中对仿射区域进行区域拉伸或者压缩插值归一化后,进行局部特征区域的描述子提取,采用经典的SIFT描述子梯度差分直方图方法,或者GLOH梯度方向直方图等等。这样求取出来的描述子具备仿射不变性能,最后进行局部描述子匹配来提升图像仿射匹配鲁棒性。

Harris-Affine是在多尺度Harris特征点提取后如何迭代收敛的?

  不论是一阶微分Harris算子还是二阶微分Hessian算子,求取特征点响应极值时候自相关矩阵 M(x,y) M ( x , y ) 如下(以Hessian矩阵为例):


  因此获取每个尺度上的响应矩阵值 λmax λ m a x λmin λ m i n 就可以得到椭圆的长短半轴大小,椭圆的方向由 M(x,y) M ( x , y ) 的特征矢量来决定。椭圆的大小求取如下图所示:
图3 椭圆的大小长短半轴示意图

  可能你疑问,上述 Harris-Affine迭代求取的椭圆最后好像椭圆的大小一致了,不像之前多尺度Harris画出的尺度大小。没错,这里在迭代椭圆过程中,通过 M(x,y) M ( x , y ) 获取当前尺度下的椭圆长短半轴,随后还要进行尺度参数的归一化:即长短半轴要按比例乘以尺度的系数进行椭圆的放大或者缩小。因此迭代收敛之后的椭圆大小几乎一致。
  
  当迭代收敛多尺度归一化椭圆之后,会存在许多接近的椭圆个数。通过非极大值抑制策略进行筛选出最优的仿射变换估计椭圆。最后,根据椭圆的长短半轴进行区域的仿射归一化插值还原(拉伸或者压缩取决于椭圆长短轴)。一般采取椭圆长轴经过插值到短轴的等比例大小。

为什么Harris-Affine具有仿射不变性?

  Harris-Affine仿射不变角点检测算子借助特征点二阶矩能够具备仿射不变性,因此首先在尺度空间上提取Harris-Laplace特征点(迭代精确特征尺度)作为初始的仿射不变候选点。随后进行特征点周围的二阶矩计算对特征点邻域区域进行归一化运算。关于二阶矩具体理论细节可以参考论文[Reliable Feature Matching Across Widely Separated Views]。

Hessian-Affine匹配算法

  Two-Views Image仿射匹配算法是过去二十年局部特征发展的热点与难点,最先由Lindeberg研究仿射不变高斯尺度空间方法时提出通过二阶矩描述符的性质来恢复区域的方向。Krystian Mikolajczyk受到二阶矩对区域仿射不变性的启发,将其性质引入Harris-Laplace角点检测之中,获取局部特征仿射不变性能。同时,Krystian Mikolajczyk进一步发力提出Hessian-Affine仿射不变,稳定性和匹配性能要优于Harris-Affine匹配算法。
  
  Hessian-Affine仿射提取特征与描述子的主要过程与Harris-Affine类似。主要区别在于Hessian-Laplace提取尺度不变特征点时候通过二阶梯度微分算子,相比于一阶微分Harris算法能够更稳定,抗噪声性强。
  
   提取出仿射不变区域的特征点与描述子之后,按照经典的匹配策略进行由粗到精的匹配,首先采用KnnMatch聚类方法进行筛选较近的2个描述子,然后根据最近邻进行特征点筛选。然后使用RANSAC进行粗匹配点对的提纯,提取精确的匹配内联点对。根据这些内联点对估计仿射变形矩阵参数完成图像之间的形变参数估计。

仿射匹配实验结果

话不多说来几幅Hessian-Affine仿射匹配结果图:

  上述实验结果采用的是Hessian-Affine与SIFT描述子相结合,匹配策略采取KnnMatch与RANSAC提纯内联点对的算法,实验结果可以看出Hessian-Affine匹配算法能够有效抗视差进行匹配。(附:由于Harris-Affine匹配算法耗时很高而且经过测试发现匹配性能低于Hessian-Affine,对其代码进行深入分析研究)。后期会将分析好的Hessian-Affine代码进行上传。

代码下载:

HarrisAffine OpenCV版代码
   https://blog.csdn.net/small_munich/article/details/80205223
Github地址:
   https://github.com/SmallMunich/HessianAffineMatch_VisualStudio2015/tree/master

参考文章

https://lear.inrialpes.fr/people/mikolajczyk/
https://www.researchgate.net/publication/3854196_Matching_Images_with_Different_Resolutions
http://pdfs.semanticscholar.org/46bc/68d803befe51b57613792454c45503d5ecaf.pdf
https://hal-polytechnique.archives-ouvertes.fr/CNRS/inria-00548252v1
<图像局部不变性特征与描述> 王永明 王贵锦 编著

你可能感兴趣的:(图像处理)