APP下载

基于单目二维图像生成三维立体图像的研究

2022-05-30谈文尧吴光晔陈浩宇王昊意

电脑知识与技术 2022年28期
关键词:深度图视差视点

谈文尧 吴光晔 陈浩宇 王昊意

摘要:随着影像媒体应用的广泛普及,包含三维立体信息的图像或影视已成为当今媒体娱乐的重要组成部分。本文基于单目二维图像,通过生成虚拟视点图像,在一定程度上解决了单张二维图像生成包含三维立体信息图像的问题。研究通过使用SGBM全局匹配(Semi-Global Block Matching) 算法还原三维世界的空间信息,获取深度图像。同时,通过高斯滤波函数填充虚拟视点中因深度信息偏移所产生的图像缺失。实验结果表明,对单张二维图像进行获取深度图,生成虚拟视点,填补空洞而最终合成的三维图像能在一定程度上满足观众的三维体验需求。

关键词:SGBM全局立体匹配算法;深度图像;填补空洞;三维立体图像

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2022)28-0026-04

近年来,随着三维电影行业的不断发展,群众对于高质量三维电影的需求不断增加,对其所包含的“身临其境感”要求不断提高。传统的三维视频制作因其需要价格高昂的立体相机,同时,商业化的三维视频转制通常需要几十到上百人的团队运作,致使获得三维图像的方式非常有限。使用计算机模拟人眼所见的三维图像,正渐渐被普通群众所接受[1]。

三维图像是基于人眼的立体视觉基础来构建的[2],因此其所包含的深度信息能够被人所感知。采用二维图像生成三维图像的方法,首先对原始图像进行深度信息的提取,获得深度图并生成虚拟视点,同时填充深度图像中的空洞。结合原始图像和深度圖像产生由虚拟视点观察到的三维立体图像。但因为一般电子设备所支持的二维图像往往不含有深度信息,双目相机视图也仅是模拟人眼的双眼视差,无法包含完整的人眼视觉信息,在现阶段仍无法通过二维图像转换出完整的、理想的三维立体信息的三维立体图像。

1 三维立体视觉形成原理

人类眼球的结构与现实世界中的照相机十分相似,其中晶状体类似于照相机的镜头,它可以根据物体的远近自动调节焦距,而瞳孔则类似于光圈,它根据周围环境的亮度,调节进光量,视网膜则可以接受光影信息反馈给大脑[3]。但是,单凭眼球的这种生理特点,并不足以使人产生空间立体感。产生三维立体视觉主要是由于人类双眼所看到的图像虽相似但仍存在差异,而这种差异就称之为双眼视差,现代3D电影摄影系采用的双机系统也是根据这个基本原理制作出逼真的3D电影。

人类双眼从不同的角度和方向看向同一个物体,会产生两个不同的视觉画面,如图1所示。左眼从A看向C,右眼从B看向C,双眼所看到的图像如图1中的a、b所示,当大脑对这两幅存在差异的图像进行综合处理后,就会产生明显的立体感。显然,仅凭借单眼图像是无法做到这一点的,此时,A、C和B、C之间的连线称为“基线”,AC与BC的夹角α称为“视差角”,而由于双眼视差而形成的三维空间立体感的效应称之为“视觉位移”。

三维立体视觉的强弱与双眼视差有着密切的联系。由图1可知,当物体越靠近双眼A、B时,视差角α越大,在视网膜上呈现的a、b差异越大,则物体的立体感越强,很容易区分物体远近的空间立体关系;而物体离A、B越远,则夹角α越小。当物体无限远时,α约等于0°,此时a、b几乎没有差异,相当于单眼观看,就像观察天上的星星时,它们仿佛都在同一个平面上一样。总之,三维立体视觉依赖于双眼视差[4],它是人眼感知三维深度信息的重要因素。

2  三维图像生成过程

三维图像生成的过程可主要分为以下五个主要步骤,如图2所示:

2.1 前期预处理

单目二维图像作为网络上普遍流行的图像资料,其优点为:获取方便、成本低廉,但作为重建三维图像的原始图像,存在着不包含相机参数,只包含单眼视图信息等缺点。本文为后续使用SGBM算法提取深度图,需对单目二维图像做前期预处理。基于SGBM算法生成深度图需以左、右眼视图及相机参数为前提条件。对于单目二维图像,可将原始图像作为左视图,将左视图做右平移变换得到初始的右视图来生成左、右眼视图,显然直接由此相同的左、右眼图像是无法生成三维图像的。需要在此基础上,设置相机焦距f及两相机间距T作为相机参数,进行深度图提取工作。

2.2 提取深度图

在生成三维立体图像的过程中,深度图提取质量的好坏直接影响着三维效果的呈现。如SAD(Sum of absolute differences) 算法[4],该算法应用于图像立体匹配中的块匹配,其基本思想为求取每相邻两个像素块像素值差的绝对值之和,算法运行快速,但并不精确;BM(Boyer-Moore) 算法[5]通过从后往前依次与目标字符串进行匹配,同时采用坏字符规则和好后缀规则来计算匹配不成功时的跳跃距离,该算法运行速度快,但只能对8位灰度图像计算视差,深度图像效果仍旧不好;GC算法[6]效果实现较好,不过时间开销大。

SGBM算法作为一种全局匹配算法[7],其算法实现的核心步骤分为四个阶段:选取匹配基元;构建多方向的代价能量和函数;求取能量代价;求取函数最优解。经研究,该立体匹配算法的实验结果明显好于局部匹配算法的实验结果,因此本文采用了SGBM立体匹配算法提取深度图。

该算法的基本流程为:

1) 逐像素匹配。函数[dxi,yi,IL,IR]定义了两点是同名像点可能性的大小。

[dxi,yi,IL,IR=minyi-12≤yi≤yi+12ILxi-IR(yi)]  (1)

式中,[xi]和[yi]分别是左右扫描线上的像点。左扫描线上点x处的灰度定义为IL(x);IR(x)则是通过右扫描线上的采样点线性内插得到的。

2) 代价聚合[8]。在像素点P的周围设置16条路径,每条路径相隔22.5°,通过16条路径计算最小代价路径Lr(p, d)。首先构建损失函数,使得在每个方向上进行能量累积,然后将各个方向上的聚合代价相加得到总的聚合代价。公式如下所示:

[E(D)=pCp,Dp+q∈NpP1T[Dp-Dq=1]+q∈NpP2T[Dp-Dq>1]]    (2)

E(D)是能量函数,第一项是视差为D的所有像素匹配代价的总和,第二项为像素[p]所有邻近像素q视差改变小于2的约束惩罚项P1,第三项为像素[p]所有邻近像素q视差改变大于1的约束惩罚项P2。其中,P1是为了适应倾斜或弯曲的表面,P2则是为了保留不连续性。

3) 视差计算。因为损失函数中多了两个惩罚项所以变成了全局或者半全局最优,因此需要先知道周围像素的最优视差才能知道当前像素的最优视差,为了有效解决这个问题,提出一种路径代价聚合的思路。单一方向路径代价聚合[12]公式如下所示:

[Lrp,d=cp,d+minLrp-r,dLrp-r,d-1+P1Lrp-r,d+1+P1mini=dmin,…,dmaxLrp-r,i+P2-mini=dmin,…,dmaxLrp-r,i]     (3)

其中,[Lrp,d]是像素[p]从方向[r]聚合过来的视差为[d]时的路径聚合代价,[cp,d]是像素[p]在视差为[d]时的损失值。对各个方向上聚合完的聚合代价进行求和就得到了所有方向上的聚合代价,求得该像素聚合代价最小的那个视差就是该像素的视差。

4) 差错匹配检测。当左右两幅图像上的同名点匹配完成后,将右图像上的点匹配左图像上的同名点。若两次匹配得到的视差不同,则视为差错匹配并将其剔除。

2.3 基于深度图像生成虚拟视点

基于深度图像绘制虚拟视点(DIBR, Depth image-based rendering) 通过对深度信息与彩色图像进行结合,完成二维空间中的像素到三维空间中的坐标的映射及三维空间中的坐标转换到新的二维图像空间,能够大幅减少虚拟视点生成对参考图像数量的依赖,降低了成本及运算量,因此本实验使用基于深度图像生成虚拟视点的绘制技术。

2.3.1 相机模型的坐标系描述

相机模型在计算机视觉中通常用来处理三维空间坐标系至二维图像坐标系的映射问题[9]。该模型有四个坐标系,分别是世界坐标系、图像坐标系(以图像平面的中心为坐标原点)、像素坐标系(以图像平面的左上角顶点为坐标原点)和相机坐标系,相机成像原理示意图如图3所示。一般图像的成像原理为世界坐标系中的物体投影至像素坐标系,这种投影方式称为正向投影,可用公式(4) 表示其映射过程。

[xy1=fu0u00fvv0001?f0000f000010?Rt01?UVW1] (4)

其中[fu]=1/[dx],[fv]=1/[dy],[dx],[dy]分别是每个像素在图像平面[x]和[y]方向上的物理尺寸,单位为毫米,[u0],[v0]是图像坐标系原点在像素坐标系中的坐标,[f]表示相机焦距,[R]表示旋转矩阵,[t]表示平移矩阵,[U],[V],[W]表示像素在三维空间中的坐标。DIBR利用参考视点处的图像及其每个像素对应的深度值,结合相机参数通过投影变化合成虚拟视点处的图像,主要包括参考图像到三维空间的投影和三维空间到虚拟视点的投影两个步骤。

2.3.2 参考图像到三维空间的投影

