基于稀疏光流的道路航拍图像拼接算法∗

2018-08-28 02:50张楚东陆建峰
舰船电子工程 2018年8期
关键词:光流关键帧线程

张楚东 陆建峰

(南京理工大学计算机科学与工程学院 南京 210094)

1 引言

无人机航拍图像具有大视角、低形变、景深变化小的特点,特别适合获取平面上带状区域的信息采集。因此,在道路检测[1]、交通事故勘察[2]、道路基础设施维护[3]等问题上人们逐步开始使用无人机采集道路图像,获取更加高质量的原始数据。然而,单幅图像的视野十分有限。为了在保证图像高分辨率的同时,提高图像覆盖的范围,我们需要对多帧图像进行拼接。

图像拼接算法主要可分为图像配准、变换模型计算、图像融合三个步骤。寻找两幅具有重叠区域的图像之间的匹配关系,这一过程称为图像配准。得到图像的匹配关系后,使用变换模型从数学上对这一关系进行描述。常用的变换模型为单应变换,两幅图像重叠区域上的像素点关于单应矩阵一一对应。最后,将两张图像对应到同一坐标系下,完成图像融合。

作为整个算法的前端,图像配准与应用场景息息相关。当前的主流拼接算法使用特征点完成两幅图像的配准。其基本流程为分别从两幅图像中提取特征点与描述子,利用描述子计算特征点间的匹配关系,以此作为图像的匹配关系。然而,在道路航拍图像中,道路区域的纹理特征稀少,局部相似性高,从而使得特征法容易失效。针对这一问题,本文利用图像序列的连续性,依靠光流法跟踪特征以实现匹配。

另一方面,长序列图像拼接中,误差的累积会大大降低图像融合的质量,使得全景图像中出现鬼影、模糊等不一致现象。现有的方法中使用基于关键帧的光束平差法[4]、全局注册[5]、回环检测[6]等手段解决这一问题。本文采用全局注册与二次配准的思路,首先逐帧计算相邻关键帧的变换模型,接着利用单应变换的传递性,将所有图像映射到全局基准图中完成融合。为了降低累积误差,在融合前二次计算待新图像与基准图的变换关系,提高精度。最后,将全局基准图作为全景图像输出。

2 系统设计概述

如图1所示,为了提高运行效率,图像序列拼接算法分为并行执行的两个线程,跟踪线程与拼图线程。我们按照一定的准则把所有图像分为关键帧图像与非关键帧图像,跟踪线程在关键帧中分网格提取分布均匀的特征集合S。对于后续到来的每一帧图像,利用光流法逐帧跟踪S在各自图像中对应的特征点位置。同时,根据新图像中跟踪到的特征点的分布决定是否将其作为新的关键帧。

图1 图像拼接系统框架图

拼图线程负责将关键帧拼接到全局基准图上。它从跟踪线程获得关键帧序列和相邻关键帧之间的匹配特征点对。根据两帧的匹配点对,恢复两个关键帧之间的单应矩阵H,以此作为当前关键帧在全局地图中的粗略位置。最后根据低精度的H将当前关键帧映射到全局地图上,再次利用光流法将当前帧与全局地图进行配准,纠正跟踪过程与位姿变换过程中累积的误差。当该关键帧包含足够的未探索区域时,将关键帧图像与全局地图进行融合。

我们将在下文中介绍两个线程中重要模块的具体实现。

3 跟踪线程

3.1 特征提取

无人机低空航拍的图像中,即使路面占了图像的主要区域,但是就特征点的显著性而言,绿化带、马路牙子等路面外的区域拥有更强、更丰富的特征点。图2为四种当前流行的实时特征检测算法的效果,按顺序分别对应Shi-Tomasi[7]、Harris[8]、ORB[9]、FAST[10]。

我们希望马路上能有足够多的特征点,从而使路面所在平面在单应矩阵的RANSAC估计中获胜,因此采用了分网格提取特征点的方法。将整幅图像划分为许多同等大小的网格,每个网格中只保留一个最佳的特征点。同时,出于速度的考虑,我们选择了以速度快闻名的FAST角点作为候选特征点。同时,为了保证特征点具有良好的可跟踪性,对于每一个候选特征点,计算其Shi-Tomasi得分。接着,根据像素坐标将特征点映射到对应的网格中,每个网格取Shi-Tomasi得分最高的点作为网格特征点。具体算法流程如下:

1)提取FAST角点。

3)计算每个角点的Shi-Tomasi响应值。

4)每个网格选响应值最高的点作为本网格的特征点,同时保留Shi-Tomasi得分计算过程中的M矩阵。

图2 四种现有特征检测算法的效果

在特征提取步骤,我们不对特征的好坏进行评估,也不区分特征点是否属于道路区域。我们将通过后续严格的光流跟踪交叉验证和随机采样一致性(RANSAC)完成特征的筛选,而特征提取步骤只需要保证足够丰富且有效的特征点即可。

3.2 稀疏光流跟踪

近年来,在图像拼接领域,特征法由于其对光照、尺度、视角具有良好的不变性而成为图像拼接的主流方法。然而,这也意味着特征法对图像内容具有更高的要求,以便能够从中提出良好的特征点。通过基于ORB的特征匹配实验我们发现,在道路航拍图像中,特征点容易出现在道线,特别是白色虚线的各个角落点,数量十分稀少;其次,路面纹理的重复性使得单纯依靠特征点局部信息的描述子进行的特征匹配容易出现误匹配现象,如图3所示。

图3 ORB特征匹配的光流向量图

视频序列中,相邻图像之间的变化量很小,且光照在这短暂的时间里可视为不会发生变化。因此,在有序的、高帧率下的视频序列可以利用光流法[11]完成特征匹配。其次,我们只对所提取的特征点做光流跟踪,相比于稠密光流,时间复杂度将会大大降低。

对于每一帧新到来的图像,我们利用光流寻找上一帧的特征点在当前帧的位置。为了提高光流跟踪的准确性,我们将再次使用光流计算所跟踪到的当前帧的特征点在上一帧中的位置。如果经过两次光流映射回上一帧的特征点与原始特征点的误差够小(在我们的实验中,阈值为1个像素),则表示光流跟踪是成功的,并将这些成功跟踪的特征点作为当前帧的特征点。由于光流法可以得到相邻两帧之前的特征对应关系,因此我们可以逐帧回溯,得到当前帧与最近的历史关键帧中提取的特征点之间的匹配关系。利用这些匹配的特征点对,可以完成每一帧图像相对于与其最近的历史关键帧之间的单应矩阵。

传统的LK光流的复杂度很高,在迭代求解的每一步都需要重新计算雅各比矩阵。为了加速这一过程,我们采用了Inverse Composition形式的LK光流[12]。对于参考帧J中的像素点(u,v),我们需要在当前帧I中寻找像素点(x,y)使得

在用高斯-牛顿法求解该问题时,在每一步的迭代过程中,我们将增量(δx,δy)增加到参考帧中,即

重复迭代直到满足收敛准则。

Inverse Composition形式的求解与传统高斯牛顿法的区别在于:

1)计算增量时的模型不同。

2)状态更新方程不同。

从式(2)中我们可以看到,由于(u,v)的值是固定的,因此我们只需要求解一次雅各比矩阵即可——甚至这一次计算都可以省略,因为对于参考帧中每个特征点(u,v),我们在特征提取时计算Shi-Tomasi得分时已经获得对应的M矩阵。这一M矩阵与光流法的Hessian矩阵是相同的,因此可以直接保存并使用特征提取时计算得到的M矩阵。

3.3 关键帧选择

与非关键帧不同,关键帧作为位姿估计的单位,不仅需要光流跟踪,还需要计算关键帧到全局基准图的坐标变换矩阵,即单应矩阵。在基于关键帧的图像拼接中,非关键帧相对于关键帧的位置是固定的,而关键帧本身可以视作图像序列中的活动节点,作为优化变量最小化拼接过程中累积的误差。因此,被选为关键帧的图像需要满足以下3个基本要求:

1)图像中跟踪到的特征点足够多,从而较为准确地计算出当前帧图像相对于上一关键帧图像的单应矩阵。

2)跟踪成功的特征点均匀地分布在图像中各个部位。如果特征点分布过于集中,容易出现过拟合的现象,无法完整拟合整个区域。

3)新的关键帧包含尽可能多的未探索区域,给拼图线程提供足够的新信息。

