干货分享丨HDR 技术产品实践与探索
本文整理自 OPPO HDR 研发负责人熊磊,在 RTE2021 实时互联网大会上的演讲。他通过介绍 HDR 视频标准与生态、关键技术、发展方向三部分,分享了在移动端 HDR 视频的落地情况以及技术细节。
▲图:OPPO HDR 研发负责人熊磊
HDR 这个词随处可见,拍照片时可以选择 HDR,拍出来照片看起来更加清晰。看视频时可以选择 HDR 格式播放,播出的画面显示更加明亮鲜艳。打游戏的时候,选择 HDR 画质选项,游戏体感更加流畅;这些技术都可以给用户带来 HDR 的体验。那什么是 HDR 视频呢?
HDR 视频有几个特点,首先是高对比度。通常来讲,现在能看到的 HDR 视频亮度范围是 0.005-1000nit,但标准最高能到 1 万 nit,目前之所以视频内容没有这么高亮度是因为受限于屏幕的显示硬件规格。第二个是宽色域,目前看到的 HDR 视频色域基本都在 display P3 色域范围内的,标准规定是最高能到 bit20,这受限于屏幕硬件。最后是高位深,常见的 HDR 视频都是 10bit 编码,普通视频是 8bit 编码,10bit 相较于 8bit 能表示的颜色种类会更多,所以色彩之间的过渡会更加自然。
我们认为,前面看到它的这些特点,同一个画面通过 SDR 和 HDR 编码出来的图像在暗部和亮部细节的对比上有比较明显的差异,HDR 视频能保留原始画面中更多的亮部和暗部的细节,显示的效果也更加好。
在视频的拍摄和分发系统上,HDR 视频可以更多的保留原始画面颜色信息以及亮度信息,呈现给用户更好的画质感受。
见 HDR 视频标准分两大类:一类是基于 PQ 的视频标准,我们采集到的信号需要经过二次竖立,生成元数据信息,这个元数据信息在屏显端会用做亮度映射。一类是 HLG 标准,在采集时即完成了编码,不需要做二次处理,对传统视频工作流影响比较小,在显示时能动态适配屏幕亮度,因此它主要是用于直播和广播的场景。
上图是几个标准的对比,主要看一下右边三个标准。右边是常见基于 PQ 的几个标准,首先是 HDR10,在手机上 HDR10 标准是最常见的,也是在各个链路上被支持比较好的。这个标准的特点是它支持的是静态元数据,不兼容 SDR 格式,也没有产品认证和版权费用。在 HDR10 基础上,三星和杜比分别开发出 HDR10+和 dolby vision 标准,这两个标准都增加了动态元数据,同时兼容 HDR10 格式。dolby vision 分不同的 profile,它还兼容 SDR 格式。在产品方面,这两个标准都有产品认证,在有些产品上可以看到这些认证 logo。HDR10+的版权费用目前宣布是免费,dolby vision 会对终端厂商收费。
现在 HDR 视频应用主要是电影行业,让我们通过一个电影从生产到分发到消费的工作流去更好地理解 HDR 视频生态。首先生产部分电影的拍摄,特邀处理和数字合成。然后生产出来电影内容会送到处理工作室做视频编辑、颜色调校以及导演的调色,最后生成的母版会根据分发途径不同做不同的内容格式编码。这就是一个 HDR 生态的标准工作流。
而分发这部分目前主要有两大途径,一个是直播,即常见的电影电视直播,第二个是流媒体,互联网或者 OTT 服务。最后通过不同分发途径,这些视频内容分发到不同终端上,手机、机顶盒、蓝光播放器,根据这些设备支持能力来进行 HDR 视频内容的解码和回放。
上图是一个生态全景图,对于整个生态来讲包含很多厂商,我们的认知生态是以 HDR 视频标准为基础,以前面的内容生产流程为纽带,将各个厂商聚合到一起,共同创造出来 HDR 视频的消费市场。我们比较关心的是流媒体生态,包括内容生产,分发,以及芯片和设备厂商。
对于流媒体生态的内容生产,我们现在主要电影生产还是从好莱坞八大那边出来的,主要支持两个格式是 dolby vision,三星提出 HDR10+,这些年也有几家厂商支持。视频分发 HDR10 和 dolby vision 占绝大部分,HDR10+ 和 HLG 则分别有对应的厂商支持,在目前 Android 生态里面支持最多的还是 HDR10,dolby vision 由于收费的问题所以在 Android 生态里面基本上看不到内容,但是 dolby vision 在苹果生态会占据很大份额,三星的 HDR10+目前在国内没有内容,在国外有几家都是支持 10+ 格式的。
我们主要看一下手机几个主要芯片厂商,手机现在主流芯片厂商主要是四家,高通、MTK、华为和苹果。华为和苹果都是自家芯片自家用,其中华为支持 10、10+、HLG,也支持其自家的 HDR Vivid 格式。苹果主要的支持是 HDR10 和 dolby vision。高通和 MTK 现在是 Android 手机最常用的芯片厂商,我们主要是支持 10、10+和 HLG。从芯片厂商的支持我们可以看到,手机侧现在 Android 手机,特别是近几年手机大部分是支持 10、10+和 HLG 格式,苹果主要是 dolby vision。
前面看了标准和生态,接下来看一下视频标准里面几个关键的技术点。
首先是亮度,自然界的亮度和对比度范围是挺大的,左边这个图一朵花里面最亮部分可以达到 14700nits,最暗的才 188nits,这个对比度能到大概 7000:1 的样子。但人眼能接收的亮度是有限的,过于暗的光线会导致人眼看不清物体,同时,人眼还有个特性,在不同的环境光亮度下,人眼是可以自动地调整它的瞳孔大小,以便更好的观察物体。新的 HDR 标准在定义的时候就很好地利用了人眼的这些视觉特性。
视频标准里面最基础的东西是光电转换曲线。顾名思义,把光信号转换为电信号存储起来的一个过程,该过程可以从下面亮度采集和重现过程看到。摄像机将自然界光线采集下来,通过光电转换曲线进行图样编码,最后生成数字信号,也就是人们常说的 YUV 或 RGB 数据,把这些数据送到显示端之后会做反向光电转换,将它解码成光信号,最后送到屏幕上输出,这样的话就能看到视频上的内容。不同视频标准有不同的光电转换曲线,传统视频标准及 SDR 光电转换曲线用的 Gamma 曲线。
Gamma 曲线最开始是依据传统的 CRT 亮度和电压响应关系定义出来的。虽然后面 CRT 显示设备我们基本不用了,但是 Gamma 曲线仍然作为 HDR 光电曲线在整个系统当中保留了下来。随着我们显示亮度范围提升和图像编码的提升,Gamma 光电转换已经不适用于 HDR 领域光电转换,所以我们需要定义一条新的曲线。
这个是杜比早前做过的一个实验,为了定义 PQ 光电曲线的亮度范围,各种信号水平用户喜好度 0-1 万比特,用户喜好度超过 84%,因此杜比在定义 PQ 这条光电曲线的时候,将峰值亮度定义到了 1 万。这部分利用了人眼的视觉特效模型定义了光电转换曲线的形状,我们发现紫色的线是人眼视觉特效模型 Barten ramp 阈值曲线,单比特光电转换曲线位于这条曲线斜坡之上时,说明转换出来的图像可能会有量化误差。位于阈值之下的时候,编码出来的图像会平滑。一个 12 比特的 Gama 峰值量都是 1000 比特和 12 比特 PQ,峰值量是 1 万和 1000 比特,它们的曲线在 Barten ramp 这条阈值曲线上是表示成这样。Gama 在 11 比特以下大部分处于曲线之上的,因此会出现量化误差,而 PQ 两条曲线和 Barten ramp 曲线形状比较一致,而且都处于 Barten ramp 曲线之下,所以它不会出现误差,而且不同亮度下位宽利用率比较好。
我们看左边的时候,左边是 10bit 的,把右边几个曲线往右上角平移了一下。10bit,是有量化误差的,但通常视频图像在分发过程中会做二次编码,这个编码会掩盖这部分量化误差,因此我们现在 HDR 视频生态里用得最多的是 10bit 编码格式,这是利用不同亮度下的 Gama 和 PQ 码字利用率,有两点。第一点,PQ 在不同亮度下,在低亮部分它都保留一定的码字,这样的话可以更好地展示低亮部分的细节,而 Gama 则没有。另外,在 1-1000 人眼常见亮度下,PQ 的码字分辨差异比较小,编码出来的码字比较稳定。
其次是色彩,10bit 编码颜色种类更多,更宽色域能显示的颜色则更多,右边 2020 色域相比 709 大很多,尤其是绿色区域,能显示更多绿色。
最后一个技术是色调映射,现在能看到的 HDR 视频通常峰值亮度都能到 1000 比特,但显示设备没有那么高的亮度,如果我们不做任何处理直接显示内容的话,超过显示设备能力的那部分数据就会被丢失掉,因此我们在显示之前需要根据显示设备峰值亮度做色调映射,就是 tonemapping。这个 tonemapping 主要依赖于内容生产时生成的 HDR 元数据来生成这条 tonemapping 曲线。
元数据分两大类:一个是静态元数据,HDR10,主要包括内容生产时的参考显示器的亮度信息和色彩信息以及最大的帧平均亮度和最大的内容亮度。另一类是动态元数据,动态元数据是由三星和杜比分别定义的,我们有个共同特点,是逐场景变化的元数据,每一个视频帧都携带一份动态元数据。
从上面这张图可以看出,动态元数据相比静态元数据,它在生成 tonemapping 曲线时更加灵活,它的每一帧都可以生成一条独立的 tonemapping 曲线,而静态元数据,整个文件所有帧都是共用一条 tonemapping 曲线。
最后我们看一下 HDR10+标准里面的色调映射,HDR10+动态元数据中包含一部分是贝塞尔曲线的 10 个锚点,第二部分是拐点信息,第三部分是参考屏幕的峰值亮度信息。在终端屏幕上可以重新构建出一条贝塞尔曲线,这条曲线在低亮的地方是一条直线,用直线可以保留在拍摄端显示出来的阴影细节,这样的话我们在做 tonemapping 亮度和亮度之间的关系不会有改变。接着上面那部分是一条曲线,10+ 标准里面用的是贝塞尔曲线,贝塞尔曲线的特点是可以通过有限的锚点生成一条平滑的形状各异的曲线,这条曲线在制作的时候,导演可以根据自己想要的创作意图去调整这条曲线的形状,在人脸部分可以保证人脸细节,天空部分可以通过这条曲线保证天空的细节。最后是 Knee point,Knee point 是直线和曲线的连接部分,通常是希望这条直线和曲线连接部分是平滑过渡的,也就是说直线斜率和曲线在 Knee point 一点的斜率必须是一致的,这样就能避免图像在 Knee point 点左右两边出现 compressd 现象。
第一,在手机技术发展有一个普遍趋势,硬件能力的小型化和专业能力往移动端迁移,认知 HDR 技术也是遵循这个规律,所以未来首先是手机屏幕硬件发展,目前屏幕普遍支持亮度都是小于 1000 比特的,色域基本都在 DCI-P3,未来可能会出现更高亮度的屏幕以及支持更宽色域的屏幕。这样的话就能显示出更好的 HDR 效果。
第二,目前的拍摄能力向移动端演进,这个在 iPhone12 和 iPhone13 上都能看到一点趋势了,dolby vision 的拍摄到显示一整套链路的落地。
第三,未来认知图片格式可能也会有一次净化,目前的图片虽然拍照时打开 ”HDR,但本身图片格式是 8bit 的、Gamma 2.2 曲线的图像内容。图像内容实际上限制了现在手机上 SP 硬件的能力,因此未来可能会有新的 10bit HDR PQ 的照片标准或者格式出现;现在在一些相机上,像佳能,它们已经支持 10bit 的 HDRPQ 照片。有了拍摄同样也需要有显示,这个是 NETFLIX 在 XBOOK 上做的实验,将 HDR 视频外面简介画面替换成一张 HDR PQ 图片来显示,保证用户在播放视频之前看到的显示效果和视频里的显示效果是一致的,我们认为在未来这也可能会落地到移动端。这个落地有很多难点要解决,现在看到的最大难点是,在传统图像处理领域有很多图样算法,这些图样算法都是基于 8bit Gamma 值处理的,如果平移到 PQ 域的话,处理出来的图像效果和以前是不是一样的,这个是要打一个问号的。
一个音视频领域专业问答的小圈子!
加我微信 ezglumes 拉你入技术交流群
推荐阅读:
音视频开发工作经验分享 || 视频版
OpenGL ES 学习资源分享
开通专辑 | 细数那些年写过的技术文章专辑
Android NDK 免费视频在线学习!!!
你想要的音视频开发资料库来了
推荐几个堪称教科书级别的 Android 音视频入门项目
觉得不错,点个在看呗~
干货分享丨HDR 技术产品实践与探索相关推荐
- RTE2021 回顾丨HDR 技术产品实践与探索
本文整理自 OPPO HDR 研发负责人熊磊,在 RTE2021 实时互联网大会上的演讲.他通过介绍 HDR 视频标准与生态.关键技术.发展方向三部分,分享了在移动端 HDR 视频的落地情况以及技术细 ...
- 移动端 HDR 视频产品实践与探索
本文整理自 OPPO HDR 研发负责人熊磊,在 RTE2021 实时互联网大会上的演讲.他通过介绍 HDR 视频标准与生态.关键技术.发展方向三部分,分享了在移动端 HDR 视频的落地情况以及技术细 ...
- “智感超清”之HDR技术落地实践
本文由百度智能云-视频云音视频处理技术架构师--邢怀飞,在百度开发者沙龙线上分享的演讲内容整理而成. 内容从百度智能视频云的核心竞争力:"智感超清"出发,梳理了智能视频云相关的产品 ...
- android分享文件分享结果_干货分享丨DM删除归档日志文件的多种方法
上一期我们讲解了DM数据库归档日志的切换,本期我们讲解DM数据库归档日志文件的删除. 本章内容已在如下环境上测试: ①操作系统:中标麒麟7: ②数据库版本:达梦8: 相关关键字:DM数据库.归档日志文 ...
- dts数据库迁移工具_干货分享丨DM8 DTS工具使用小技巧
DTS工具的介绍 DM数据库为迁移提供了图形化工具--DTS.DTS可以从主流大型数据库迁移到DM.DM到DM.文件迁移到DM以及DM迁移到文件的功能,极大的简化了迁移操作,让数据迁移变得简单. DT ...
- 达梦数据库删除用户_干货分享丨DM8用户管理
原标题:干货分享丨DM8用户管理 用户介绍 安装创建达梦企业版数据库后,系统会默认创建四类数据库账号,分别是: SYS:达梦数据库内置管理用户,不能登录,数据库使用的大部分的数据字典和动态性能视图. ...
- 【Linux服务器开发系列】详解多线程网络编程丨百分百干货分享丨学到就是赚到
90分钟搞懂多线程网络编程模型 1. 网络编程关注的问题 2. 网络编程的几种模型reactor,one loop per thread及其变种 3. skynet,redis,nginx,memca ...
- 《K12智能批改技术的实践与探索》的整理总结--NLP自然语言处理峰会
<学习笔记><会议总结整理> 本文根据腾讯教育高级研究员-李超老师在Datafun于2021.07.10举办的自然语言处理峰会里关于<K12智能批改技术的实践与探索> ...
- 干货分享丨如何创建在线培训手册的五大步骤,附带工具推荐。
每个企业/团队都需要创建培训手册.并且需要创建多个手册来满足内部和外部培训需求. 在内部,培训手册可帮助所有员工在工作过程中保持高效和高产. 在外部,培训手册是客户教育,为用户普及产品使用过程中的方方 ...
最新文章
- 2021CCF BDCI 大数据与计算智能大赛参赛指南
- PHP 正则表达式 最后总结
- C++ Map传递参数
- Linux文件查找工具之find “大宝剑”--转载
- numpy数组如何将数组中的元素批量保留小数(或精确到指定位)?np.around()函数(与np.round()函数等价?)
- 怎样在C++Builder中创建使用DLL
- 10.13 nc:多功能网络工具
- CodeSmith和PowerDesigner的使用安装和数据库创建(原创系列教程)
- vue中如何实现全全全屏和退出全屏?
- 七月刚入职的阿里测试开发岗-高频知识整理,内附面试题答案
- UITableView的复用过程
- 爬虫:Python爬虫学习笔记之网页解析基础——爬取360导航栏目
- xv6 syscall实验
- 小米商城项目api接口编写日志
- c语言 switch case 字符串,C++ switch case详解
- 1.1 win10下wget的安装
- 多段线简化算法,看这一篇就够了
- c语言程序设计迷宫问题,C语言迷宫问题
- 【网络聊天室】——基于socket编程的TCP/UDP网络聊天服务器
- 2、bq Evaluation Software电流监测工具使用说明