APP下载

基于Unity的虚拟现实图像质量评估研究①

2020-12-28

关键词:立方体球体全景

王 霞

(福建船政交通职业学院信息与智慧交通学院,福建 福州 350007)

0 引 言

全景图像捕获了用户的周围环境,从而模拟了单点可用的全部信息。诸如Samsung Gear 360的全景相机捕获全景照片[1],并将其存储为适合的全景可视化的格式。在全景图像的几种可能格式中,等矩形图像格式被广泛采用。虚拟现实应用程序在使用全景媒体时可提供身临其境的体验,并让用户感受到被虚拟画面包围的感觉。虚拟现实(VR)设备为每只眼睛的虚拟世界渲染不同的图像[2]。全景图像查看器通常将其内容呈现在一个球体中,以模仿用户在现实世界中会感知到的视觉元素的自然放置。但是,需要大量像素才能保持图片质量。对最佳视觉质量的研究意味着在给定的一组不同展览格式中选择一种,在现有范围内每种畸变度都不同。为了确定适合全景图像的格式和分辨率,必须考虑要在其中显示该图片的设备,因此必须有一个能够模拟设备并比较图像设置的工具,以便它能提供最大的显示效果。因此,提出了一个集成在Unity编辑器中的工具,该工具可以使用不同的设置自动进行质量评估。

1 图像质量评估工具设计

提出了一个全面参考的客观IQA工具来分析基于视口图像块的全景图像。将本方法实现在Unity中作为检查脚本运行,该脚本模仿最终图像将如何在目标设备上呈现。可以实现不同渲染配置的球面图像的全自动对比。在选择了等矩形图像、目标分辨率、视场的度数、一组观看方向和一组渲染解决方案之后,根据全景展示中的近似视口生成了不同的图像块,然后使用参考图像块根据客观指标评估每个图像块。为了比较不同的渲染实现方式,考虑到Skybox[3]渲染在游戏和虚拟现实应用程序中的广泛使用,选择了Skybox渲染作为参考图像。

球面图像查看器的标准实现方式是使用法线反转的球面。由于其特性,等角矩形图像在极点处变形,而立方体贴图在其角点处变形[4]。将描述基于着色器(shader-based)的实现,以在立方体贴图的可视表示形式中拟合等矩形图像。

全景图像涵盖了用户的整个视野[5]。考虑到等矩形图像格式,下面列出了一些映射实现:1)利用球体网格在其中渲染全景图像; 2)利用Skybox在背景上渲染全景图像; 3)将全景图像映射到立方网格的UV位置。就由角度方向提供的分辨率和全景图像的一般失真而言,上述的映射方式都有其优点和缺点。

为了将等矩形图像映射到球面,采用基于纬度/经度的标准UV球映射技术。这意味着需要为一组UV坐标(u,v) 找到一个三维坐标(x,y,z)。

给定n个经度值,可以使用以下公式获得角度大小T:

(1)

考虑一个球体,角位置αi代表第i个经度值:

αi=i×T

(2)

角度T的正弦和余弦定义了属于球体横截面的球体点的X和Z轴位置。以此方式,假设半径为R的球体,则X和Z轴位置可以计算为:

xi=Rsin(αi)

(3)

zi=Rcos(αi)

(4)

在纵向切割中,横截面的R射线沿球体的高度变化。因此,考虑到总共M个纬度值的角大小K可以计算为:

(5)

第m个纬度值αym可通过以下公式获得:

αym=m×K

(6)

每个球点的Y轴位置ym可以通过使用以下方法考虑单位半径来获得:

ym=cos(αym)

(7)

在纬度m处的横截面中获得的半径Rym定义为:

Rym=sin(αym)

(8)

将公式(8)分别带入式(3)和(4),根据经度n和纬度m坐标得出球体顶点的位置X和Z,得出:

x(m,n)=sin(αym)×sin(αn)

(9)

z(m,n)=cos(αym)×cos(αn)

(10)

y(m,n)=cos(αym)

(11)

当虚拟相机未光栅化3D元素时,将渲染Skybox。 在光栅化过程中,有必要为屏幕上渲染的每个像素(或片段)标识UV坐标。 Skybox着色器通常利用3D纹理通过称为tex3D的图形功能存储立方体的六个面。将等矩形图像映射到天空盒涉及在给定归一化方向的情况下找到UV矢量值。将向量(x,y,z)作为归一化方向,可以在顶点着色器上使用式(12)。

(12)

因此,将贴图映射到球体时,将UV坐标投影到3D空间中,而将贴图映射到Skybox时,则发生相反的情况:标准化3d空间位置连续寻找等效的UV坐标。

使用立方体贴图的第一步是生成一个立方体。但是,Unity生成的标准立方体没有足够的顶点来进行精确的UV贴图。 由于UV映射是正弦/余弦函数,因此会发生这种情况,而三角形内部的栅格化是通过其顶点的线性插值获得UV值的,从而导致变形。为了获得更好的结果,将每个三角形分为四个部分。从10个顶点和12个三角形的立方体中,获得了4090个顶点/三角形立方体。

