APP下载

基于投票决策的实时遮挡处理技术

2021-09-19蒋素琴张梦骏李蔚清苏智勇

图学学报 2021年4期
关键词:深度图孔洞像素

蒋素琴,张梦骏,李蔚清,苏智勇

(1.南京理工大学自动化学院,江苏 南京 210094;2.上海机电工程研究所,上海 201109;3.南京理工大学计算机科学与工程学院,江苏 南京 210094)

增强现实(augmented reality,AR)技术[1]是一种将虚拟信息与真实世界巧妙融合的技术,能够有效增强真实环境和虚拟环境之间的无缝融合,最终达到自然、逼真、和谐的人机交互。目前大多数的AR 系统只是简单地将真实环境和虚拟对象进行叠加,没有考虑两者的空间位置关系和虚拟对象的信息延迟问题。错误的空间遮挡关系,会导致用户在感官方向上的迷失和空间位置上的错乱;而信息的延迟也不利于AR 的沉浸式体验。所以只有高效、实时地解决两者在空间中的一致性问题,才能得到具有强烈真实感的虚实融合效果。

目前对于虚实遮挡的研究主要分为基于模型、对象和深度的方法。基于模型[2-3]的方法需要事先对可能发生遮挡的真实物体进行建模并将其作为掩膜精准覆盖,利用深度测试确定空间关系。基于对象[4-5]的方法,真实物体和虚拟对象的相互遮挡关系是固定不变的,从而将问题转换为虚拟对象的跟踪注册。基于深度[6-7]的方法利用深度传感器捕获深度或利用深度估计算法得到场景中每个物体到视点的距离,通过比较真实场景与虚拟对象距离相机的远近关系,进行相应地遮挡渲染。其中,基于深度的虚实遮挡方法由于不需要预先建立真实场景的三维模型,不受复杂环境制约,更加适用于动态场景,而成为当前研究的主流方法。

当前,基于深度的虚实遮挡处理技术主要存在2 个问题:①深度数据的精度问题,无论是利用深度传感器获取的深度图,还是基于图像/视频通过稀疏重建得到的深度图,均存在噪声和孔洞问题;②虚实遮挡处理的实效性,由于虚实遮挡处理需要计算场景深度图,逐一比较场景中每个像素的深度信息,因此较耗时,在整个处理过程中很难达到实时性的要求。

针对如何获得场景中各像素深度信息的问题,KIM 等[8]提出一种基于立体匹配的算法获得真实场景的深度信息,用于真实环境的重建和虚实遮挡处理。VALENTIN 等[9]利用关键帧图像匹配技术获取场景的深度信息,实现虚拟物体的跟踪和实时的虚实遮挡处理。以上算法基于稠密匹配的思想,均存在计算量大,实时性差的问题。VALENTINI[10]利用深度传感器获取场景的三维几何结构并对用户进行有效地跟踪,实现动态环境的遮挡。DU 等[11]提出基于边缘捕捉的深度图增强方法,解决深度图的边界噪声和虚实遮挡的边缘视觉伪影问题。吕浩和陈世峰[12]提出联合双边滤波器的方法,填充像素缺失区域并保持锐利的深度图像边缘特征,提升了深度图的质量。以上处理均利用深度传感器获取深度图,但是图像质量易受噪声和设备的影响,适用于理想的室内环境。基于稀疏重建的方法[13-15]可以提高运行效率。STÜHMER 等[16]利用单个手持摄像机采集多幅连续图像,实时估计其深度图,并进行密集的几何图像重建。HOLYNSKI 和KOPF[17]利用同步跟踪与建模(simultaneous localization and mapping,SLAM)技术实现快速的深度感知,即利用图像序列和稀疏重建的3D 点信息,快速恢复出场景中每个像素点的深度值,从而解决虚实遮挡问题。WEEASKERA 等[18]根据稀疏地图和稠密深度预测的点间置信度,利用置信权值和概率数据来融合深度图,以解决方案对稀疏错误深度存在的不敏感性。以上算法利用稀疏重建得到场景的稠密深度信息,对稀疏点的可靠性要求高,未考虑错误稀疏点对深度恢复的影响。精度问题关键是得到准确的稀疏数据或解决错误数据融合导致的孔洞问题,从而实现逼真的虚实遮挡效果。

针对提高虚实融合实时性问题,ROXAS 等[19]提出实时分割前景物体的方法,利用前景物体轮廓的深度信息与虚拟物体进行遮挡处理。上述遮挡实现虽然简化了计算量,但在复杂背景和强烈遮挡的动态环境下,无法完美分割出前景物体的轮廓信息。HEBBORN 等[20]在融合过程中,根据传感器捕获的真实场景深度和渲染虚拟对象得到的区域,指定深度图像的前景、背景、无效和未知区域,实时进行有效区域的动态遮挡处理。实时性问题重点关注虚实融合的有效区域,从而加快动态场景的遮挡处理。

