作者:沙洪俊, 袁修孝 来源:《武汉大学学报(信息科学版)》
自进入数字地球时代以来,智慧城市的建设工作一直是推动其发展的关键,而三维点云数据的快速获取则是智慧城市建设的关键一环。
目前,三维点云数据主要通过激光雷达(light detection and ranging,LiDAR)技术和影像密集匹配技术来获取。前者虽然可以在短时间内快速获取到数以百万计的地物点三维坐标并得到相应的三维点云模型[1-2],但相对于获取成本低、效率高、纹理信息丰富、空间分辨率高、测绘范围大、人工交互少[3]的影像密集匹配技术,依然存在一些不足[4-6],因而后者受到了摄影测量与遥感界的广泛关注。
自20世纪50年代起,基于航摄影像的匹配算法被提出后,越来越多的学者开始致力于影像的稀疏匹配方法研究。直到20世纪90年代,随着具有生成数字表面模型和数字地形模型功能的摄影测量商业软件的出现[1],人们纷纷着手于密集匹配算法的研究。密集匹配技术在计算机视觉领域也被称为立体匹配技术,在其数十年的发展中,已有许多文献对其算法进行了归类对比分析[1, 7-11],美国明德学院的Scharstein和Szeliski还创建了广受关注的计算机视觉评测网站[12],不仅提供了一系列权威的测试数据,还提供了量化误差的算法测试平台,只需要将匹配结果提交到平台就可以获得权威的性能分析并参与算法排名。该网站自2001年开放以来,已公布了430多种影像密集匹配算法,图 1为Middlebury网站公布的各年度密集匹配算法数量(统计时间截至2022-11-20)。通过分析不难发现:
图1 Middlebury网站公布的2001—2022年密集匹配算法数量
1)双目影像的密集匹配算法数量呈逐年上升趋势。这表明双目影像的密集匹配问题正在被越来越多的学者所关注,同时也说明双目影像的密集匹配技术依然是一个热点研究问题。
2)多视影像密集匹配算法的年度数量明显偏少,自2014年开始逐年下降。多视密集匹配中的多角度影像可以有效改善遮挡区域的匹配效果,特别是近些年发展起来的倾斜摄影测量技术[13],融合了传统的航空摄影测量技术和近景摄影测量技术[14]。现有的多视密集匹配模型主要划分为两类:基于多视的匹配模型及基于多视立体融合的匹配模型[15]。前者同时考虑多条交会光线以获得更为精确稳健的匹配结果,匹配模型较为复杂,且大部分方法匹配效率较低[16],并不适合于大范围的影像匹配,更多的此类匹配模型方法介绍可参见文献[17-18];后者则是将多视密集匹配视为以单个立体像对(双目影像对)为匹配单元的多个立体像对的匹配结果融合问题,该类模型可以通过粗差剔除的方法更有效地改善遮挡区的匹配精度,效率更高、操作简便、易于并行加速,适用于大范围的影像匹配,其核心仍然是双目密集匹配技术。因此,相比于多视影像密集匹配,双目影像的密集匹配更为重要,是更为常用的密集匹配方法,这也是本文着重对双目密集匹配进行综合论述的初衷之一。
近年来,具有相当热度的基于深度学习的密集匹配方法大体上可以分为分布式方法和端到端的方法[11],后者为当前主流算法。然而,分布式方法对于弱纹理、视差不连续区域以及遮挡区域的匹配效果并不理想,端到端方法则需要较高的计算机内存消耗。
基于深度学习的方法虽然在常规区域可以获得更优的匹配效果,但对于弱纹理、视差不连续以及遮挡区域的匹配效果仍然存在劣势,多数的方法受限于训练标签,文献[19]详细分析了基于深度学习的影像密集匹配算法,此处不再赘述。
本文通过对现有的双目影像密集匹配算法进行综合分析,着重对传统的密集匹配算法进行总结,以期能系统地阐述影像密集匹配技术的发展现状。
本文首先对密集匹配算法的匹配过程进行了梳理,按照局部密集匹配与全局密集匹配对双目密集匹配算法进行了系统的分类概述,并指出各类算法的优缺点;然后对摄影测量中的密集匹配技术进行讨论,对比分析了摄影测量场景与计算机视觉场景之间的差异,同时对影像遮挡机理进行了剖析,详细阐述了遮挡检测与遮挡填充的处理方法,为解决密集匹配的空洞问题奠定了理论基础;最后着重阐述了笔者对双目密集匹配方法发展趋势的展望。
01 双目密集匹配
双目密集匹配即从一个立体像对的二维影像数据信息中提取并恢复对应物体的三维空间信息。现有的双目密集匹配算法依据同名点搜索空间的不同可分为基于像方空间的密集匹配算法和基于物方空间的密集匹配算法[20]。
基于像方空间的双目密集匹配算法通常采用水平核线影像作为输入影像,又称为单基线密集匹配算法,是一种常用的匹配算法,其核线影像包括框幅式影像的核线影像和线阵推扫式影像的核线影像。
前者是从航空摄影测量和地面摄影测量中经常使用的中心投影影像所获得的核线影像,其核线模型基本分为两种,基于数字影像的几何纠正模型和基于共面条件的模型。其中,基于数字影像几何纠正的核线纠正模型更为简单常用;线阵推扫式影像的核线影像多为从卫星遥感影像所获得的核线影像,其核线模型也分为两种,基于多项式拟合的核线模型和基于投影轨迹法的核线模型[21]。基于投影轨迹法的核线模型因其具有更加严密的理论而被广泛使用[22-23]。单基线密集匹配算法通过核线约束对左右影像进行逐像素的匹配,并利用三角测量原理计算立体像对的视差值,最终将视差转换为物方三维坐标,即获得2D影像点的3D地面坐标(详见图 2)。
具体计算过程可以概括为4步:匹配代价计算、匹配代价聚合、视差计算与精化以及物方三维坐标计算[7]。匹配代价计算是以左核线影像为参考影像、右核线影像为目标影像,在指定的视差搜索范围内,计算待匹配像素与每个视差下的候选像素之间的视差值[24],并将其存储为阶的视差矩阵,其中为影像宽度,为影像高度,从而获得视差图;匹配代价聚合是指对初始视差值在基于单个像素的支持窗口内进行滤波,剔除不合理的视差值;通过聚合而获得的每个像素会对应多个不同的视差值,视差计算与精化是为每个像素选取最佳的视差值[25],一般采用胜者为王策略来优选视差值,即在单个像素的所有初始视差值中,选择最小的代价值作为最佳视差,剔除错误视差,同时检测并修复无效视差[26];物方三维坐标计算是在已知影像内外方位元素的前提下,利用视差值求解目标点坐标,即首先根据已知的相机内方位元素与视差值求出像素点的像方坐标,然后结合已知的影像外方位元素将像方坐标转换为大地测量坐标,从而求出目标点的物方三维坐标。
图2 基于像方空间的双目密集匹配
基于物方空间的密集匹配是在基于像方空间密集匹配算法之后发展起来的算法,即将密集匹配算法从像方空间转至物方空间。通常直接以地面高程方向或影像视线方向为同名点搜索方向,并将指定的物方面元反投影至影像中,以影像中投影面元之间的相似性来确定物方点。现有的基于物方空间密集匹配算法多是在铅垂线轨迹法(vertical line locus,VLL)的基础上发展起来的。本文以VLL算法为例对基于物方空间的双目密集匹配过程进行介绍。图 3展示了VLL原理,假定在物方有一条铅垂线轨迹,其对应影像上的投影也是一条直线(图 3中的红色虚线),沿此铅垂线方向搜索地面目标点所对应的左右影像中的像点与即可确定目标点的高程。具体步骤如下:首先给定目标点P的平面坐标以及近似最低高程,并根据精度需求确定高程搜索步距;然后根据目标点P的平面坐标及候选高程值计算目标点在左右影像上的像点坐标,分别以这两点为中心在各自影像上选取匹配窗口,计算匹配测度;令,重复前述步骤;最后根据匹配测度最大值确定目标点的高程值,目标点的物方三维坐标为,详细过程参见文献[27]。
图3 基于物方空间的双目密集匹配
基于物方的密集匹配算法实质依然是基于影像的几何定向参数对同名像点进行反复前方交会,从而获取物方点的过程[16]。由于基于物方空间的密集匹配算法可以同时处理多幅影像,这种方法多被用于多视影像的密集匹配中[28],如常见的GC3(geometrically constrained cross-correlation)[29]及其改进模型AMMGC(adaptive multi-image matching with geometric constraints)[30]、MVLL(modified vertical line locus)[31]、SGVLL(sem-global vertical line locus)[32]等。 双目密集匹配当前采用的多是基于像方空间的双目密集匹配算法,依据其是否隐式地使用了光滑假设而被区分为局部密集匹配和全局密集匹配两种[7]。具体说来,在匹配算法中使用了代价聚合和视差确定组合的为局部密集匹配方法,使用了能量函数优化的为全局密集匹配方法。
1.1 局部密集匹配
利用各个像素的邻域信息求解对应视差的局部密集匹配算法又被称为基于窗口的密集匹配算法[33],此类算法包含以上双目密集匹配算法完整的步骤且在代价聚合阶段隐式地使用了光滑假设约束。对于局部密集匹配算法而言,在匹配代价聚合时,选择适当的匹配窗口是决定匹配精度的关键。 早期使用的单一固定窗口法因限制了窗口的尺寸大小,使其易在对象边界处发生重叠,从而错误地聚合了不同区域的匹配代价,导致地物边缘粗化模糊[34],使其在深度不连续处、弱纹理区域以及重复纹理区域具有较高的误匹配率。为此,基于窗口的密集匹配方法逐渐衍生为自适应窗口法、自适应权重法以及非前向平行算法等。
1.1.1 自适应窗口法
局部密集匹配所选择的窗口大小既要足够大,以包括足够的强度变化,又要足够小,以避免因覆盖对应场景点深度(即视差)变化的整个区域而引起的失真问题[35],因而演化出了可以根据局部强度和视差变化而自适应地选择窗口的自适应窗口法。主要是依据局部区域的像素颜色、空间距离、纹理熵等属性特征的相关性来改变聚合窗口的大小、形状、位置和数量,从而提高视差图的精度。将现今较为常用的具有代表性的自适应窗口法概括为单窗口算法与多窗口算法,算法的简要描述和存在的优缺点具体见表 1。
表1 自适应窗口法
总而言之,基于自适应窗口法可以总结如下:
1)最早兴起的自适应矩形单窗口法多是基于积分图像与四象限掩模等技术通过改变矩形窗口的大小或长宽比例来减少位于不正确深度区域的不良像素数量,提高准确率。相比于固定窗口法,其具有更高的匹配精度,但却要高度依赖于初始视差的估计,并且矩形窗口并不适合于接近具有任意形状的深度不连续区。因而该类方法在视差边缘处具有相对较低的准确度。
2)自适应形状单窗口算法多是基于各向异性局部多项式逼近技术或是通过局部属性构建直立交叉局部支持骨架等方式来构建自适应形状窗口。相较于自适应矩形单窗口法,这种方法的窗口形状自适应能力有了较大的提高,以至于在深度不连续区域的匹配准确度得到了较大的提升,但窗口形状或是模型的通用性仍然不高,很多算法需要特定的参数甚至是需要在特定的条件下才能得以实现。
3)自适应多窗口算法通常是结合多个单窗口来匹配相对复杂的图像区域,相比于自适应单窗口法,这类方法在低纹理区域以及边缘区域的匹配准确度有了更大的提升,具有更广泛的适用性。但因其较高的计算复杂度,需要很高的计算成本,匹配效率有所降低。 近年来,为提高自适应窗口算法的运算速率、加强匹配的时效性,很多基于现场可编程门阵列(field programmable gate array,FPGA)或图形处理器(graphics processing unit,GPU)硬件加速的局部方法开始流行[51]。其中,FPGA开发的灵活性以及对高速信号处理的优越性,使其成为了近些年数字系统开发的核心部件;GPU技术利用硬件的并行计算能力,将算法设计为高度并行,同时使用多个计算核心进行算法运算,具有明显的加速效果[52]。
1.1.2 自适应权重法
自适应权重法是推动局部密集匹配算法发展的关键。自2006年Yoon等[53]首次提出可以在匹配质量与全局匹配算法相媲美的局部匹配方法后,局部匹配算法再次被推向密集匹配研究的高潮。这种方法大多是依据局部区域的像素颜色、空间距离、甚至是梯度等属性特征的相似度来分配匹配窗口内原始代价的权值,权值计算方式是实现该类方法的关键。基于不同的权重值主函数,表 2对其进行了归类分析。
表2 自适应权重法
根据自适应权重法的权重确定方式可总结如下: 1)应用最为广泛的基于滤波的自适应权重法多是根据颜色较为一致的区域视差值较为接近、连续区域具有更加相近的视差值或是梯度等原理来为匹配窗口内的每个像素分配权重。该类方法中的双边滤波法[42, 53, 59]具有相对较好的匹配精度,特别是在深度或是视差断裂区域,但计算效率并不高。
为了解决双边滤波的计算效率问题,人们引入了基于图像的引导滤波算法[34, 45, 61, 65-67],因其具有更高的匹配精度与计算效率而被更广泛使用。总体而言,此类方法可以改善视差边界的匹配效果,最终获得一个较为满意的匹配结果。 2)基于分割的自适应权重法是基于假定分割块的边缘与深度不连续区域保持一致,且每个分割块具有相同视差或满足某种关系(如仿射变换)的前提下,以待匹配点是否落在分割块内作为定权的参考依据。这类方法在遮挡区域与无纹理区域会具有较好的匹配效果。 3)自适应权重法可以被划分为基于滤波的自适应权重法与基于分割的自适应权重法。相比于自适应窗口法,这种方法具有更高的匹配精度和更小的计算代价。但这类方法需要对每个像素进行独立的加权计算,计算复杂度相对较高。
1.1.3 非前向平行法
自适应窗口法和自适应权重法是基于匹配窗口内的像素具有相同视差的假设,即假设影像平面与影像的匹配窗口所对应的实际场景表面相平行,称之为前向平行。然而前向平行假设对于深度不连续区域以及表面倾斜区域的影像匹配并不适用。为此,针对具有倾斜结构的场景,衍生出了非前向平行法。 相对于自适应窗口法与自适应权重法,非前向平行法的兴起较晚,至今仅有十余年的发展历史[68]。这种方法通过倾斜窗口来估计与具有倾斜结构场景相符的支持区域。比较常见的方法当属PatchMatch算法,这种算法通过随机采样快速寻找影像面片之间的近似最近邻匹配,再根据影像中的自然一致性将这些匹配信息快速传播至周围区域。但此方法对于病态输入具有较差的收敛性,而且容易产生重影或羽状伪影[68]。为此,基于PatchMatch算法衍生出了一系列常用的方法,包括PMBP[69]、PM-Huber[70]、PM-PM[71]、PMF[72]、PMSC[73]以及近两年来较受欢迎的LocalExp算法[74]。 基于PatchMatch衍生出的非前向平行算法是目前较受欢迎的双目密集匹配方法之一。
该系列算法主要是通过改变搜索策略和引入外来项策略实现对原有算法的改进,具体表现为: 1)改进搜索策略。将原算法扩展到跨尺度搜索、基于核线的最近邻搜索以及多个最近邻匹配搜索等,可以更有效地顾及全局信息,获得具有亚像素级精度的视差结果。 2)引入外来项。通过引入外来项,包括图割以及置信度传播等来建立PatchMatch与外来项之间的联系,即将原有算法的最佳特征与外来项的最佳特征相结合以提高计算效率和准确性。 使用3D标签的PatchMatch算法不仅避免了前向平行偏差,而且基于此算法改进的很多方法目前已经达到了亚像素级的匹配精度,但无论是改变搜索策略还是引入外来项的改进算法都高度依赖于影像面片之间的初始匹配结果,均需要更长的计算时间。 总之,非前向平行法解决了非平行表面的匹配歧义问题,填补了局部匹配方法关于非前向平行假设的空缺,但对于低纹理区域的匹配精度以及算法的整体匹配效率仍具有提升空间。
1.2 全局密集匹配
基于马尔可夫随机场(Markov random field,MRF)模型优化的全局密集匹配方法不同于局部密集匹配方法会在代价聚合阶段使用隐式光滑假设,这种方法通常不执行聚合步骤,而是通过能量函数的平滑项来实现显式光滑假设约束,并通过解算全局最优能量函数来求解。全局能量函数包括表示像素自身相似度度量的数据项和表示相邻像素间平滑程度的平滑项,该函数将密集匹配问题转换为求取全局能量函数最小化问题[75]。因此,全局能量函数的优化方式以及能量函数的最小化求解是全局密集匹配方法的研究重点。 全局密集匹配的能量优化算法中应用较广泛的方法包括动态规划法、置信度传播法和图割法。
1.2.1 动态规划法
动态规划法又称为扫描线优化法[76],在20世纪90年代被引入到全局密集匹配算法中,是最早兴起的一类用于解决密集匹配问题的全局优化方法[77]。早期的动态规划算法仅是通过单独对影像的每一条扫描线进行优化来完成一维动态规划,但仅考虑一维层面的优化并不能够实现影像区域的整体最优。因此,针对不同扫描线之间的断层问题即条纹问题,又提出了诸如文献[78]等解决方案,但这些方法也同时会产生竖直条纹的影响。 Hirschmuller[79]为避免在扫描线优化算法中单一路径产生的条纹效应,首次提出了一种基于多路径动态规划策略的半全局匹配(semi-global matching,SGM)算法。这种算法将多个不同的扫描线路径以不同的角度运行来逼近二维优化,即对影像进行多次一维能量优化。SGM算法因考虑了匹配目标边界的精确性、光照变化的鲁棒性以及计算效率[80]而具有很好的应用价值。因而后续涌现出了大量的基于SGM的改进算法(见表 3)。
表3 基于SGM改进的算法
基于SGM的改进算法多数是出于降低计算复杂度和内存空间以及提高计算性能的目的来对算法进行改进的,常见的较为有效的改进策略包括由粗到精的分层策略、基于影像边缘的惩罚策略以及与census相关性相结合等策略。这类算法不仅可以避免动态规划法产生的条纹效应,而且在无需迭代的同时对参数的选择也不具有敏感性,是近年来最受欢迎的一种密集匹配算法。但很多算法在提高算法准确度的同时,无形中也增加了算法的复杂度及运行时间。于是算法的硬件可实现性成为提高算法效率的关键,其中比较常用的硬件优化策略为基于GPU的硬件并行优化与基于FPGA的硬件并行优化。
1.2.2 置信度传播法
置信度传播(belief propagation,BP)算法不同于需要单独计算每条扫描线最优解的动态规划法,该算法是通过多次迭代来计算整个影像的最优解。BP算法将影像作为MRF来解释,影像中的每个像素视为观测节点,影像中的像素灰度值作为观测值,视差是观测的隐藏节点标签,相邻节点通过每一次迭代来互相传递消息,最终的视差则是通过具有最大概率的标签来确定[93]。 自2003年Sun等[94]将BP算法引进到密集匹配算法中后,越来越多的基于BP的改进算法被提出,包括HBP[95]、CSB[96]、BP-M[97]、SBP[98]、LBP[99]以及SDT-BP[100]等算法。这些算法具有更好的匹配效果,但同时也会带来复杂的计算问题,导致需要更长的计算时间,实时性较差。这也是为什么近年来所提出的BP算法大都是出于降低算法的复杂度、提高算法速度以及内存优化的目的来对BP算法进行改进的。
1.2.3 图割法
图割法是除了BP算法以外的另一类基于二维层面的较为有效的全局密集匹配方法。这种方法将视差分配问题转化为全局能量函数最小化问题。具体而言,图割法将影像中的像素作为节点,将像素的视差值作为标签构建成无向图,采用最大流和最小割算法求解对应能量最小的标签赋值方案,即最优视差。不同的是,BP方法通过在MRF图中迭代地将消息从当前节点传递到邻近节点,从而使能量函数最小化,图割法是将最大流和最小割算法应用于从MRF图中提取的能量流结构中,从而给出最小能量解[101]。 图割法因构建无向图时会有大量节点且运算过程需要进行多次迭代而使整体算法的空间复杂度和时间复杂度相对较高。因此,基于图割法的全局密集匹配方法多是通过减少搜索空间或是搜索路径以及简化图等方式来对算法进行加速。虽然图割法在最大流算法的效率方面已经有了很大的提高,但当视差搜索范围较大时,仍无法满足实时性应用的需求。
02 摄影测量密集匹配
综合摄影测量领域的密集匹配算法不难发现,基于像方空间的双目密集匹配算法几乎都是基于计算机视觉场景中的匹配算法,这就使得其无法获得更为突出的匹配效果。因此,对于摄影测量场景而言,密集匹配问题除了要考虑密集匹配算法本身的特点外,还要考虑由于场景差异所带来的影响。
2.1 计算机视觉场景与摄影测量场景的差异
摄影测量场景不同于计算机视觉场景,后者一般包括多数的室内场景以及少数的街景(自动识别)。这里主要讨论计算机视觉的室内场景与航空航天摄影测量的场景差异。根据大量的参考文献以及公开的数据集,可将两种场景的差异大致概括为相机位置、光源位置、光照特点、背景特点以及像幅大小等,详见图 4。
图4 影像数据的摄取场景 计算机视觉场景与摄影测量场景的差异包括:
1)在计算机视觉场景中,相机通常是置于场景的侧前方,近距离地摄取极小图幅影像,因而获取的影像可以明显地区分前景与背景。前景的物体轮廓也格外的清晰完整,地物间所存在的遮挡问题通常也可以通过人工干预尽量规避;而在摄影测量场景中,相机是通过自上而下的方式远距离地摄取大图幅影像,地物结构更为复杂,前景与背景会发生变化,地面上的所有地物即为前景,背景即为地面,地物间存在的遮挡问题是不可避免的。
2)计算机视觉室内场景中的人造点光源的位置、光线强度属于人为可控因素,既可以尽量规避阴影的影响,也可以通过增强前景与背景的对比度来将前景与背景清晰区分,几乎不存在阴影的干扰。虽然有少数影像数据中的背景存在阴影,但背景一般为平整的平面,即同一视差背景,因而对匹配结果并无明显的影响;而摄影测量的室外场景的光源位置与强度是人为不可控的太阳光,近乎平行光传播。因而,影像质量更容易受到地物阴影的影响,特别是城区内的高层建筑物。阴影包括自影、本影以及半影,自影与本影则是影响影像质量的主要因素。
3)计算机视觉室内场景的环境特点较为单一可控且稳定,而摄影测量室外场景具有更少的人为可控因素,环境更为复杂。摄影测量场景更易受天气变化、辐射畸变等因素的影响,使得密集匹配影像对之间存在更多的差异,严重影响了影像对之间的相关性表达,特别是高分辨率卫星遥感影像。对于高分辨率卫星遥感影像而言,不论是同轨立体影像对间存在的几分钟时间差,还是异轨立体影像对间更长的时间差,都会带来不可忽视的辐射差异,致使影像对之间存在非线性辐射差异,影响影像对之间的相关性表达。
4)摄影测量场景的立体像对获取要求更为严格,需要地理参考数据的同时又要考虑像对的基线长短、重叠度、交会角大小等问题(包括卫星遥感影像,影像的获取和几何分析通常被看作是航空摄影测量的直接扩展)[16, 102]。在摄影测量影像密集匹配中,具有一定地面分辨率的近似平行的影像对需要具有一定的航向与旁向重叠度,同时需要精确地获取相机的空间位置与姿态信息以及地面控制点的三维坐标等定位参数信息。而对于立体视觉场景而言,三维信息的恢复通常以左右相机的相对位置为准,并不需要地理参考,特别是计算机视觉领域的热门研究SfM(structure from motion)技术以及SLAM(simultaneous localization and mapping)技术,它们并不需要预先知道相机的三维坐标和姿态或是地面控制点的三维坐标,即无需环境的先验信息,只需要已知相机的相对位置和场景几何以及高度重叠的像片集,便可实现影像的获取与计算工作,三维点云数据也可以用任意坐标系统来表示[103-104]。
5)基于深度学习方法的不同在于应用场景的差异。作为计算机视觉领域中的研究热点,基于深度学习的密集匹配算法可以获得更好的匹配效果。然而,对于大尺度的摄影测量场景影像而言,一方面,大量真实样本的模型参数训练必然需要用极高的成本来获取真值数据,更为复杂且不同的室外环境令预先训练好的模型的迁移学习能力受到影响[105-106];另一方面,基于深度学习的方法很难直接应用到完整的高分辨率影像数据中,即使是通过分块处理来适应GPU的计算能力,也会因为单块像素信息太少而无法保证匹配结果的精度。
2.2 遮挡处理
对于摄影测量密集匹配中的大幅面城市影像而言,影响双目密集匹配质量的一个关键因素当属建筑物的遮挡问题。而不同的建筑物高度或是摄影中心(视点)相对建筑物的位置以及建筑物之间的位置关系都会带来不同的遮挡效果,建筑物间存在的遮挡问题可被简要概括为5种情况,详见图5。
图5 不同建筑物场景的遮挡可见性分析 图5中,有5种不同的建筑物遮挡情况。情况1为单栋建筑物1被左右相机拍摄所呈现的可见性情况;情况2与情况3则表示对于建筑物1,具有不同相对位置关系的相邻建筑物2被左右相机拍摄所呈现的两种可见性情况;情况4与情况5则表示建筑物1的屋顶附属建筑物2被左右相机拍摄所呈现的两种可见性情况。从以上几种遮挡情况不难发现:对于高层建筑物而言,由于自上而下的拍摄角度以及视点与建筑物之间的相对位置关系,建筑物的底部结构以及边缘特征会因为遮挡而不可见,进而无法完成正确的匹配,最终会使得匹配结果中被建筑物遮挡的部分因为信息缺失而出现空洞。因此,遮挡处理也成为了提高密集匹配质量的关键。 遮挡处理包括遮挡检测与遮挡填充。对于遮挡检测,多数的方法都是选择利用一定的约束条件去估计被遮挡像素的视差,进而实现遮挡区域的检测。表4列出了几种常见的约束条件。
表4 用于检测遮挡像素的约束条件
除了这些常见的约束条件外,地面控制点约束[107]、对称约束[108]、分割约束[109]、光度约束[110]、亮度差约束[111]等约束条件也被结合使用于遮挡检测。 遮挡处理的另一个重要工作是对遮挡检测到的异常值进行遮挡填充处理。遮挡填充是指异常值在其邻域中搜索具有最相似像素的视差值,并对其进行迭代填充的过程。根据搜索策略的不同,将遮挡填充方法分为扫描线填充与最近邻填充。 扫描线填充是指针对每个异常值像素所在的扫描线,向左侧和右侧搜索最近的有效像素的视差值来填充所有被遮挡的像素
。同时,由于被遮挡区域在通常情况下具有与背景对象相似的性质,因而会将异常值分配给左右两个有效视差值之间的最小值。然而,扫描线填充法因其是考虑在扫描线范围内进行遮挡填充,所以这类方法会在视差图结果中出现水平条纹,因而也有许多学者选择使用中值滤波来对该种方法进行改进[34, 58, 112-113]。扫描线填充法虽然是一种简单有效的遮挡填充方法,但对于具有倾斜表面的场景并不具有可观的填充效果。
不同于扫描线填充法的搜索策略,最近邻插值法是选择在不同的方向上搜索最近的有效像素,然后通过将有效视差传播到相邻的无效视差区域来执行插值[9, 66, 110, 114-118]。最近邻插值法相比于扫描线填充法是更为常用的一类遮挡填充方法,但该类方法常常会因为像素的处理顺序是基于几何顺序而具有无效的填充结果。 简言之,借助条件约束检测遮挡像素,并对检测到的遮挡像素进行视差值填充,来完成遮挡处理工作,虽然可以在一定程度上提高密集匹配结果的质量,但也因为此过程需要大量的迭代计算,使得整个密集匹配算法的计算复杂度有所增加。而且就目前的遮挡填充效果而言,遮挡填充仍是一个具有挑战性的任务。
2.3 匹配速度与精度
影像匹配的速度、精度和可靠性是评价密集匹配算法质量的3个重要指标[18],尤其是当匹配算法已经确保具有相当的可靠性时,如何提高算法的匹配速度与匹配精度便成为更进一步提高或衡量算法质量的关键。 匹配速度的提升是满足高效率匹配需求的关键,通常可以通过改变匹配算法本身的搜索策略和基于计算机硬件层面的并行优化策略来实现。
常用的基于搜索策略的优化算法包括上文所述的动态规划算法、松弛迭代算法、人工神经元网络以及遗传算法[18],其基本思想是通过改变搜索策略来尽可能多地避免遍历搜索,提高匹配速度。基于计算机硬件层面的并行优化策略包括基于中央处理器(central processing unit,CPU)的并行优化、基于GPU的并行优化以及基于FPGA的并行优化,这种优化策略是利用硬件的并行计算能力将算法设计为高度并行,同时使用多个计算核心进行算法运算,提高匹配速度[51],而对于摄影测量场景中的高分辨率大幅面影像而言,显然具有更为充裕的存储空间的CPU更具优势。 匹配精度的提升是满足高精度三维点云数据获取的关键,除了目视判别外,现有的较为常见的精度评价指标包括物方精度评定与像方精度评定两种,常见的精度评价指标及主要描述见表 5。
表5 精度评价指标
匹配精度的提升通常可从两方面入手:一方面可以通过在基本的匹配算法的基础上引入几何约束的点、线、面以及尺度空间等特征约束条件来提升视差初值的可靠性以实现匹配精度的提升;另一方面可以通过后处理技术来实现视差的优化以实现匹配精度的提升。 通过引入特征约束条件来提高算法的匹配精度是提高深度不连续区域以及弱纹理区域匹配精度的重要手段,特别是具有丰富平面几何结构特征的城市场景[120-124],但其局限性在于几何约束条件的适用范围有限,多数方法仅适用于范围较小,几何特征相对丰富的区域,且约束条件也多为定制式,并不适用于其他的匹配算法[16, 106];尺度空间特征约束条件是利用不同尺度的输入图像来检测匹配关键点,也即尺度不变性,这种方法被更多地引入自适应窗口法[37, 125-127]、自适应权重法[128-132]以及SGM算法[133-135]中,然而这种方法却会降低原算法的运算速度。 后处理技术即是对视差值的优化,视差优化通常包括误匹配剔除、整像素精度精化与视差平滑。
误匹配剔除是针对弱纹理、重复纹理以及遮挡等区域出现的孤立异常点等误匹配结果进行左右一致性检测、中值滤波、加权中值滤波[136]、异常值剔除滤波[116]的剔除;整像素精度[20]精化则是对视差结果的整像素精度进行子像素或亚像素的细化,常见的方法有基于抛物线函数插值法[137]、最小二乘匹配[20]、拟合抛物线[138]等;视差平滑则是对视差结果通过双边滤波、引导滤波等手段进行匹配结果的平滑操作。
03 结语
本文结合图表对传统双目密集匹配算法进行了全面分析。 局部密集匹配的复杂度并不高,具有匹配效率高、实时性强的优势,但缺点是匹配精度较低,特别是在模糊的弱纹理区域;全局密集匹配算法具有较高的匹配精度,特别是在深度不连续区域、遮挡区域、弱纹理等区域均具有较好的效果,但由于这类算法大都是通过迭代计算来实现的,算法的实时性与匹配效率都不太理想。 此外,针对遥感影像所具有的宽基线、大幅面的特点,本文对高层建筑物的遮挡情况进行了详细的分析。
在航摄场景中,由于采用自上而下的拍摄方式,高层建筑物因为遮挡问题而隐藏掉了许多的纹理信息,如何处理遮挡问题是提高密集匹配质量的关键,自然会增加整个算法的计算复杂度。 就摄影测量而言,从上文所述的密集匹配整体算法来看,现有的双目密集匹配主要存在匹配效率和匹配精度两方面的问题。匹配效率问题指的是算法无法完全满足实时获取匹配结果的需求,需要进一步缩短算法的计算时间,提高匹配效率。匹配效率的提高,一方面需要降低算法的复杂度,分析算法是否必须迭代运算,在满足大幅面的遥感影像匹配需求的同时考虑搜索策略的优化,另一方面也可以通过基于计算机硬件层面的并行优化策略来缩短计算时间。匹配精度问题则是指匹配结果所存在的边缘毛刺与匹配空洞等问题,该部分数据的不精确与缺失大大降低了算法的整体匹配精度。
精度的提升方法一方面可以通过直接在算法中引入特征约束条件来提升视差初值的可靠性,另一方面可以通过后处理技术对视差结果更进一步处理以实现匹配精度的提升。 就密集匹配技术的迅猛发展而言,本文难以穷尽所有的密集匹配方法,但愿以上内容能够给读者带来更进一步的认识。我们坚信,在不久的将来,影像密集匹配技术在算法的实时性以及匹配精度上一定会取得更大的进步。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !