主流3D视频编码技术

3D视频通过模拟人眼的立体视觉,使我们能够感受到深度和距离,提供了一种更加真实而富有沉浸感的视觉体验。长期以来,大量3D视频内容并没有使用专用的视频编码标准,而是使用通用的视频编码标准进行编码。主要的做法是将3D视频以SBS(side by side)的形式,把左右两个视点合并到一帧画面中,再将合并后的序列进行编码。混合编码架构作为业界主流的视频编码技术架构体系,其技术研究和标准化主要由两个国际标准组织——ISO/IEC WG11运动图像专家组MPEG和ITU-T SG16的视频编码专家组VCEG联合推动。

主流3D视频编码技术

左右视图格式(3D偏振光眼镜)、MPEG-4、MV-HEVC、H.264 MVC

各类技术优缺点

编码格式优点缺点适用场景
MV-HEVC1、质量更好,提供比264提供更高的压缩效率,适合于带宽受限环境
2、MV-HEVC设计与HEVC兼容,可在不支持的设备上降级为HEVC服务编解码过程比MVC更加复杂,需要更多计算资源1、带宽有限环境
2、网络流媒体
3、由于其多视角编码的支持,更适合专业空间视频的分发
H.264 MVC1、压缩效率相对高
2、与现有H.264兼容性好MVC编解码过程相对复杂1、3D电视广播,Bluray 3D
2、部分网络流媒体

MV-HEVC在压缩效率,高质量视频具有明显优势,同时,苹果采用行业通用的编码和文件格式存储空间视频和3D模型,不仅为其自身发展提供了更多的内容源,也促进XR行业发展。无论是华米OV还是苹果,遵从相同的内容格式,内容生态更加丰富,形成良性发展。
其中格式转换工具Spatialify已实现可以将iPhone 15 Pro/Max(或者Vision Pro)拍摄的空间视频转换成业界广泛支持的Side By Side(SBS)3D视频格式,从而在Quest 2、Quest Pro、Quest 3、Pico 4、Rokid Station等主流AR/VR设备上播放。

详细内容介绍

常用的3D视频成像技术

常用的3D视频成像技术包括全息投影,裸眼3D屏幕和立体电影显示技术等
1)全息投影。全息投影是一种先进的显示技术,它可以在空气中或透明介质上创建三维图像。这种技术基于全息学原理,通过记录和再现物体的光波干涉模式,从而形成一个看起来就像真实物体在那里一样的三维影像。不过这种显示技术碍于显示介质的发展,目前尚在实验室研究阶段,并未规模化商用。

图2 一种“伪全息”显示装置
2)裸眼3D。裸眼3D技术是一种无需佩戴3D眼镜就能看到3D效果的技术。它通常通过在显示屏上设置特殊的光栅或透镜阵列,使左眼和右眼看到的图像有微小的差异,从而产生立体效果。但是,这种技术需要专用显示屏且造价昂贵,目前普及度不高。

图3 裸眼3D技术原理图
3)立体电影。立体电影显示技术是最早,也是最常用的立体影像技术,它通过使用双色滤镜或者偏振镜片,使左眼和右眼看到的图像不同,从而产生立体效果。观看这种视频只需要佩戴特殊眼镜即可。

图4 红蓝3D图像
4)VR头显。VR头显将左右视点画面分别给到观众左右眼来呈现3D效果。Meta Oculus就是一款市面上广受欢迎的VR头显设备,很显然,Apple最近重磅推出的Vision pro也是同样的VR产品。除了全息投影技术外,其他的3D成像技术大多也都是是将左右两个视点的视频用不同的方法分别呈现在观众的左右眼中,因此3D视频可以看作是两路2D视频的合并显示。

苹果MV-HEVC

苹果提到的“空间视频”,其原理是利用人眼的左右眼视差来制造和表现“立体”效果
从视频编解码角度来看,使用MV-HEVC方案的好处是,它可以在不改变slice层以下的HEVC原有语法和解码过程下,通过layer间预测技术实现对3D和多视角视频的支持。
MV-HEVC可后向兼容和使用现有的HEVC编码器和解码器,不需要有较大的修改,仅修改high level语法即可。如果对MV-HEVC格式做了Block Level语法的修改,此时对应的便是JCT-3V制定的3D-HEVC格式,它的压缩性能要比MV-HEVC更高,会有额外的压缩性能的工具。
目前MV-HEVC和3D-HEVC的参考软件都是同一套代码,叫做HTM
MV-HEVC标准编码的3D视频右视点帧间预测的运动矢量图,通过使用了大量的视点间参考模式,充分消除了视点间的冗余信息。Apple Vision Pro搭载的芯片通过固件层优化已经实现了对MV-HEVC码流的硬解支持。业务团队可以对自研HEVC解码器引入MV-HEVC扩展解码能力支持,并将其适配ffmpeg,用户便可通过ffmpeg调用相关解码器解码MV-HEVC 3D视频流。