针对上述问题,本文提出通过施加区域约束提高深度图计算效率,通过融合局部错误深度值改善虚实遮挡效果。在提高深度图效率方面,提出增加区域约束从而限制稀疏3D 点深度传播的改进方法。因为虚实遮挡只出现在虚拟物体绘制的区域,所以只在虚拟区域传播深度到周围像素,从而快速恢复出深度图。在噪声数据和局部错误深度值导致的孔洞问题方面,提出基于patch 相似性和投票决策的方法。考虑单个像素比较结果的偶然性,基于patch 进行像素处理,对patch 内部像素进行投票决策和区域融合渲染绘制。

1 算法基本原理

1.1 算法流程

算法实现流程如图1 所示。真实场景视频信息和虚拟对象作为输入;局部区域深度估计模块通过稀疏重建得到稀疏3D 点的深度信息,再叠加不同的约束共同限制深度的传播,从而快速恢复出虚拟对象区域的深度图;局部噪声点融合模块通过深度比较确定虚实物体的前后位置关系,基于patch 进行投票决策和区域融合;最终输出具有真实遮挡关系的融合结果。

图1 算法实现流程图 Fig.1 Algorithm implementation flow chart

1.2 基于局部区域的深度估计

本文基于HOLYNSKI 和KOPF[17]的快速深度致密化算法实现局部区域的深度数据恢复。原始算法要恢复出完整的深度图信息,计算量大、效率低,无法做到实时融合。因此,本文提出基于局部区域的深度估计模块来提高实时性。图2 为模块的总体设计思路,其可分为3 个步骤:

图2 局部区域深度估计模块设计图 Fig.2 Design drawing of local area depth estimation module

(1) 输入准备。将视频信号和虚拟对象作为输入。

(2) 局部区域深度估计。通过给稀疏3D 点施加3 种不同种类的约束,限制深度数据的传播范围,快速恢复出局部区域的深度图。其中数据约束是利用直接稀疏里程计 (direct sparse odometry,DSO)技术跟踪并稀疏重建的3D 点信息;平滑约束是通过图像对齐并定位的深度边缘信息;区域约束是通过渲染虚拟目标生成特定区域的二值图像信息。

(3) 输出结果。输出场景几何中特定目标区域的深度图。

局部区域深度估计模块通过建立损失函数来描述步骤(2)中施加的不同约束,计算最小损失函数得到深度传播的最优解,从而将局部区域深度估计任务简单描述成一个二次优化的问题进行求解。各项施加的约束和激励的任务如图3 所示。其中数据项式(1)~(2)和平滑项式(3)皆是文献[17]方法中的公式。

图3 最小损失函数任务示意图 Fig.3 Minimal loss function task diagram

图3 中数据项①为促进深度数据的一致,即

其中,Edata为数据项①的损失函数;Dsparse为跟踪的稀疏点深度。在传播过程中,如果待传播的像素D(p)与稀疏点重合则wsparse设置为1,否则为0。

图3 中数据项②为促进时间的一致,即

其中,Etemp为数据项②的损失函数;Dtemp为重投影上一帧的密集像素而获得的深度图。对于重叠重投影点的所有像素D(p),wtemp为1,其他地方为0。

平滑项促使深度图在边缘地区有尖锐且明显的不连续性,而其他地方整体平滑且连续,即

其中,Esmooth为平滑项的损失函数;wpq为平滑项权重。如果D(p)是边缘像素,将权重wpq设置为0,允许边缘像素通过均值漂移不受惩罚从而形成清晰的不连续性。而其他区域像素D(p),wpq强制执行高平滑度,保证深度的平滑与连续。

区域项限制深度值只在有效区域内传播,即

其中,Earea为区域项的损失函数;Darea为虚拟物体渲染的目标区域二值图。对于重叠有效区域的所有像素点D(p),warea是1,其他为0。

得到二次优化函数为

其中,N为水平和垂直相邻像素的集合,数据项、平滑项和区域项对应的平衡系数分别取1,0.01,1和1。式(5)是一个标准的泊松问题,可以通过快速优化解算器进行求解。

图4 为区域深度估计流程示意图,其中图4(c)是将虚拟小车与图4(a)中真实存钱罐进行虚实融合处理;图4(d)是将图4(c)中黑色区域部分作为致密化处理的区域约束,从而恢复出的局部区域深度图。

图4 目标区域深度恢复示意图((a)原图;(b)稀疏3D 点;(c)区域二值图像;(d)目标区域深度图) Fig.4 Schematic diagram of target area depth recovery ((a) Original image;(b) Sparse 3D points;(c) Regional binary image;(d) Target area depth map)

1.3 基于投票决策的噪声点融合

基于投票决策的虚实遮挡融合处理模块的总体设计思路如图5 所示。输入有局部错误的深度数据;基于噪声点的投票决策融合模块通过深度比较确定区域内每个像素点虚拟物体和真实物体前后位置关系,再利用投票决策的方法,进行区域的融合处理;输出有真实遮挡关系的融合图像。

图5 基于投票决策融合的方案示意图 Fig.5 Scheme diagram based on voting decision fusion

1.3.1 融合问题

基于Holynski 的快速深度致密化算法在处理无纹理区域、非郎伯表面、反射和半透明表面[17]时,会生成错误的稀疏点,从而导致虚实融合中的孔洞和噪声现象,如图6 所示。

因图6(a)中插座区域存在倒影和反射,导致图6(b)恢复出的深度图存在不平滑、不连续和残缺的问题。错误的深度值会对虚实物体之间的相互遮挡 产生不利的影响。图6(c)中小车被存钱罐挡住车头部分。但是在出现局部错误深度值的地方,融合过程中虚拟小车的车盖部分出现孔洞问题。

图6 局部错误点的融合示意图((a)原始深度图;(b)局部错误点;(c)孔洞现象) Fig.6 Schematic diagram of the fusion of local error points ((a) Original depth map;(b) Local error; (c) Hole phenomenon)

针对上述问题,本文提出一种基于patch 的投票决策和融合的思想。由于深度图整体上是平滑连续的,错误的像素点较少且分布较稀疏。因此,本文首先对整幅图像进行分块处理,形成一系列n×n大小的patch;然后对每个patch 区域内部像素的深度值进行统计分析;最后,采取少数服从多数的投票策略,解决局部错误点导致的融合孔洞问题,提升融合效率。

1.3.2 投票决策融合

投票决策融合模块主要分为3 步,具体实现如图5 所示。

(1) 比较每个像素点对应的真实场景和虚拟场景的深度值;

(2) 对区域内的所有像素进行投票决策,少数像素服从多数像素;

(3) 区域融合绘制。

比较像素点的真实深度和虚拟深度大小来描述两者的前后关系。若像素点的真实深度大于虚拟对象深度,则该像素点用1 标志,表示绘制虚拟物体像素,否则用0 标志,表示绘制真实场景像素。针对目标区域出现局部的错误深度信息导致的孔洞问题,融入投票决策的思想。将注意力从单个像素点转换到整个patch,而将问题从逐点像素的比较与绘制转变为区域内所有像素的投票决策和区域绘制。

基于局部区域的深度估计恢复出的深度图是不规则的,如图7(a)所示,需要执行中心规则正方形区域和边缘零散像素2 种不同处理。对于规则patch 区域,以右边patch 区域为例,根据深度比较关系确定每个像素的标志如图7(b)所示,利用投票决策的思想判断该区域是否绘制,因为大多数像素满足标志1,所以该区域内的像素均为1,执行绘制虚拟对象像素的条件,区域融合结果如图7(c)所示。针对图7(a)边缘零散像素,以左边patch 区域为例,由于边缘像素分散且稀疏,投票决策的意义不大,所以强制执行边缘像素满足最近的patch内像素的绘制条件,从而边缘能得到比较平滑的融合效果。综上,基于投票决策的噪声点融合模块能够针对具有局部错误深度数据的深度图做到良好的虚实融合效果,解决像素融合过程中的孔洞问题。

图7 错误点投票决策融合((a)不规则区域2 种情况;(b)区域像素绘制;(c)区域融合) Fig.7 Voting decision fusion at wrong points ((a) Two cases of irregular areas;(b) Area pixel drawing; (c) Regional integration)

2 实验

2.1 环境与数据

依据Holynski 的算法思想,本文在Ubuntu16.04系统平台上,结合OpenCV 4.0 函数库开发实现区域深度数据的恢复,利用Unity3d 2019.2.16f1 游戏引擎实现虚实融合效果。本文在光照充足的条件下采集实验数据。数据来源于非理想化的日常场景,包括透明物体、稀疏纹理区域等。

2.2 实验过程

实验采用普通手机摄像头(分辨率1920×1080),拍摄连续视频作为实验数据。系统视频运行速度一般保持在30 fps,视频比较流畅。利用SLAM 跟踪场景3D 关键点,针对快速深度致密化算法和本文算法估计出深度信息的时间进行实验对比。本文利用Unity3d 针对真实物体和虚拟物体不同空间位置关系进行噪声点数据融合实验。

