为什么虚拟现实视频看上去那么粗糙?

2023-11-17

分辨率

Gear VR 可以支持超高分辨率(UHD) 的播放。在像素方面,UHD视频每一帧有 3840 像素宽 x 1920 像素高的大小。视频经常播放 30 帧每秒 (较低的分辨率也支持高帧率)。Galaxy S6 手机显然是能够轻松地播放 4k 视频的。但这分辨率实在太低,看不到太清的图像。
 要明白个中原因,我们需要回答关于分辨率的两个不同的问题。我们看这个Galaxy 屏幕的显示分辨率是多少呢? 让我们把它叫做屏幕分辨率。第二个问题是,在头显中我们可以看到多大的UHD图像 ?我们把它叫做视场分辨率。
 Galaxy S6 的屏幕分辨率为 2560 x 1440 像素。所以每只眼睛可以看到 1280 x 1440 像素的图像,通过Gear VR的单个透镜进行查看。
 [题外话 ︰ Gear VR 镜头会扭曲图像,实际分辨率是 1280 x 1280。每只眼睛可以看到 1280 x 1280 的图像。还不算太糟糕,但这并不是全屏。但在超过 500 像素 / 英寸的图像下,这应该足够使图像变得清晰。]
 让我们回到视场分辨率上。记得视频的每一帧是 3840 × 1920 像素,但是这个视频的每一帧都需要填补 360 ° 的水平视图和 180 ° 的垂直视图。对于Gear VR来说 ,视场是 96 ° — — 超过 360 ° 视图的四分之一多点。当我们查看图像时,我们只会看到一个小方形截面。我们移动头的方向的时候,视野图像就需要更新, 而软件显示的这小部分视图正是我们在某一特定时刻所能看到的图像。这个小方框就被叫做视场。
 视场只是完整的 360 ° 全景视频的一小部分
 简单的数学运算显示,每一度的视图对应 10.6667 的像素 (1920像素/180 度 = 10.6667 像素/度)。乘 10.6667 x 96的话,你得到的是 1024。
 所以我们透过头显看到的图像是 1024 x 1024 像素 (最多),但显示的大小是 1280 x 1280 像素。还有为什么视频看起来那么粗糙呢。 用软件剪切出来的这一小段视频比显示的分辨率要小。因此软件需要拉伸图像来达到视场所需的分辨率。这还是以较低的标准来衡量的,因为Galaxy 手机需要同时解压图像并把图像投射到屏幕上。这样的结果是,图像会有一点点的粗糙。但 20%的程度不算什么大问题。

立体使它变得更糟

 到目前为止讨论的显示问题都只和单源视频有关 (每只眼睛都看到相同的图像)。若要增加沉浸感,立体显示是首选, 每只眼睛看到的偏移图像将会欺骗你大脑的深度感知。对于Gear VR ,立体显示能真正提高现实感。立体图像看起来更加逼真,这是因为偏移量有助于区分场景中的物体。对Gear VR来说, 一些 3D 游戏可以在立体环境中操作,使玩家觉得更加真实。
 每只眼睛在理想情况下应该得到高分辨率的 360 ° 视图。这就要求我们在一维空间把分辨率加倍,例如垂直情况,每只眼睛都要单独看到图像。
 如果一般的 UHD 视频是 3840 × 1920,每一帧提高一倍分辨率图像将会变成 3840 x 3840的超大图像,这需要硬件支持。但是我们只能将此超大的视频打包在 3840 × 1920 框架上。左眼和右眼共享同一帧的画面,每只眼睛将获取 3840 × 960 像素的图像, 想要覆盖完整的视图,就必须垂直拉伸。
 立体图像从头到脚打包在 3840 x1920 像素里。视场会被垂直挤压 50%。”Image Credit的 鲍勃达斯表示 (Bob Dass) — — Flickr
 两个图像视图打包成一帧的结果是每只眼睛得到的分辨率要小得多。缩放比例 20%不是最好的。但缩放 150%(512 像素垂直拉伸到 1280像素) 会导致分辨率感知损失。无论你的格式填充在哪里, 你都会失去一半的分辨率。

流媒体使其变得更小

 当我们看着流式视频的时候,情况会变得更糟。 YouTube 360 ° 和其他流式视频服务的分辨率会比4k分辨率低, 这是因为很少有观众有足够大的宽带来观看UHD视频。 因为播放的视频是从互联网上的一个服务器下载观看而不是在本地设备上直接观看,所以他们降低分辨率来保持稳定的流媒体体验。通常, 图像会在 2048 x 1024 的分辨率上上显示。使用上面的公式计算的话,YouTube 每帧 540 x 540 像素的视场分辨率就足够了。360 ° 视频流媒体播放高清分辨率的视频时候, 真的像在看一台只有 720 x 480 或 720 x 576分辨率的旧电视 ,而且它必须拉伸 230%才能全屏播放,这就是为什么播放立体声 VR 视频的时候, 会看起来会很粗糙。
 越大越好
 对于目前的播放设备例如 Galaxy S6 (甚至是即将发布的Oculus Rift ),略大于显示器分辨率的视场分辨率会有帮助。把稍大的图像缩减一下会使图像看起来更加平滑并将减少失真和噪点。
 1536 × 1536 像素分辨率会是一个好的分辨率。这比显示器分辨率大 17%左右,在我们的测试中,它的体验有了很大的改善。我们继续使用上面提到的公式, 如果我们想要用1536像素来覆盖 96 ° 视场的话,我们需要 16 像素/度的分辨率。乘以360 ° × 180 °,你将得到 5760 x 2880 的分辨率。结果显示我们需要近 6000 像素以获得更高覆盖率的图像。
 那立体声呢?记住,对于立体图像,理想的情况是每只眼睛都能看到高分辨图像 (一个聪明的办法是把左眼和右眼钉在一起) 。粗糙的计算,这至少需要 5760 像素宽 5760 像素高的视频文件。这相当于 3千3百万像素的视频。即使有千兆位网速或 5 G 无线网络和更好的压缩, 制作能播放3千3百万像素视频的头显将会成为一个巨大的挑战。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么虚拟现实视频看上去那么粗糙? 的相关文章

