一种联合散焦与大气透视线索的室外场景深度估计方法
2020-02-01朱先震吕顺唐天航
朱先震,吕顺,唐天航
(四川大学计算机学院,成都610065)
0 引言
作为人类认识和感知世界的基础,深度信息被广泛应用于三维重建、无人驾驶、工业检测、外科手术定位等诸多领域。目前,大多数深度估计方法依据计算摄影学的相关理论,采用基于光场恢复[1-2]、深度线索[3-8]或机器学习[9-10]的方式完成场景深度信息的恢复。然而,基于光场恢复的深度估计大多需要额外的附加硬件或修改相机结构,应用范围有限;基于机器学习的深度估计每次训练仅针对特定场景的图像有效,泛化性不强。故本文选择基于散焦和透视线索的深度估计方法作为研究重点。
基于散焦线索的深度估计将深度估计问题转化为对散焦区域的模糊估计问题,依据薄透镜成像原理计算场景的相对深度。Pentland将散焦图像建模为清晰图像与点扩散函数(PSF)的卷积,通过测量图像中给定点的模糊量,计算场景中相应点的距离[3];Zhuo利用已知的高斯模糊核对输入图像进行再模糊,通过计算输入图像和再模糊图像的梯度比得到边缘位置的散焦量,进而恢复完整的场景深度图[5]。基于大气透视线索的深度估计方法认为,由于空气中气溶胶的散射作用,距离观测点越远的物体其成像对比度、颜色、分辨率衰减越明显。Zhu等人提出颜色衰减先验,通过建立雾天图像场景深度的线性模型,可以很好地恢复有雾图像的深度信息[7];He等人提出暗通道先验用于图像去雾,在恢复清晰无雾图像的同时可以得到高质量的场景深度图[8]。
本文致力于解决单幅单目室外图像的自然场景深度恢复问题。之前算法由于仅采用散焦线索进行深度估计,无法避免焦平面及模糊纹理二义性,造成最终深度估计结果存在误差,鲁棒性不足。为解决该问题,本文提出一种联合散焦和大气透视线索的深度估计方法恢复输入图像的深度信息:①分别计算图像散焦与透视线索的深度估计值;②分析对比两种深度估计信息,采用最小二乘优化的方式融合来自不同线索的深度值,获得场景的最终深度图。
1 本文算法
1.1 基于散焦退化模型的散焦深度估计
从散焦估计深度是一个盲反卷积问题[11],在恢复场景深度信息的同时需要估计清晰的场景图像,求解效率不高,实时性不强。在实际应用中,由于人们往往只关注于高质量深度信息的获取而无意求解场景的去模糊图像,故可将深度估计转化为半盲反卷积问题,避免场景清晰图像的求解。受此启发,本文采用的散焦深度估计方法包括两个阶段,即边缘稀疏散焦量的估计与散焦信息的传播。
1.1.1 薄透镜模型及散焦图像建模
尽管大多数相机镜头采用具有多个独立透镜元件的复杂设计,但本文在此仅讨论简化的薄透镜成像模型,相关原理足以支撑本文提出算法的适用场景。
图1 薄透镜成像模型
图2 物距dobject与模糊圆直径dblur间的关系
图1 展示了简化的相机成像模型。由高斯成像公式[12]可知,薄透镜成像满足:
其中,dobject为成像物体与镜头之间的距离,dimage为镜头与准确聚焦像平面之间的距离,f为镜头焦距。由于衍射效应,散焦成像形成的模糊光斑可近似为圆形斑点,被称为模糊圆(Circle of Confusion,CoC)。假设镜头到传感器距离为d,根据场景几何关系结合式(1),模糊圆的直径dblur满足:
其中,A为镜头光圈直径,N为光圈值,模糊圆直径dblur反映了成像点的散焦程度。图2展示了当焦距f、光圈值N取特定值时物距dobject与模糊圆直径dblur满足的数量关系。从图中可以看出,在焦平面两侧,场景物距与模糊圆直径具有一一对应的关系,故通过估计散焦图像的模糊量可以恢复场景的相对深度。此外,散焦引起的图像退化过程可以建模为场景反射光和相机点扩散函数(Point Spread Function,PSF)的卷积[3]。在实践过程中,一般采用标准差为σ的二维高斯函数作为点扩散函数的近似,因此,散焦成像过程可以表示为:
1.1.2 场景散焦深度估计
假设图像中的场景边缘均为理想的阶跃边缘,可将其建模为:
其中,A和B分别表示边缘强度与偏移量大小,s(x)表示阶跃函数,x表示像素位置。根据式(3),模糊边缘可以表示为:高斯函数g(x,σ)的标准差σ反映了边缘像素x的模糊程度。
采用Zhuo[5]的方法进行边缘散焦估计。使用具有已知大小模糊核σr的高斯函数对图像进行模糊处理,再次模糊后的边缘梯度可以表示为:
可以看出边缘梯度大小仅与边缘强度A及高斯函数标准差σ有关。根据Zhuo的理论,原始边缘与再次模糊边缘之间的梯度比R在边缘像素处(x=0时)取得最大值[5],即:
因此,已知边缘像素的最大梯度比R与再次模糊的模糊核大小σr,可求出原始图像的边缘稀疏散焦量:
实验中,本文采用σr=1的模糊核对原始图像进行再次模糊,采用Canny算子提取图像边缘,基于式(7)可以求得边缘稀疏散焦量的估计。如图3所示,(a)为原始场景图像,(b)为求得的场景稀疏散焦图。
图3 场景稀疏散焦图
获得场景边缘稀疏深度图d̂后,通过散焦传播的方式进行完整场景深度d的估计。根据局部一致性假设,在局部较小的图像区域内,不同像素对应同一成像物体,其深度应当是一致的。基于这一假设,受Chen[6]提出方法的启发,采用基于超像素的散焦传播方法获得完整场景深度图。
首先使用SLIC算法[13]对图像进行过分割,得到超像素集S={s1,s2,…,sN}。根据局部一致性假设,每个超像素si区域内的深度应当是一致的,故可依据上一步求得的边缘稀疏散焦量为每个超像素分配其初始深度。超像素si的初始深度可以定义为:
针对散焦传播,本文作出如下假设:超像素si与sj如果有相似的强度和颜色,则具有相似的模糊度。据此,应用特征相似性对任意两超像素间的相似度进行度 量,构 建 相 似 权 重 矩 阵。其 中,表示超像素si与sj颜色空间的欧氏距离。由于W编码任意两个超像素之间的相似性,因此可以使用该矩阵调整超像素对间的散焦模糊量,将边缘稀疏散焦量传播至整幅图像,修正超像素的初始深度值。具体方法可以表示为:
其中,Ŵ表示正则化后的相似权重矩阵,满足每行元素相加为1的条件。式(9)表明,每个超像素的深度估计来自于除不包含边缘像素外的所有其他超像素的散焦传播。
图4 散焦传播得到的完整场景深度图及深度估计误差
使用散焦传播算法得到的完整场景深度图如图4所示。从图中可以看出,受焦平面二义性影响,实际拍摄的近景被错误估计为具有更大的景深,不符合人类的直观判断。因此,为提高深度估计的准确性,需要融合来自大气透视线索的深度信息修正散焦深度估计中不准确的深度值。
1.2 基于散射成像模型的透视深度估计
1.2.1 大气散射模型及初始透视深度估计
如图5所示,由于空气中灰尘、烟雾等气溶胶颗粒的存在,几乎每一个室外场景反射的光线在到达相机前都会在大气中散射,造成相机拍摄图像的对比度降低、饱和度下降。针对这一现象,Narasimhan等人建立了散射成像的数学模型,解释了强散射介质中探测系统成像质量下降的原因[14]。该模型可以表示为:
图5 大气散射成像模型
其中,I为相机拍摄图像的观测强度,J为场景辐射照度,A为全局大气光,t为介质透射率。当光线在均匀介质中传播时,介质透射率可以表示为:
其中,β为大气散射系数,d是场景深度。式(11)表明介质透射率随深度增加呈指数衰减,在估计场景介质透射率的同时可恢复场景相对深度信息。
大气散射模型被广泛应用于图像去雾操作。在图像去雾的同时,除了从观测图像I中恢复出无雾的原始场景图J,还可同时预测全局大气光A及场景介质透射率t。He等人基于统计观察,提出暗通道先验理论,该理论认为对于室外无雾图像,在大多数非天空区域中,至少存在一个颜色通道的像素强度非常低且接近于零[8],可以表示为:
其中,Jdark表示图像J的暗通道,Ω(x)表示以像素x为中心的局部图像域,c表示彩色像素的颜色通道。假定全局大气光A已知且不为0,结合式(12),可推导出介质透射率t(x)的表达式:
如图6所示,(a)为相机拍摄的室外图像,(b)和(c)分别为其对应的暗通道及透射率图。依据大气透视线索,在估计出场景全局大气光A的基础上,结合式(11)和式(13)可求得场景初始透视深度信息:
图6 图像暗通道及其透射率
1.2.2 大气透视深度估计修正
基于大气透视线索的深度估计方法根据场景中远、近景散射效应的不同利用式(14)恢复场景的相对深度信息。然而,当场景本身包含反射强度较高且表面无阴影覆盖的明亮区域时,该方法会产生较大的深度估计误差。为解决该问题,本文提出结合亮通道计算与高层语义先验的不可靠深度修正方法。
与暗通道类似,将图像亮通道定义为:
式中,Jbright表示图像J的亮通道,Ω(x)表示以像素x为中心的局部图像区域,c表示彩色像素的r,g,b颜色通道。从式(15)可知,图像亮通道描述了局部图像区域各像素颜色通道强度的最大值。由于图像明亮区域的各通道像素强度值都很高,其亮通道与暗通道之间的差异很小,故使用图像亮通道与暗通道的差值可以识别不可靠的深度估计区域。
基于这一思想,取滤波后的亮、暗通道之间的差值与某一阈值进行比较,若差值低于设定阈值,则判定该像素属于深度估计不可靠区域,具体可以表示为:
式中,G表示引导滤波[15],用于平滑亮、暗通道之间的差值图像,α表示设定阈值,用于判定特定像素的深度估计是否可靠。实验中,本文将α设定为0.4。图7显示了使用该方法预测出的不可靠深度估计区域。可以看到图中天空、道路、灰色建筑物等色彩对比度较低的区域都被标记为不可靠区域,符合上文的分析判断。下面介绍使用高层语义先验修正不可靠深度估计的方法。
图7 识别不可靠的深度估计
首先,使用K-均值聚类算法[16]对图像进行分割,将图像划分为天空、地面及中间过渡区域。聚类后,根据图像几何关系与图中颜色、纹理变化,推断场景隐含的高层语义信息。即,位于图像顶部且像素强度较高的区域为天空区域;位于图像底部且具有特定纹理变化的区域为地面区域;除此之外,其余区域为中间过渡区域。图8展示了使用K-均值聚类法得到的图像分割结果。
图8 图像场景分割及高层语义推断
获得场景高层语义信息后,可以根据不同区域的对象类型有针对地修正其不准确的深度估计。对于天空区域,默认其位于距离焦平面无限远处,故为其分配最大深度值;对于地面区域,根据相机投影模型[17],像素距离图像底部越近对应深度越小,故为最底部的图像像素分配最小深度值;对于图像中间过渡区域,取过渡区域与深度估计不可靠区域的交集,采用乘以特定比例因子的策略过渡区域的不可靠深度估计值,修正后的深度估计可以表示为:
图9 基于高层语义信息的深度估计修正
1.3 多线索深度估计融合
获得场景散焦深度估计与优化后的大气透视深度估计后,本文采用最小二乘回归策略,通过优化目标函数取得最小值,获得两种深度线索的融合权重。具体可以表示为:
其中,d为数据集中场景真实深度值,α与β分别为权重系数,db为散焦深度估计值,dp为优化后的大气透视深度估计值。通过优化式(18)取得最小值,可以得到最终的场景深度图。
2 实验与结果分析
为验证本文提出算法的有效性,本文使用斯坦福大学的“Make3D”图像数据集[9-18]进行测试。“Make3D”数据集包含了534张分辨率为1704×2272的室外图像,以及使用激光扫描测距仪采集的灰度范围为1~81的对应真实深度图。本文算法基于MATLAB R2018b编程实现,运行于载有Intel Core i5-6300HQ CPU、16GB内存、64位操作系统的PC上。同时使用Zhuo[5]、He[8]、Saxena[9]提出的深度估计方法作为对照算法进行性能对比。
2.1 定性分析
如图10所示,(a)为从“Make3D”数据集中随机选取的测试图像,(b)为测试图像对应的真实深度图,(c)、(d)、(e)、(f)分别为Zhuo算法、He算法、Saxena算法以及本文提出算法在测试图像上的表现。从图中可以看出,由于“Make3D”数据集包含的测试图像具有较大景深,缺乏足够的散焦线索,Zhuo算法采用散焦测距原理进行深度估计,无法有效应对此类图像,生成的深度图对近、远景区分不明显,主观视觉效果不好;He算法对场景透射率进行估计,使用透射率作为深度先验进行相对深度估计,无法有效应对不准确透射率带来的深度估计误差,对于存在明显过亮区域的测试图像,亮区域深度估计结果不符合主观视觉判断;Saxena算法虽然可以生成相对深度估计较为准确的深度图,但深度估计结果存在明显噪声,主观视觉效果不好。本文提出的算法结合散焦线索与大气透视线索进行深度估计,使两种单一线索得到的深度估计优势互补,避免了Zhuo算法与He算法存在的问题,生成了视觉效果良好的、符合人眼主观判断的深度图。
除此之外,本文还使用PENTAX K-5单反相机拍摄了若干张真实自然环境下的室外图像用于算法测试。如图11所示,(a)为拍摄的真实自然场景图像,(b)、(c)、(d)、(e)分别为Zhuo算法、He算法、Saxena算法以及本文提出算法在对应图像上的表现。从图中可以看出,相较于“Make3D”数据集,虽然Zhuo算法深度估计性能有所提升,但是受焦平面及模糊纹理二义性影响,该算法对于部分近景区域及天空区域的深度估计存在明显误差。对于He算法,由于选取的拍摄图像中基本不存在明显的过亮区域,其深度估计性能也有提升,生成的深度估计结果基本符合人眼相对深度判断,但视觉效果还有待提升。对于Saxena算法,由于该算法采用机器学习的方式进行场景深度估计,无法保证其在各类不同场景中的泛化性,故Saxena算法在真实拍摄的室外场景图像上表现不尽人意,相对深度估计结果与人类主观视觉判断差别较大。本文提出的算法采用散焦与透视线索进行深度估计,适用于绝大多数室外场景图像,避免了Saxena等基于机器学习的深度估计算法泛化性不强的问题。此外,选取部分图像局部区域放大对比可以看出,本文算法对于深度细节处理更加优异,较好反映了不同场景的相对深度关系,在真实拍摄的测试图像上性能优于对比的3个基准算法。
图10 不同算法在“Make3D”数据集上深度估计结果对比
图11 不同算法在真实拍摄图像上深度估计结果对比
2.2 定量分析
选取绝对相对误差(Absolute Relative Error)与平均绝对对数误差(Mean Absolute Logarithmic Error)作为深度估计结果的评价指标,其中,绝对相对误差可以定义为:
平均绝对对数误差可以定义为:
式中,N表示图像像素的数量,Di表示算法估计深度值,D*i表示场景真实深度值。随机选择“Make3D”数据集中的100张图像用于测试,分别使用Saxena算法、Zhuo算法、He算法以及本文提出算法对测试图像进行深度估计。使用绝对相对误差与平均绝对对数误差度量不同算法在每张测试图像上的性能表现,取所有测试图像的误差均值作为算法的最终性能度量。表1展示了本文提出算法与Saxena算法、Zhuo算法、He算法深度估计误差的定量对比,从表中可以看出,本文提出算法在深度估计准确性上优于其他算法。
3 结语
本文沿用基于深度线索的深度估计方式,提出了一种结合散焦线索与大气透视线索的单幅单目室外图像深度估计方法。不同于以往采用单一线索的深度估计方法,本文分别采用散焦与透视线索进行深度估计,采用多线索深度融合的方式获得最终的场景深度估计。对于散焦深度估计,基于散焦图像退化模型与局部一致性假设,求取并传播边缘稀疏散焦量,获得场景散焦深度估计值;对于透视深度估计,基于暗通道先验与高层语义信息,求取并修正大气散射深度估计,获得场景透视深度估计值;对于深度信息融合与最终深度图的生成,采用最小二乘回归策略获取不同深度线索的融合权重,融合来自散焦与大气透视线索的深度信息获得场景的最终深度估计。实验结果表明,相比3个对比的基准算法,提出的算法可以有效避免采用单一线索进行深度估计可能产生的误差,精度平均提高10%~13%,生成主观视觉效果良好的、鲁棒性较高的场景深度图。
表1 本文提出算法与Saxena、Zhuo、He算法的性能对比