2.3 实验结果

2.3.1 时间结果比较

表1 为完整场景和局部目标区域深度估计运行时间比较结果。分别测试3 组数据,不同视频的时长、对应的图像序列数和目标区域大小各不相同。一般场景越复杂,特定模板区域范围越大,所需要的恢复时间越长。

表1 深度估计每帧时间对比(ms) Table 1 Depth estimation time comparison per frame (ms)

从每组的完整场景和局部目标区域处理的时间(表1)可知,在特定目标区域进行深度恢复,更有利于虚实遮挡的处理。

从每组的原始深度测试和本文投票决策虚实遮挡处理的单帧时间对比(表2)可知,本文算法时间会增加,但差距很少,可以忽略不计。

表2 投票决策遮挡时间对比(ms) Table 2 Voting decision occlusion time comparison (ms)

2.3.2 融合效果比较

实验对比了不同大小的patch 对虚实遮挡融合结果的影响。实验数据以单帧为例,为了准确地观察实验结果和比对,图8 (虚拟物体遮挡真实场景)和图9 (虚拟物体被遮挡)展示了完整的实验效果和对应虚拟区域的放大视图。

在虚拟对象遮挡真实场景的实验中,虚拟物体是三阶魔方模型,快速深度致密化算法得到的融合效果如图8(a)所示。由于真实书籍的边角处的深度值不精确,虚实融合中魔方中心区域出现孔洞问题。在虚拟物体被真实物体遮挡的实验中,虚拟物体是卡通汽车,快速深度致密化算法得到的虚实融合效果如图9(a)所示。由于真实场景桌子的反光现象,该部分深度数据不准确,从而出现车盖部分虚拟像素缺失的问题。图8 和图9(b)~(f)分别是本文算法采用不同patch 融合得到的虚实遮挡结果。

图8 虚拟物体遮挡真实场景融合图((a)原始快速深度致密化算法[17]的实验结果;(b)~(f)不同patch 融合的实验结果,其对应patch 大小分别为(b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6) Fig.8 Virtual object occludes real scene fusion map ((a) The experimental result of the original fast deep densification algorithm[17];(b)-(f) Tthe experimental results of the fusion of different patches,and the corresponding patch sizes are (b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6)

图9 虚拟物体被遮挡融合图((a)原始快速深度致密化算法[17]的实验结果;(b)~(f)不同patch 融合的实验结果,其对应patch 大小分别为(b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6) Fig.9 Fusion image of virtual objects being occluded ((a) The experimental result of the original fast deep densification algorithm [17];(b)-(f) The experimental results of the fusion of different patches,and the corresponding patch sizes are (b) 2×2,(c) 3×3,(d) 4×4,(e) 5×5,(f) 6×6)

从虚拟物体和真实场景不同的空间关系(遮挡前后)的虚实融合对比结果可知,随着选取的patch的增大,原始算法融合过程的孔洞越来越小。边缘的细微残缺像素也能实现平滑的绘制,与真实场景的物体更加融洽。实验表明基于patch 的像素点投票决策融合的方法,能够较好地解决孔洞和噪声点的问题。在patch 大小为6×6 时,融合效果最佳,对于真实环境和虚拟对象不同的空间关系都适用。但是patch 过小时会导致孔洞现象加剧,一般patch的选取不要小于3×3。

3 结 论

本文提出的基于patch 投票决策的实时遮挡处理技术,解决遮挡处理的实时性和深度数据精确性2 个问题。该算法能够做到实时的遮挡融合处理,同时解决不精确的深度数据导致的噪声点和孔洞问题。

本文算法是建立在深度估计算法所得深度图中错误像素点较少且分布较稀疏的基础上。如果出现大范围的错误深度数据,就无法正确处理融合中的孔洞问题。此外,针对错误的稀疏深度值,研究如何从根源出发纠正稀疏重建的错误深度信息,是需要继续研究的问题。

猜你喜欢

深度图孔洞像素
像素前线之“幻影”2000
一种基于WMF-ACA的深度图像修复算法
扩散与幂率蠕变联合控制的孔洞受约束长大模型研究
一种面向孔洞修复的三角网格复杂孔洞分割方法
“像素”仙人掌
基于深度图的3D-HEVC鲁棒视频水印算法
走路时,我们会踩死细菌吗
一种基于局部直方图匹配的深度编码滤波算法
叠加速度谱在钻孔稀少地区资料解释中的应用
高像素不是全部