一种基于KLT的直线段匹配算法

罗汉杰. 直线段匹配方法、装置、存储介质及终端[P]. 中国专利: CN109919190A, 2019-06-21. Github: https://github.com/HanjieLuo/line_matching

背景

在计算机视觉系统中,其中一种重要任务是图像中的特征匹配。我们在多张图片中提取出一些特征纹理,并且将这些纹理匹配起来。在传统的方法中,我们一般使用梯度值大的,处于边角位置的点作为特征来进行匹配。但在实际使用中,图像中能够提取的,稳定的特征点是有限的。

我们发现,比起特征点,图像中的直线具有更强的稳定性和抗干扰能力;并且在室内等经典场景中,直线纹理出现的概率比特征点要多。

linematching1

而传统的基于描述子的直线匹配方法(如LBD1,MSLD2等),采用直线的局部外观特征和几何约束特征,对每一根直线段进行数学建模,然后进行匹配。但这些方法运算量巨大,难以满足实时任务的需求;并且,匹配的成功率也一般。

对于相继拍摄的前后两张图片,可以观察到特征纹理的偏移量较小。基于这个前提,我们可以对直线段使用一些本用于特征点的,高效的匹配方法来实现直线匹配功能。

本文提出了一种图像直线段的匹配方法,它使用了高效的一维光流法特征点匹配方法,对直线段上的点进行匹配操作,然后对匹配点进行统计,从而实现直线段跟踪的功能。

方法

直线检测

L0={0li0li=(0pi,0,0pi,1),0i<M0}

假设已知有前后相继拍摄的两张图片I0I1。使用LSD3,EDLines45等直线检测算法,在图片I0中获得直线段集合L0={0li0li=(0pi,0,0pi,1),0i<M0}M0表示线段数目;0pi,00pi,1分别表示图I0上第i根线段0li的两个端点的二维坐标,p=[px,py]TT表示矩阵转置,p为一列向量。同样,我们图片I1中获得直线段集合L1={1li1li=(1pk,0,1pk,1),0k<M1}

linematching2

锚点匹配

对图I0上的每一条线段0liL00li=(0pi,0,0pi,1)

  1. 计算线段的方向向量0ai=[0ai,0,0ai,1]T=(0pi,10pi,0)/0pi,10pi,0和法向量0ni=[0ai,1,0ai,0]T
linematching3
  1. 0pi,0为起点,0pi,1为终点,0ai为方向,每隔距离s,选取一系列锚点,并将它们的坐标集合记作0Qi={0qi,j0j<Ni}Ni为线段0li的锚点数目,s我们一般设置为20。
linematching4
  1. 使用一维光流匹配法6,对图I0线段0li上每一个锚点0qi,j,在图I1上,以0qi,j为起始位置,0ni为搜索方向,在图I1上找到匹配点1qi,j
linematching5

点-线匹配

经过上一个步骤后,我们在图I1上找到图I0上所有锚点0qi,j的匹配点1qi,j。在这一个步骤中,我们希望知道匹配点是属于图I1上哪一条直线段的,我们称这一步骤为点-线匹配。

0qi,j为图I0上的锚点,1qi,j为在图I1上的相应匹配点;图I1的直线段集合为L1L1={1lk1lk=(1pk,0,1pk,1),0k<M1}

对于任意点q,到直线段l=(p0,p1)有最短距离d

v=p1p0u=p0qt=min(max((vTu)/(vTv),0),1)d=tv+u

其中vut为中间变量。对于每一个匹配点1qi,j,做:

计算到图I1所有直线段1lk的最短距离,获的距离集合$ d_k d_k d_{min}=min⁡( d_k )线^1l_{closest(i,j)}$,0closest(i,j)<M1。如果dmin<dthreshold,则我们认为点1qi,j是属于直线1lclosest(i,j)的。dthreshold为一经验阀值,我们设置为1。

通过上述步骤,我们获得了匹配点在图I1上所对应的直线段。因此,每一个图I0上的锚点,都有可能匹配到图I1上的任一直线段。

线-线匹配

对于图I0上的任意直线段0li0i<M0,拥锚点0qi,j0j<Ni;每一个锚点在图I1上存在唯一的匹配点1qi,j,并且我们知道匹配点落在了图I1的任一直线1lclosest(i,j)上。

对于任一直线段0li

统计它拥有的锚点在图I1所匹配直线段,假设最多有Zi个锚点匹配到了直线1lmatch(i)上, 0match(i)<M1。如果Zi/Ni>R,则我们称这两条直线0li与直线1lmatch(i)互相匹配。R为一经验阀值,我们设置为0.4。

实验结果

Github: https://github.com/HanjieLuo/line_matching


  1. Zhang, Lilian, and Reinhard Koch. "An efficient and robust line segment matching approach based on LBD descriptor and pairwise geometric consistency." Journal of Visual Communication and Image Representation 24.7 (2013): 794-805.↩︎

  2. Wang, Zhiheng, Fuchao Wu, and Zhanyi Hu. "MSLD: A robust descriptor for line matching." Pattern Recognition 42.5 (2009): 941-953.↩︎

  3. Von Gioi, Rafael Grompone, et al. "LSD: a line segment detector." Image Processing On Line 2 (2012): 35-55.↩︎

  4. Akinlar, Cuneyt, and Cihan Topal. "EDLines: A real-time line segment detector with a false detection control." Pattern Recognition Letters 32.13 (2011): 1633-1642.↩︎

  5. http://luohanjie.com/2021-02-03/edline-parallel.html↩︎

  6. http://luohanjie.com/2018-12-26/1d-klt-feature-tracker.html↩︎