当生成每个新顶点时,可以使用公式(11)计算其相应的UV坐标。值得注意的是,立方体贴图视图等效于天空盒中连续UV映射方法的离散化,即,它是按每个顶点计算的,而不是 以像素为基础应用。

关于度量,客观图像质量评估的目标是开发一种定量方法,可以确定任何给定图像的质量。 但是,很难找到与目视检查相匹配并适合各种应用需求的单一目标且易于计算的测量。 为了解决这个问题,使用了三种不同的度量标准:均方误差(MSE),结构相似性指数(SSIM)和峰值信噪比(PSNR)。MSE最小,SSIM和PSNR最高的图像被认为具有更好的质量。 MSE可以计算为:

(13)

类似地,SSIM假设图像中的相邻像素具有很强的相互依赖性,并且这些依赖性携带有关对象结构的重要信息[11]。SSIM可以计算为:

(14)

峰值信噪比(PSNR)是用于图像质量评估的最常用指标,可以使用MSE进行以下计算:

(15)

2 实验评估

2.1 系统架构

所提出工具的体系结构包含两层:Unity层和Python层。Unity实现涉及Unity编辑器中的C#配置层以生成图像。此外,python层用于计算每个由Unity生成的图像的客观指标。为了进行有效的通信,各层之间的跨层通信通过在Unity编辑器中创建新流程来进行。为了使用户体验愉快,开发人员以自定义统一检查器的形式开发了编辑器界面,即使用C#对组件进行自定义的视图。在此组件中,用户可以为输出图像定义多个首选项。这些首选项包括视角、宽度和高度以及要创建的图像的方向,要使用的比较指标、以及定义在过程结束时将生成图形还是报告的首选项。此外,python层负责评估Unity层生成的图像对,每个指标的结果都保存在最后的报告中。

2.2 量化评估

采用Unity 2017.3.1F和python 2.7进行系统实现,本系统可以通过unitypackage(来自Unity的标准格式)导入任何Unity项目,以分发资源和工具。将VR360QualityTool脚本添加到GameObject时,可以定义一个或多个目标方向,如第三部分所述。在本次实验中,使用了向右方向D0=(1,0,0),向上D1=(0,1,0)和向前D2=(1,0,-1)。

实验中使用了不同的渲染方法:Skybox、基于球体的着色器(S)、具有插值误差的立方体贴图着色器(Ce)和普通立方体贴图着色器(Cf)。扭曲的立方体贴图是有意创建的,目的是证明本方法能够识别此类错误。它发生在UV坐标在0.9到0.1之间的三角形中。该立方体贴图向相反方向(0.7,0.6 ... 0.1,x)进行插值,并在狭窄的图像区域内压缩整个图像。通过执行质量评估,将每个图像与其在参考图像中的各自方向进行比较,结果如表1所示。

表1 质量评估结果

普通立方体贴图着色器Cf渲染方法在所有方向上对所有度量均具有最佳结果。由于Skybox渲染的UV映射类似于立方体贴图方法的UV映射,因此它们倾向于针对同一方向生成更多相似的图像。与此相反,立方体贴图Ce在方向D0和D1上呈现出非常明显的失真区域。因此,两个方向的MSE值都大大升高。因此,可以得出结论,在给定合理的参考图像的情况下,MSE、SSIM和PSNR这三个指标足以识别带有着色器错误的图像块。

尽管球形着色器S中不存在渲染错误,但立方贴图Cf仍超过了其度量值。 这是通过基于球体的渲染和基于Skybox的渲染的失真之间的差异来解释的。等矩形贴图需要正弦UV贴图。考虑到球体的顶点具有正弦映射,因此UV坐标在每个三角形内线性插值。另一方面,Skybox映射在像素着色器内部采用了正弦映射,因此会影响生成的每个像素。但是,对于最终用户而言,这种差异在感知上并不明显。最佳渲染候选者将根据其在每个指标和方向上的表现进行排名。

3 结 论

研究设计了一种等矩形图像质量评估工具,该工具使用诸如MSE、SSIM和PSNR等客观指标,以便于在不同的图像分辨率和制图解决方案之间进行选择。工具已集成到Unity编辑器中,Unity是用于虚拟现实应用程序的最常用的开发引擎。该Unity实现通过生成基于视口的图像补丁来评估已经实现的渲染方法的图像质量,以实现等角矩形图像的可视化。

猜你喜欢

立方体球体全景
越来越圆的足球
计算机生成均值随机点推理三、四维球体公式和表面积公式
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
亲水与超疏水高温球体入水空泡实验研究
膜态沸腾球体水下运动减阻特性
全景敞视主义与侦探小说中的“看”
内克尔立方体里的瓢虫
图形前线
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS
全景搜索