随机推荐

  • C语言中的static 详细分析

    google了近三页的关于C语言中static的内容 发现可用的信息很少 要么长篇大论不知所云要么在关键之处几个字略过 对于想挖掘底层原理的初学者来说参考性不是很大 所以 我这篇博文博采众家之长 把互联网上的资料整合归类 并亲手编写程序验证
  • 仓鼠与厕鼠

    author skate time 2010 05 28 仓鼠与厕鼠 昨天晚上坐车回家的路上 看见来来往往的人流与车流 行走在高楼之间的马路上 心里当时有个触动 把自己抛离这个画面 站在一个全局的角度看 看似简单的画面 却让人感触很深 行走
  • [Windows驱动开发](一)序言

    笔者学习驱动编程是从两本书入门的 它们分别是 寒江独钓 内核安全编程 和 Windows驱动开发技术详解 两本书分别从不同的角度介绍了驱动程序的制作方法 在我理解 驱动程序可分为两类三种 第一类 传统型驱动 传统型驱动的特点就是所有的IRP
  • 解决网页不能复制或者答题不可粘贴

    F12 gt F1 gt Debugger Disable JavaScript 打勾
  • 用最简单的例子告诉你kafka是怎么用的

    1 首先打开zookeeper集群和kafka集群 三台都开上 2 创建 Kafka 主题 call 在任意几点创都可以 kafka topics sh zookeeper hadoop01 2181 topic call create r
  • Python每日练习题以及答案解析,还不进来测试一下?

    问题引入 现在有5个小朋友要分糖果 他们按照自己的编号顺序围坐在一张圆桌旁边 他们身上都有一些糖果 通过输入来决定每个小孩糖果的数量 从1号小朋友开始 将自己的糖果平均分成最多的3份 多出来的自己吃掉 自己留一份 其余两份分给他相邻的两位小
  • Python中字符串中函数rfind()用法

    Python中字符串中函数rfind 用法 1 rfind 函数概述 rfind 用来在一个字符串中查找一个字符串的最后出现时的索引位置 2 语法 str rfind substr beg 0 end len string rfind 方法
  • Jlink使用技巧之合并烧写文件

    文章目录 前言 准备 创建工程 1 打开JFlash 2 创建新工程 3 选择芯片的型号 4 打开要合并的程序文件1 bootloader hex 5 打开要合并的程序文件2 app hex 6 保存合并后的文件 注意 JLink软件的下载
  • select函数详解

    select函数的功能和调用顺序 使用select函数可以完成非阻塞方式工作的程序 它能够监视我们需要监视的文件描述符的变化情况 读写或是异常 非阻塞方式 non block 就是进程或线程执行此函数时不必非要等待事件的发生 一旦执行肯定返
  • 安装计算机一级出现appcrash,电脑appcrash的问题怎么修复

    电脑是很复杂的程序代码设计的 因而有时会遇到一些奇怪的问题 而APPCRASH错误也是其中一种 如运行程序出现APPCRASH错误 我们在日志中查看事件名称为APPCRASH 这时很多朋友不知道怎么解决 下面小编和大家一起分享下修复这个问题
  • php服务不可用,ThinkPHP/Library/Vendor/Tcpdf/fonts/uni2cid_ak12.php · 白俊遥/thinkphp-bjyadmin - Gitee.com...

    unicode to cid conversion table is from ftp ftp oreilly com pub examples nutshell cjkv adobe cid2code txt in ak12 tar Z
  • SAP与 WebService接口的配置与调用

    SAP 能通过设置WebService与外部的webservice服务连接 1 进入事务 SE80 选择 Package 指定保存的开发包 如图 创建一个Enterprise Service 2 在弹出的下一个窗口中选择 URL HTTP
  • Unity2018打包图集(SpriteAtlas)以及使用

    将编辑器中Edit ProjectSettings Edit SpritePacker Mode设置为AlwaysEnabled Assets右键Create创建SpriteAtlas 将需要打包图集的图片文件夹选中 然后点击packpre
  • C语言:二分查找(折半查找),冒泡排序

    目录 一 二分查找 二分查找的需注意的细节 二 冒泡排序 冒泡排序需注意的细节 本篇博客详细讲解常用的几个方法 分别是二分查找和冒泡排序法 一 二分查找 二分查找 意思就是每次都分为两部分 将查找的数字和中间数字相比 判断大小后确定所查找数
  • ajax 填充下拉框,使用ajax填充下拉框--普通select

    1 与普通select有区别的是另一种带分组的select 2 带分组的select见另一篇 使用ajax填充下拉框 分组select 3 两者均使用ajax填充 数据来源于后台大哥 效果如下图 html 运营商 js callBack f
  • Centos 8.0中安装Redis服务器

    企业级开发中 经常需要把一些中间件安装在Linux服务上 主要考虑到linux服务器的性能吧 1 官网下载Linux版安装包 Redis 楼主使用的是 6 2 1 目前最新是6 2 6 差别不大 2 使用XShell 和Xftp连接Cent
  • 关于C++智能指针

    普通指针到智能指针的转换 int iPtr new int 42 shared ptr
  • Android Studio中的keystore

    跟着导师第一次做一个使用人数达到4位数的软件 软件提供了更新 结果在更新的时候发现 有的人显示的是已安装了存在签名冲突的同名数据包 不能安装 查了下发现是keystore的问题 直接用apk文件夹下的debug版本的apk放在服务器给他们安
  • JVM jmap命令

    作用 主要用来生成堆dump文件 C Users qianqian gt jmap h Usage jmap option
  • 为什么虚拟现实视频看上去那么粗糙?

    分辨率 Gear VR 可以支持超高分辨率 UHD 的播放 在像素方面 UHD视频每一帧有 3840 像素宽 x 1920 像素高的大小 视频经常播放 30 帧每秒 较低的分辨率也支持高帧率 Galaxy S6 手机显然是能够轻松地播放 4