参考图像到三维空间的投影指将图像坐标系结合深度图中所包含的深度信息,反向投影至三维空间的世界坐标系的过程。生成虚拟视点的过程可以理解为二维图像坐标从图像坐标系反向投影至世界坐标系,以获得图像在三维空间下的坐标。设M为公式(5) ,公式如下所示:

[M=f000f000f]      (5)

反向投影公式如下:

[(U V W)T=RrefM-1refx y 1dx,y+tref] (6)

其中[Rref]、[tref]、[Mref]、[dx,y]分别表示参考视点处的旋转矩阵、平移矩阵、M矩阵和深度值。

2.3.3 三维空间到虚拟视点的投影

图像坐标系内的物体经过反向投影,可将二维坐标系内的物体重新映射至三维坐标系,此时再进行一次正向投影即可获得物体在虚拟视点处的坐标。公式如下:

[lmnT=MvirR-1virUVWT-tvir] (7)

其中[lmn]表示虚拟视点的坐标,[Rvir]、[tvir]、[Mvir]分别表示参考视点处的旋转矩阵、平移矩阵和M矩阵。

2.4 填补空洞

基于深度图生成的虚拟视点得出的图像在某些位置的像素上存在信息的缺失,这是由于前景位移与背景像素位移差距过大导致的,前景深度值比较大,所以像素平移量比背景平移量大,于是就在前景和背景之间产生了所谓的“空洞”。本文采取高斯滤波[10]的方法减少图像噪点,其实质是对整幅图像的像素进行一个加权平均处理,每一个像素点的值都为其本身及邻近像素加权平均之后的结果。图像被平滑的程度取决于标准差,离中心越近的像素权重越高,因此相对于均值滤波,高斯滤波的平滑效果更柔和且边缘保留更好。具体使用到的二维高斯滤波函数如下,式中,σ为模板宽度,u、v为像的模板坐标,对应原点即为模板的中心位置:

[Gu,ν=12πσ2e-u2+v22σ2] (8)

本文采用了3×3的高斯卷積核、5×5的高斯卷积核和7×7的高斯卷积核,分别对得出的深度图像进行滤波,滤波后的深度图像如图4。通过三种不同高斯过滤器的比较,3×3的卷积核过滤后的深度图像噪点减少不明显,7×7的卷积核过滤后的深度图像造成了原图的模糊,而5×5的卷积核过滤后的深度图像能够缩小空洞,且图像较清晰,因此在实验中使用的都是5×5的卷积核。

3 实验结果及结论

本文从双眼视差原理出发,研究了利用SGBM立体匹配算法生成深度图,并基于深度图像生成虚拟视点,同时对其进行空洞填补处理,获得相应效果对比图,最终得出红蓝图像,通过佩戴红蓝眼镜能够看到具有一定立体效果的三维图像。但是使用SGBM算法提取深度图像具有严格的参数要求,并且针对不同的图像均需要重新调节各项参数。同时,SGBM算法对于图像的输入要求也较为严格,对于使用单幅图像进行平移操作而生成的图像对,算法并不能很好地配对两幅图像之间的像素,噪声影响大,后续仍有提升空间。

参考文献:

[1] 陈桦.基于2D转3D的深度图生成技术研究[D].北京:北京邮电大学,2015.

[2] 徐萍.基于深度图像绘制的二维转三维视频关键技术研究[D].南京:南京邮电大学,2011.

[3] 郝宽晓,周籽秀.立体视觉的形成机制及测量方法的相关研究[J].国际眼科杂志,2020,20(3):500-503.

[4] 王楠.SAD与Census融合的双目匹配算法研究及FPGA实现[D].西安:西安科技大学,2020.

[5] 李先祥,陈思琪,肖红军,等.基于SGBM算法与BM算法的三维重建分析[J].自动化与信息工程,2019,40(5):6-12.

[6] MARTULL S,PERIS M,FUKUI K.Realistic CG Stereo Image Dataset with Ground Truth Disparity Maps[J].电子情报通信学会技术研究报告,2012,111(430): 117-118.

[7] 赵成星,张晓玲,杨宇.基于SGBM半全局立体匹配算法的三维重建[J].激光杂志,2021,42(4):139-143.

[8] Hirschmuller H.Stereo processing by semiglobal matching and mutual information[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2008,30(2):328-341.

[9] 江雷.基于深度信息虚拟视点生成[J].現代计算机(专业版),2018(3):45-49.

[10] 胡雄楼.2D转3D中深度图提取算法及实现[D].合肥:合肥工业大学,2018.

【通联编辑:唐一东】

猜你喜欢

深度图视差视点
基于自适应窗的立体相机视差图优化方法研究
基于深度图的3D-HEVC鲁棒视频水印算法
基于梯度域引导滤波的视差精炼迭代算法
一种基于局部直方图匹配的深度编码滤波算法
基于分割树的视差图修复算法研究
叠加速度谱在钻孔稀少地区资料解释中的应用
视点
立体视差对瞳孔直径影响的研究
让你每天一元钱,物超所值——《今日视点—2014精萃》序
两会视点