基于上述原因,我们采用如下关键帧选择策略如下:

1)查看跟踪的特征点数是否小于n,若是,则需要关键帧;

3)若需要关键帧,将上一帧图像作为新的关键帧,从中提取特征点,并将该帧传递给拼图线程;

4)以新的关键帧为参考帧,重新处理当前帧,即基于新的参考帧重复上述光流跟踪、关键帧选择的过程。

4 拼图线程

在绝大多数图像拼接的算法中,不同图像之间公共区域的拼接模型都采用了单应矩阵。单应矩阵包含了图像之间坐标变换的所有信息。在拼图线程中,我们也采用单应矩阵作为重叠区域的拼接模型,分别完成关键帧之间的配准、关键帧到全局基准图的配准等。

4.1 帧间单应矩阵估计

经过跟踪线程的处理与筛选,我们可以到数量大大减少但依然包含了整个场景信息的关键帧序列,且相邻两帧关键帧之间的特征匹配关系已经找到。我们在基于随机采样一致性的框架下,计算相邻两帧关键帧之间的单应变换,其输入为匹配好的特征点对。

记参考帧(即上一关键帧)为Ki,其中的特征点集合新的关键帧为K,跟i+1踪到的特征点集合其中 Pi与Pi+1根据上标一一对应。对于任意一对特征点匹配对 pi与 pi+1,我们有

其中,Hi+1,i是一个3×3的矩阵,我们将其中的9个元素设为未知数,同时将该矩阵拉为一个列向量可以得到以下线性系统:

接着,使用normal equation可以得到最小二乘意义下的最优h列向量,即单应矩阵Hi+1,i。此时,我们便得到了关键帧序列中相邻两帧的变换关系。

4.2 全局单应矩阵校准

单应矩阵具有传递性,即

根据这一性质,我们可以根据相邻帧的单应变换关系得到序列中任意两个关键帧的单应矩阵。在我们的实现中,将第一帧关键帧作为全局基准,从 而 当 H0,i-1已 知 时 ,H0,i=H0,i·Hi-1,i。 其 中Hi-1,i为4.1节中估计得到的帧间单应矩阵。

然而,在多帧拼接中,由于误差随着拼接过程不断累积,单纯依靠帧间的估计结果以及单应矩阵的传递性而获得的全局单应矩阵H0,i无法将当前关键帧Ki准确地拼接到全局基准图中,从而产生鬼影现象,如图4所示。误差累计的特点是多图大范围拼接与两张或少数图像拼接之间的重要差别之一。

图4 因拼接误差造成的残影

校准算法如下:

1)根据H0,i计算Ki在全局中的对应图像区域

3)在Ki中提取特征点 pi,跟踪这些特征点在Iroi中的位置 pr。

在实现中,由于我们记录的是前一关键帧在全局基准图中的校正后的位置,即当前帧为Ki时,我们已知纠正后的位姿H0,i-1与未纠正的帧间单应矩阵H'i-1,i,最后可以得到纠正后的帧间位姿转移

风俗油画以现实的生活场景以及日常情感为主题,其故事性为人们了解不同时期、地域、文明、种族的历史提供了一个桥梁,将那些模糊的世界写实而又丰富地展现到人们面前。

4.3 图像融合

在图像拼接中,很难定量地衡量拼接结果的好坏。因此在实验中,为了能更明显地展现拼接结果的优劣性,均衡考虑效率,我们采用了加权的方式融合重叠区域,即

这样,当融合后的图像出现较为明显的鬼影时,说明拼接的准确性较低,如图4所示。

5 实验及分析

为了验证我们的图像拼接算法的有效性,我们分别在无人机直线飞行、原地旋转以及路口这三种典型场景下进行拼接实验,并将相同的数据与商用全景拼接软件PTGui进行对比。PTGui版本号9.19。所有图像数据均来自禅思X3-FC350相机,图像分辨率3840*2160,帧率为30fps。

实验平台为Windows 10,CPU Intel i7-5500U 2.4GHz,8G内存。所有代码均用python 2.7语言实现。

在三组实验中,我们均先将原始的视频流数据作为本文提出的拼接算法的输入,将最终参与拼接的关键帧挑选出来PTGui的输入。所有关键帧之间均具有合适(且足够)的重叠区域。