3D-HEVC编码结构

3D-HEVC编码结构是对HEVC的扩展,每个视点纹理及深度图编码主要采用HEVC编码框架,但在其基础上增加了一些新的编码技术,使其更有利于深度图和多视点的编码。
image.png
图中所有输入的视频图像和深度图像是同一时刻,不同拍摄位置的场景,这些图像组成一个存取层。在同一个存取层中,首先对独立视点(基准视点)编码,接着是该视点的深度图,再编码其他视点视频图像和深度图。原理上来说,每个视点的图像,包括视频图像和深度图像,均可以利用HEVC编码框架进行编码,输入的所有比特流复合形成3D比特流。
对于独立视点,利用未修正的HEVC编码结构,由于该视点的编码是独立的,不依赖于其他视点,因此其对应的比特流可以单独提取出来形成2D比特流,从而恢复出2D视频。由此可见,3D-HEVC兼容了2D视频的编解码。而其他视点和深度图采用修正的HEVC编码结构。如图中红色箭头表明可以利用视点间相似信息来去除视点间冗余,提高编码性能。
3D-HEVC在编码非独立视点时,除了使用独立视点编码所用的所有工具外,还用到了HEVC关于3D扩展的编码技术,使其更有利于多视点的编码。比如利用已编码的独立视点的信息来预测当前编码视点的信息,从而降低视点间冗余,提高编码效率。其中涉及的扩展技术主要是视差补偿预测视点间运动预测视点间冗余预测

参考链接:

https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6630053
https://developer.apple.com/videos/play/wwdc2023/10071/
https://mp.weixin.qq.com/s/RZUNiQv76mfc4zYcwJnD1w

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/704151.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot高校就业招聘系统的设计

管理员账户功能包括:系统首页,个人中心,就业咨询管理,毕业去向管理,简历管理,管理员管理,基础数据管理 辅导员账户功能包括:系统首页,个人中心,就业咨询管理…

消息队列的应用场景有哪些

通常来说,使用消息队列主要能为我们的系统带来下面三点好处: 异步处理 削峰/限流 降低系统耦合性 除了这三点之外,消息队列还有其他的一些应用场景,例如实现分布式事务、顺序保证和数据流处理。 异步处理 通过异步处理提高系…

JetLinks开源物联网平台社区版部署教程

1.上github搜素jetlinks 2.找到源代码,并且下载到本地。 3.项目下载完成之后,还需要另外下载三个核心依赖模块。在github找到jetlinks。 4.点击进去下载,下载完成之后,你会发现里面有三个文件夹是空白的,先不用理会&am…

springboot 整合redis问题,缓存击穿,穿透,雪崩,分布式锁

boot整合redis 压力测试出现失败 解决方案 排除lettuce 使用jedis <!-- 引入redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclus…

Diffusers代码学习: 文本引导深度图像生成

StableDiffusionDepth2ImgPipeline允许传递文本提示和初始图像&#xff0c;以调节新图像的生成。此外&#xff0c;还可以传递depth_map以保留图像结构。如果没有提供depth_map&#xff0c;则管道通过集成的深度估计模型自动预测深度。 # 以下代码为程序运行进行设置 import o…

【C++题解】1469. 数的统计

问题&#xff1a;1469. 数的统计 类型&#xff1a;嵌套循环 题目描述&#xff1a; 试计算在区间 1 到 n 的所有整数中&#xff0c;数字 x ( 0≤x≤9 )共出现了多少次&#xff1f; 例如&#xff0c;在 1 到 11 中&#xff0c;即在 1,2,3,4,5,6,7,8,9,10,11 中&#xff0c;数字…

20.1 JSON-JSON接口以及在Go语言中使用JSON

1. 简介 JSON即JavaScript对象表示法(JavaScript Object Notation)&#xff0c;是一种用于存储和交换数据的格式&#xff0c;是一种可供人类阅读和理解的纯文本格式。 JSON既可以键值对的形式&#xff0c;也可以数组的形式&#xff0c;表示数据。 JSON最初是JavaScript的一个…

FPGA专项课程即将开课,颁发AMD官方证书

