陈 震,倪晶晶,张聪炫,葛利跃,王梓歌
(1.南昌航空大学无损检测技术教育部重点实验室,江西南昌 330063;2.南昌航空大学信息工程学院,江西南昌 330063)
20世 纪90年 代,Vedula与Baker率 先 提出场景 流概念与计算理论,其通过拓展二维图像序列光流计算理论到三维运动场景将场景流概念定义化与公式化.在此之后,场景流计算及其相关技术的研究得到飞速发展,对应研究成果已逐步应用于前景目标检测[1]、人体姿态识别[2]、大规模场景重建[3]等领域.
目前,基于传统方法的场景流计算技术研究仍然是场景流计算技术研究领域的重点.依据输入数据的类型不同,可以将其分为基于RGB-D(Red,Green,Blue and Depth Map)可见光图像序列场景流计算方法和基于双目可见光图像序列场景流计算方法.然而,前者由于过于依赖于深度传感器,且对室外场景中场景流计算适用性较差[4],因此基于双目可见光图像序列场景流计算方法成为传统场景流计算技术研究的主要方向.例如,针对大位移运动场景流计算存在不准确问题,文献[5]提出一种新颖的对象场景流模型,该模型通过标签对超像素平面与对象进行分配,将场景分割为不同的动态组件,以获取较高精度的场景流估计.针对传统场景流计算方法普遍存在边缘模糊和过度分割问题,Schuster等人[6]提出耦合光流与视差场景流模型,在没有任何事先正则化的情况下检测双目图像之间的稀疏匹配,并通过使用边缘信息执行稠密插值来保留运动边缘.Ren等人[7]利用语义分割,将语义信息应用于场景流估计中,有效地避免了场景流运动边界模糊和过度分割问题.
近年来,随着深度学习的快速发展,基于深度学习的场景流计算模型不断涌现.例如,针对复杂场景下场景流估计精度较低问题,Jiang等人[8]提出一种集成光流,视差,遮挡和语义分割的场景流网络模型,通过融入遮挡和语义信息,提高了复杂场景中场景流的估计精度.Yang等人[9]提出一种基于光学扩展和自监督学习策略相关联的场景流估计网络模型,使复杂场景下场景流估计更加准确.针对包含遮挡场景的场景流计算可靠性较低问题,Saxena等人[10]提出一种端到端CNN(Convolutional Neural Network)场景流模型,直接从正向流估计遮挡,该模型不需要先验假设和正则化处理,使遮挡区域场景流估计可靠性得到改善.Hur等人[11]提出一种自监督单目场景流模型,通过计算高精度光流信息的同时恢复深度和三维运动,显著提升了遮挡区域场景流估计的可靠性.
现阶段,场景流在计算精度和速度方面已经得到很大提升,但在包含大位移、运动遮挡以及光照变化等复杂情况下场景流估计效果仍然较差.针对上述问题,本文提出一种基于金字塔块匹配的双目场景流计算方法,能够有效提高在大位移、运动遮挡以及光照变化情况下场景流估计精度与鲁棒性.
由于传统匹配模型在大位移、运动遮挡区域易产生错误匹配的问题,本文采用金字塔块匹配模型计算双目图像序列相邻两帧对应像素点的匹配关系.首先分别对参考帧和目标帧通过下采样因子进行金字塔分层,然后对金字塔图像初始层进行块匹配,匹配结束后通过前后一致性检测以剔除匹配异常点,最后把第一层获取的对应块匹配结果作为金字塔模型后一层匹配计算的初始值,通过传播与搜索步骤直至金字塔分辨率最高层.
图1展示了金字塔块匹配在每一层图像的具体匹配计算步骤,其计算流程如下:
图1 金字塔块匹配计算步骤
(a)初始化:将参考帧和目标帧划分成的网格块,对网格中心像素随机赋予偏置量.
(b)传播:将参考帧匹配块与目标帧对应的匹配块进行相似度比较,如果目标帧匹配块与参考帧匹配块相似度最高,则将参考帧匹配块的偏移量赋值给目标帧对应的匹配块.
(c)搜索:首先给出一个和目标帧大小一致的搜索窗口(即搜索半径)搜索相似度更高的匹配块,并更新当前偏移量.然后将搜索半径缩小一半,重复上述过程直至搜索半径小于1个像素时停止搜索.
复杂结构场景通常可以分割成独立的运动对象,包括前景和背景.获取同一场景相邻图像序列更加准确的匹配结果对于对象的运动估计有至关重要的作用.针对传统运动模型在大位移、运动遮挡场景下运动估计的准确性问题,本文提出一种基于金字塔块匹配的运动模型以提高复杂场景下前景对象运动估计的准确性.
首先依据金字塔块匹配模型获取的匹配结果结合视差获取有效匹配像素点,然后,按照计算出的初始有效匹配像素点计算光流.并计算匹配光流与背景光流间的端点误差,获取更加精准地有效匹配像素点信息,其计算公式如下:
式(1)中,(fu_match,fv_match)表示由金字塔块匹配结果计算得到的光流信息,(fu_nl,fv_nl)表示由Classic+NL光流计算方法得到的背景光流.
根据得到的精准匹配像素点信息,双目相机参数与视差信息,本文首先将二维匹配点投影到3D空间,获取匹配点空间位置的三维坐标.然后,从获得的三维坐标点中任意选择一点,以该点为中心建立半径为2.5个像素的球体并在球体内部随机采样3个点,采用Ransac随机一致性算法拟合刚性运动模型,最后将其他点也引入该模型以获取所有满足该模型的匹配点.通过一定次数的迭代优化,获取最终所需的刚性运动模型,从而计算出前景对象运动参数Rk,tk(k≠1).
由于背景在整个场景中处于静止状态且相对于相机运动,为了获取背景对象运动参数,本文通过采用最小化重投影算法求解背景对象的运动参数.其计算公式如下:
式(2)中,xil与xir分别表示左目和右目图像的对应匹配点坐标,Xi表示三维点坐标,π(Xi:R1,t)表示三维空间投影到二维平面的关系,(R1,t1)表示背景对象的运动估计参数.在实际计算中受相机位置和姿态未知以及三维空间观测点噪声的影响,投影点像素坐标与该点实际对应坐标位置存在一定误差.因此,本文通过最小化式(2)使该误差趋于最小,以获取更为准确的背景对象运动参数.
本文将金字塔块匹配计算得到的相邻图像像素点匹配结果作为约束,通过联合运动模型获取的对象运动参数和超像素分割算法获取的超像素平面参数构建基于金字塔块匹配的场景流能量函数:
式(3)中,D(si,o)表示数据项,ψ(si,sj)表示平滑项,其中s={si|1≤i≤ζ},o={ok|1≤i≤O},ζ表示参考帧图像中的超像素集合,O表示图像场景中的目标对象集合,ϑ表 示ζ中 相 邻 的 超 像 素.同 时,si=(ni,li),li∈{1,…,|O|},ok=(Rk,tk),这里ni是超像素平面的法向量,ok表示对象,离散标签li分配超像素块平面给对应的对象,Rk,tk表示对象的运动参数.
数据项D(si,o)主要是由图像数据一致性守恒假设组成.假设四幅视图中的匹配点具有外观一致性,则该假设可以通过惩罚参考图像中超像素和另外三个目标图像间的差异表示:
式(4)中,[·]表示Iverson括号,当括号内的超像素块标签与所对应的对象一致时则整个符号的结果为1,否则为0.Di(ni,ok)表示超像素块平面法向量与对象刚性运动的非相似性度量.为了提高数据项的可靠性,本文最终的数据项由flow,stereo,cross组成,可表示为:
式(6)中,x∈{flow,stereo,cross},K∈Z3×3表示 相机内参,[Rx(o)|tx(o)]∈Z3×4示对象刚性运动参数,其中Z是整数集.匹配代价Cx(p,q)反映了参考图像中像素与目标图像中像素的不相似性.其中,匹配代价越小,参考视图与目标视图中像素点相似性越强,可表示为:
式(7)中,β1,β2表示权重,Ccensusx(p,q)表示利用Censuns描述符的汉明距离,且在ρCmax处截断.用于计算参考图像与目标图像的相似度.Cxsparse(p,q)表示通过金字塔块匹配得到的匹配关系,作用是保持对应匹配块在前后帧变化过程中位移的一致性.其中πx表示像素p根据稀疏特征对应集的变形,ρδ1表示截断的L1惩罚函数且ρδ(x)=min(|x|,δ).
能量函数模型中的平滑项ψ(si,sj)主要由不同类别的正则化策略组成,用于防止相邻超像素块之间过度平滑,其分别由深度项、几何项和运动项三部分构成:
式(9)中,β3,β4,β5表示权重,ψdepthij(ni,nj)表示深度项,用于保持相邻超像素块在深度信息方面的连续性.表示几何项,作用是增加平面法向量相似性约束.表示运动项,作用是惩罚共享同一超像素块的对象,防止重复分配.将平滑项展开,则有:
式(10)中,d(n,p)函数表示像素p在两个相邻超像素边界处的视差值,ρτ2表示L1范数鲁棒惩罚函数,在超像素边界深度不连续区域施加约束,w(·,·)表示权重.
本文采用场景流估计研究中通用的量化评价指标异常值百分比(Percentage of outliers)对本文方法场景流估计效果定量分析,计算公式如下所示:
式中,uE(x,y)表示计算得到的光流,uG(x,y)表示真实光流,dE(x,y)表示计算得到的视差,dG(x,y)表示真实视差,N为图像中所有像素点的总数目,F1-all和D1-all分别表示估计光流结果中离群值占总真实值的百分比,估计视差中离群值占总真实值的百分比,SF-all表示场景流估计结果中离群值占总真实值的百分比,这里离群值素点根据端点误差是否超过阈值δ判断.
本文方法关键参数主要包括光流阈值和视差阈值,由于测试图像数据集包含的场景较为丰富且多变,光流阈值与视差阈值参数尚无法自适应设置.因此,为了在鲁棒性与计算精度之间达到平衡,本节以KITTI2015数据集中具有代表性的00000序列为例,展示光流阈值与视差阈值参数设置对本文方法计算精度的影响.从图2(a)中可以看出,本文方法计算精度对视差阈值在1到5之间的变化并不敏感,但当视差阈值超过5时,会导致光流计算和视差计算精度下降,因此本文视差阈值设置为5.在选定最佳视差阈值后,再次对不同光流阈值参数下获取的光流估计结果与视差结果进行分析对比,如图2(b)所示.可以看出,当光流阈值取9时,图像序列的场景流计算精度最高,因此本文光流阈值设定为9.
图2 不同参数设置对本文场景流估计精度的影响
为了验证本文方法在真实场景下的场景流估计准确性与鲁棒性,实验采用KITTI2015测试集[12]中提供的标准双目可见光图像序列作为测试图像序列,同时选取 具 有 代 表 性 的 深 度 学 习 方 法SE[9](Scene Flow Through Optical Expansion)、PWOC-3D[10](Pyramid,Warping,Occlusion,Cost Volume and 3D)、SENSE[8](Shared Encoder Network for Scene-flow Estimation)、Self_Mono[11](Self-supervised Monocular)和 传 统 方 法SSF(Semantic Scene Flow)、OSF[5](Object Scene Flow)、SFF[7](SceneFlowFields)、FSF+MS[13](Fast Multi-frame Stereo Scene Flow with Motion Segmentation)、PRSF[14](Piecewise Rigid Scene Flow)作为对比方法,以验证本文方法场景流估计性能的有效性.
表1分别列出了本文方法与对比算法针对KITTI2015测试集的图像序列场景流估计误差统计结果.由表1可以看出,基于深度学习的Self_Mono算法场景流计算误差最大,这是因为该方法通过深度学习方法获取单目图像序列光流信息来恢复深度信息,但光流信息的不准确会直接导致深度信息估计不准确进而使得场景流的最终误差值偏高.SE算法场景流估计精度最佳,源于该方法通过光学膨胀的几何理论推导出深度变化信息,从而求解出准确度较高的场景流.本文方法在不需要大量训练样本的情况下估计精度仅次于SE算法,而且在背景区域的估计精度略高于SE算法.同时,在基于传统方法的场景流估计算法中本文误差值最小,说明本文方法在真实场景下具有较高的场景流估计精度和鲁棒性.
表1 KITTI2015数据集场景流估计误差结果统计(异常值百分比)
此外,本文分别选取具有代表性的大位移运动04、17序列,遮挡场景07、18序列以及光照变化场景02、03序列图像集作为测试图像序列,以验证本文方法针对大位移、运动遮挡以及光照变化等复杂场景图像序列的场景流估计效果,结果如表2所示.从表2可以看出,本文方法场景流估计精度整体优于SSF和OSF传统对比方法.与性能最为优越的深度学习方法SE相对比,在针对大位移场景与光照变化场景时,本文方法在Fl和SF指标优于SE方法,仅在17序列与03序列略低于SE方法.在运动遮挡场景,本文方法在F1与SF指标明显优于深度学习SE方法.图3分别展示了本文方法与对比场景流方法计算误差结果对比,图中红色区域颜色越深,占比面积越大,表示场景流估计误差越大.黄色标签区域分别为图像序列中对应的大位移运动、遮挡与光照变化区域.从图中可以看出,OSF和SSF算法整体场景流估计效果较差,红色区域占比最大,这是由于复杂场景匹配不准确导致.本文方法和SE算法在整体场景流估计效果方面优于OSF、SSF算法,而本文方法在运动物体边缘区域场景流估计精度优于SE方法.说明本文方法针对大位移、运动遮挡以及较强光照变化情况下场景流估计具有较高的计算精度.为了更加具体的展示本文方法在大位移、运动遮挡以及光照变化区域的性能,图4展示了图3中标签区域细节放大图.从图中可以看出,本文方法在大位移运动区域、遮挡区域以及光照变化区域取得了最佳的场景流估计效果,红色区域占比相对最小,特别在边缘区域具有较高的场景流估计精度.
表2 本文方法与对比方法场景流误差估计结果统计(异常值百分比)
图3 本文方法与对比方法场景流估计误差图
图4 标签区域局部放大图
为了进一步验证本文方法针对大位移、运动遮挡等困难场景的场景流估计准确性与鲁棒性,本文采用MPI-Sintel数据集图像序列对本文方法和PRSF、OSF、FSF+MS、SFF、SS-SF[16](Semantic Segmentation Scene Flow)、SE等方法进行实验对比分析.实验结果如表3所示,其中market_2、ambush_4、ambush_6序列图集包含大量大位移运动,temple_2、ambush_2、bamboo_2图集既包含弱遮挡又包含严重遮挡,market_5、alley_2和market_6序列图集以弱光照变化和剧烈光照变化场景为主.从表3可以看出,针对大位移运动场景,仅在market_2略低于对比方法FSF+MS,但是ambush_4和ambush_6序列集本文方法场景流估计精度明显高于对比方法.在运动遮挡图像序列集,本文方法也取得了较好的场景估计精度,仅在bamboo_2序列集略低于对比方法FSF+MS,说明本文方法对于弱遮挡与严重遮挡场景具有较高的场景估计效果.在光照变化图像序列集,本文方法取得的最佳的场景流估计精度.说明本文方法针对光照变化场景同样具有较好的场景流估计效果.
表3 MPI-Sintel数据集光流误差结果统计(异常值百分比)
本文提出一种基于金字塔块匹配的双目场景流计算方法.首先根据超像素分割算法以及立体匹配算法得到超像素分割图和视差信息,其次建立基于金字塔块匹配的运动模型,得到对象的运动估计,然后将金字塔块匹配结果作为约束,通过联合前景对象与背景对象的运动参数和超像素平面的参数构建场景流能量函数,最后通过最小化该场景流能量函数,对刚性运动参数进行优化处理,得到最终场景流.实验结果表明本文方法针对大位移、运动遮挡和强光照等复杂场景具有更高的场景流估计精度和鲁棒性.