评价标准:如前文所述,本文的方法对重叠区域采用等值加权融合的方法。因此,拼接效果的好坏将会体现在鬼影上的严重程度上。

5.1 路口场景

路口场景来自387张连续视频图像,其中参与拼接的关键帧共9张。

PTGui的操作过程分为对准图像与拼接全景图两个部分,其中图像对准耗时约8s,全景图拼接耗时约18s,拼接后的图像分辨率为4178*4199。效果如图5(a)所示。可以看到,在下方的斑马线处出现了明显的扭曲与鬼影,以及左侧的斑马线处也发生了轻微的变形。

本文的拼接算法运行结果如图5(b)所示,全图分辨率为4112*4224。其中特征检测总耗时3.37s,平均耗时0.37s/帧;图像拼接与校正总耗时3.76s,平均耗时0.41s/帧;光流跟踪总耗时31.45s,平均耗时0.08s/帧。

可以看到,图像中路面部分,尤其是道线边缘清晰,无图5(a)中的扭曲与模糊。这说明拼接的误差足够小。值得一提的是,动态物体在式(8)的融合策略下,会出现鬼影(我们利用这一特点直观地评价算法的好坏)。如果仅是为了消除鬼影,我们可以单一式融合准则,即对重叠区域只选择某一图像(这也是PTGui中的做法),然而这一策略并不能过滤动态物体。

5.2 直线飞行

路口场景来自532张连续视频图像,其中参与拼接的关键帧共16张。

PTGui的拼接效果如图6(a)所示,图像配准时间约为20s,全景图生成耗时30s。图像分辨率4677*5613。可以看到,图像中有明显的扭曲,在下半部分的直线发生了错位,且道路的走向往右倾斜。

本文的拼接算法运行结果如图6(b)所示,全图分辨率为4438*5789。其中特征检测总耗时8.67s,平均耗时0.54s/帧;图像拼接与校正总耗时15.84s,平均耗时0.99s/帧;光流跟踪总耗时44.54s,平均耗时0.13s/帧。

从图6(c)、(d)的局部对比图可以看到,我们的方法对于直线的恢复效果优于PTGui的拼接效果。

图6 直飞场景的拼接

5.3 原地旋转

旋转场景来自751张连续视频图像,其中参与拼接的关键帧共25张。

PTGui图像对准耗时约43s,全景图拼接耗时约63s,拼接后的图像分辨率为5177*5230。效果如图7(a)所示。对于纯旋转的场景,PTGui无法完成拼接,整张图像呈现破碎的效果。

本文的拼接算法运行结果如图7(b)所示,全图分辨率为4927*4812。其中特征检测总耗时11.15s,平均耗时0.45s/帧;图像拼接与校正总耗时27.91s,平均耗时1.12s/帧;光流跟踪总耗时65.34秒,平均耗时0.09s/帧。相比于PTGui的拼接结果,我们的方法完整地恢复了旋转场景下的道路图像。

图7 旋转场景拼接结果

三组实验的拼接时间对比如表1所示。

表1 各个场景下拼接时间的比较

5.4 大场景拼接

最后,我们采用上述算法对一段长达5min的路口航拍视频进行路口重建,如图8所示。图像分辨率为19117×18916,其表示范围是单帧图像的45倍,地表分辨率约为1cm每像素。

图8 大场景拼接效果图

6 结语

根据与PTGui的对比,以及最后长视频序列的结果可知,本文的算法拼接无人机航拍的道路图像序列时效果更佳,能完成纹理稀疏和局部相似度高场景下的图像拼接。然而,由于图像的高分辨率,算法无法做到实时拼接,时间效率有待进一步提高。

猜你喜欢
光流关键帧线程
利用掩膜和单应矩阵提高LK光流追踪效果
5G终端模拟系统随机接入过程的设计与实现
基于改进Cycle-GAN的光流无监督估计方法
基于图像熵和局部帧差分的关键帧提取方法
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
一种多尺度光流预测与融合的实时视频插帧方法
基于自适应纹理复杂度的仿生视觉导航方法研究
ORB-SLAM系统优化框架分析概述
基于误差预测模型的半自动2D转3D关键帧提取算法