社区成立以来&#xff0c;一直致力于为广大工程师提供优质的技术培训和资源&#xff0c;得到了众多用户的喜爱与支持。为了满足用户需求&#xff0c;我们特别推出了“基于Vitis HLS的高层次综合及图像处理开发”课程。 本次课程旨在帮助企业工程师掌握前沿的FPGA技术&#xff…

【PIXEL】2024年 Pixel 解除 4G限制

首先在谷歌商店下载 Shizuku 和 pixel IMS 两个app 然后打开shizuku &#xff0c;按照它的方法启动 推荐用adb 启动&#xff08; 电脑连手机 &#xff0c;使用Qtscrcpy最简洁&#xff09; 一条指令解决 shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.ap…

王炸! Suno史诗级更新,随便哼哼就能出一首好听的歌曲?

suno史诗级更新&#xff0c;随便哼哼就能出一首好听的歌曲&#xff1f; 就在今天&#xff0c;suno迎来史诗级更新&#xff01; 先看截图&#xff01; 来不及解释&#xff0c;我先试了一下&#xff0c;简直太牛了&#xff0c;先看看看效果&#xff0c;点开链接听歌&#xff01; …

使用Spring Boot 3实现邮箱登录/注册接口开发

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

windows环境下配置git环境变量

路由当前目录 vim 打开 .bash_profile PATH$PATH:/d/phpstudy_pro/Extensions/php/php7.4.3nts PATH$PATH:/d/phpstudy_pro/Extensions/php8/php8.2.9nts PATH$PATH:/d/phpstudy_pro/Extensions/composer2.5.8 …

进阶篇02——索引

概述 结构 B树索引 在这里推荐一个可以将个各种数据结构可视化的网站&#xff1a;数据结构可视化 哈希索引 相关的一个面试题 分类 聚集索引和二级索引&#xff08;非聚集索引&#xff09; 思考题&#xff1a;索引思考题 创建索引语法 如果一个索引关联多个字段&#xff…

链表题目之指定区间处理

前言 链表中有一些题目是需要知道并且记住对应的技巧的&#xff0c;有一些题目就是基本的链表技巧手动模拟推演注意细节等。 对于需要知道并且记住对应技巧的题目会有专门的一栏进行讲解&#xff0c;此类题目主要有&#xff1a;相交链表、环形链表、回文链表等&#xff0c;这些…

Adobe Photoshop cc快速抠图与精致抠图方法

一、背景 Photoshop cc绝对是最好用的抠图and修图软件&#xff0c;但是即使最简单的抠图&#xff0c;每次用时都忘记怎么做&#xff0c;然后再去B站搜&#xff0c;非常费时&#xff0c;下面记录一下抠图过程&#xff0c;方便查阅。 一、Adobe Photoshop快速抠图 选择——主体…

出现 Error creating bean with name xxx defined in class 的解决方法

目录 1. 问题所示2. 原理分析3. 解决方法4. Demo1. 问题所示 此类问题来自私信,本着探究问题的缘由,理性分析了下,让大家也学会分析Bug解决Bug 问题如下所示: Error creating bean with name xxx defined in class截图如下所示: 2. 原理分析 通用的原理进行分析 出现…

基于STM32和人工智能的智能家居监控系统

目录 引言环境准备智能家居监控系统基础代码实现&#xff1a;实现智能家居监控系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能家居环境监控与管理问题解决方案与优化收尾与总结 1. 引言 随着智能家居技术的发展&…

Chrome/Edge浏览器视频画中画可拉动进度条插件

目录 前言 一、Separate Window 忽略插件安装&#xff0c;直接使用 注意事项 插件缺点 1 .无置顶功能 2.保留原网页&#xff0c;但会刷新原网页 3.窗口不够美观 二、弹幕画中画播放器 三、失败的尝试 三、Potplayer播放器 总结 前言 平时看一些视频的时候&#xff…

java实现文件的压缩及解压

一、起因 开发中需要实现文件的压缩及解压功能&#xff0c;以满足某些特定场景的下的需要&#xff0c;在此说下具体实现。 二、实现 1.定义一个工具类ZipUtils,实现文件的压缩及解压&#xff0c;代码如下&#xff1a; import java.io.*; import java.nio.charset.Charset; impo…

动手学操作系统(六、获取物理内存容量)

动手学操作系统&#xff08;六、获取物理内存容量&#xff09; 在上一节中&#xff0c;我们介绍了保护模式和实模式的区别&#xff0c;保护模式的最大特点是“大”&#xff0c;“大”是指寻址空间大&#xff0c;在进入保护模式之后&#xff0c;我们还将要接触虚拟内存、内存管…