本文转载自腾讯多媒体实验室。
随着HDR(High Dynamic Range)相关技术的发展,越来越多的视频平台和设备厂商持续推动HDR内容的制作与传播。HDR可以提供更丰富的细节,更宽广的色域和更自然的色彩过渡。为呈现更高的图像品质,给体验者带来更具沉浸式的感受,腾讯多媒体实验室也对这一技术投入研究并推广落地。
本文主要介绍实验室在视频动态范围扩展这一视频增强技术方面的研究进展。在介绍相关算法的同时,文章简要分析和讨论扩展过程中需要解决的主要问题、可能的解决方案和存在的问题。
一、背景介绍
多媒体软硬件的快速发展使得广播电视和互联网平台上的视频质量变得越来越高。我们最直观的感受是,视频变得更清晰,也更真实了。但与此同时,视频的动态范围(可以简单地理解为对比度)并没有太大提升。这就造成视频画面中的像素很多,但每个像素点质量并不高,不能展现场景丰富的层次和细节。
高动态范围(High Dynamic Range,HDR)这一概念的提出,正是为了从画面动态范围这个维度,进一步提升视频质量。相对地,我们称传统视频为标准动态范围(Standard Dynamic Range,SDR)视频。
本文将从HDR相关概念开始,分析其特色和优势,并讨论从SDR过渡到HDR的过程中涉及的部分技术问题和解决思路。
二、什么是动态范围?
在详细介绍之前,我们首先需要明确动态范围到底是指什么。一般来说,动态范围是指某个观测量的最大值与最小值的比值。比如,我们观测场景中不同物体的“亮度”[1],它的最大值与最小值之比就是这个场景亮度的动态范围,或者简单地称为这个场景的动态范围。类似地,人的各种感官(视觉、听觉和痛觉等)也有可分辨的最小值和最大值,因此也有相应的动态范围。
自然场景的动态范围比较大,通常可以达到10⁹量级。人眼的动态范围也很广,一般认为至少在10⁶量级[2]。但由于采用8位整型数据记录像素值,传统数字图像和视频格式,只可以区分256个不同的亮度等级。在普通显示器上显示时,其亮度动态范围大概在10³这个量级。
因此,从动态范围的角度来看,传统的图像和视频内容与人眼所见的真实场景存在很大差距,限制了视频内容的丰富性。这也是视频看上去总是不像真实世界的一个重要原因。
三、为什么需要HDR视频格式?
传统图像和视频中的像素值都被记录为8位整型数据,这是受多方面因素共同影响的结果。从信号处理和视觉系统特性的角度来看,这主要是因为传统显示器的最大亮度不高,大致在100尼特这个量级。
在这个范围内,256个等级的量化足以使相邻亮度级之间的差异,小于人眼对亮度变化的感受阈值。增加额外的量化等级,并不能带来明显的画质提升。
而随着显示技术的发展,当下的显示器已经可以高质量地支持1000尼特的最大亮度。这时候,256级的量化方案中,相邻两个亮度级之间的差异就很容易被人眼观察到。
如图1所示,在亮度平缓过渡的灯光区域,量化间隔过大造成了“条带”现象(亮度和色彩断层),严重影响画质。
图1. 随着量化间隔的增大,图像缓慢变化的灯光区域出现“条带”现象,严重影响画面质量
为解决这个问题,HDR视频通常用至少10位的整型数据记录像素值,从而支持不少于1024个亮度级。更密集的亮度等级分布,能在很大程度上避免图像质量下降。
此外,不同于SDR视频所用的曲线,HDR视频采用PQ(Perceptual Quantizer)曲线或者HLG(Hybrid Log-Gamma)曲线压缩场景亮度。这些压缩曲线在设计时很好地考虑到了人眼对不同亮度的敏感度,更适合亮度变化范围很大的场景。
四、HDR视频的特色
除了上面提到的量化误差问题,与SDR视频相比,HDR视频还有更多优势。比如:
1. HDR视频能展现更大范围内的亮度。
一方面,这使得HDR视频可以同时记录高亮度区域和低亮度低区域的细节,从而使视频的细节更丰富。如果使用SDR视频,这些区域内的细节则会因为曝光过度或不足而丢失。
另一方面,这使得HDR视频的对比度更大,画面更富层次感。传统的SDR视频为了在有限的亮度范围内展现原始场景,通常会比较严重地压缩自然场景的亮度范围,造成视频内容的对比度明显不足。如图2所示。
图2. 与SDR视频(上)相比,HDR视频(下)具有更大的亮度范围,画面层次丰富[3]
2. HDR视频能展现更丰富的色彩
HDR视频各颜色分量的取值范围更大,从而能记录更大范围内的色彩,尤其是饱和度较大的色彩(如图3所示)。因此,HDR视频一般采用能覆盖更多色彩的Rec. 2020色彩空间。
比较直观地讲,由于采用10位整型数据,HDR视频的每个像素可以表示超过10亿种颜色。与之相比,采用8位整型数据的SDR视频中,每个像素仅仅可以表示不到两千万种颜色。HDR视频中这些丰富的色彩,可以更好地展现自然场景中更为细致的色彩变化。
图 3. Rec. 2020色彩空间比Rec. 709色彩空间包含更丰富的色彩。[4]
由于这些优势特性的存在,HDR视频呈现的画面更接近人眼观看自然场景时的情况,从而给观看者带来更接近真实的视觉体验。
五、从SDR到HDR
随着HDR相关技术的发展,越来越多的视频平台和设备厂商持续推动HDR内容的制作、传播与呈现。由于其优秀的视觉效果,HDR视频也受到越来越多用户的青睐。
同时,视频技术发展进程中积累了大量SDR视频。尤其是近几十年来,创作和记录成本的持续快速降低,导致SDR视频总量爆炸式增长。
因此,从现有的SDR视频中恢复更高动态范围和色彩广度的HDR视频的需求也持续增长。
腾讯多媒体实验室也投入了这一技术的研究和推广落地。受限于篇幅,我们主要就SDR视频恢复HDR内容的过程中需要特别关注的一些问题和技术要点,做些介绍和讨论。
为了方便理解下面的内容,我们首先来看看算法的大致流程(图4)。图中深蓝色表示算法主线。虚线所示的可选模块可以分析场景内容,动态地调整算法参数。
图4. 算法大致流程图
· 基本目标
从SDR到HDR,最主要的任务是恢复视频被压缩的动态范围,以期其有更好的对比度。于此同时,我们还有两方面期待。
1. 在亮度方面,我们希望通过SDR视频中残留的,过度曝光和曝光不足区域的信息,尽可能地恢复这些区域内丢失的细节。
2. 在色彩方面,我们希望通过SDR视频中受限的色彩,估计出原始场景的色彩,让恢复出的HDR视频的色彩尽可能地接近原始场景中丰富而真实的色彩。
当然,我们要避免引入或放大其他问题,如色彩失真、噪声、压缩失真和条带等。为了达到以上目标,我们设计了不同模块,这些模块相互配合,从SDR视频中恢复出HDR内容。下面我们就以这些模块为线索,介绍算法的设计和其中的关键问题。
· 亮度范围扩展
亮度扩展是一个相对容易理解的过程。我们的目标是从SDR视频的像素值估计出原始场景的亮度。
严格来说,这需要我们知道视频拍摄过程中,场景亮度到SDR视频像素值之间的γ映射关系,并用其逆映射恢复原始场景亮度。但实际中,这一映射通常是未知的。我们可以近似地认为这个映射是一个简单的指数映射,即我们常说的映射。由此,我们可以得到(归一化)的原始场景“亮度”。
在亮度范围扩展的过程中,我们需要特别注意两个问题。
1. 彩色视频的处理需要避免颜色失真。对人眼视觉系统的研究表明,人对色彩的感知可以近似地用Grassman’s Law来描述。这个定律保证,人眼的三色系统是一个近似线性的系统。我们在拉伸亮度的时候,需要保持RGB三个通道的比例关系基本不变。
因此,对于每个像素三个色彩分量的扩展实际只有一个自由度,由一个扩展系数控制。对于每一帧来说,我们就通过调整这个系数图来控制不同区域亮度的变化。
2. 从SDR内容中恢复的场景亮度在高亮和低亮区域是被截断了的。这些被截断的部分就包含了高亮和低亮区域丢失的信息。因此,我们不能简单地将估计出的归一化场景亮度,直接映射满目标HDR视频的亮度区间。
否则,生成的HDR视频只是一个更亮一些的SDR视频,并不具有HDR视频的优点,反而会因为平均亮度过高而观看体验不佳。
事实上,在典型的HDR视频中,每幅画面中只有很少一部分像素会达到比较高的亮度值,比如场景中的光源、反光的表面等。与SDR视频类似,场景的平均亮度应该相对稳定地维持在一个合理的值附近。
· 细节恢复
如上文所说,在SDR到HDR的转换过程中,我们需要尽量恢复或补充高亮和低亮区域的细节。单从数据上讲,这部分细节在SDR视频制作过程中已经丢失了。但我们可以利用一些先验知识,大致估计出这些区域的原始场景亮度。
我们主要需要解决两个问题。一是,如何判断哪些区域的亮度被截断了。二是,用什么算法估计这些区域的真实亮度。
1. 问题一比较简单。原图中的光源、强反光面等区域由于亮度过大被截断,深色物体或背景由于亮度不足就被淹没在噪声中。因此,我们可以简单地设置相应的阈值来检测出这些区域。
这样做的风险是,不同视频可能需要设置不同的阈值,并且固定的阈值容易造成检测结果不稳定。比如,若场景中某个区域的亮度正好在阈值附近浮动,那受此扰动,相邻两帧的检测结果就会不稳定。
幸运的是,我们分析了大量不同类型的视频,发现不同视频对应的阈值变化并不大。进一步,我们也使用软域值的方法,避免固定阈值带来的稳定性差的问题。
2. 问题二相对复杂。但我们可以利用自然图像空间相关性比较强的特性,作出比较好的估计。具体来说,如果截断处在亮度变化比较缓慢的区域,那被截断区域内的亮度可以依据区域周围的亮度变化趋势补全。如果截断区域的边界正好是亮度突变的地方,那区域内的信息则相对比较难估计,这时候只能依靠HDR图像的统计特性作出预测。
以上只是对这个问题的简单分析,在具体算法设计中,我们并不是分区域、分情况进行处理的,而是使用能够保护强边缘的非线性滤波达到类似的效果。
需要注意的是,上面讨论的方法对高亮度和低亮度区域同时适用。但在实际应用中我们发现,在不少场景中,SDR视频的低亮度区域对比度常常不足。如果不加处理,生成的HDR视频在低亮度区域的细节表现并不是很令人满意。
因此,当检测到有这种情况的时候,我们通常还会额外增强低亮度区域的对比度。原则上讲,这会损失其他亮度范围内的一部分对比度。但由于人眼视觉系统对低亮度区域更敏感,因此我们只需要很有限的额外动态范围,就可以显著提高低亮度区域的视觉效果。
在算法选择上,我们发现简单的全局增强算法,效果已经能满足大多数场景的增强需求。考虑到时域稳定性,我们采用了固定全局映射增强。这种选择还使得这个增强模块,可以和前述亮度扩展模块合并,因此不增加整个算法的复杂度。
本节讨论的问题是一个开放问题,不同算法会采取不同策略。如果存在大面积信息丢失,这些简单方法可能不足以给出很好的估计。这种情况比较适合一些基于学习的方法。这些方法可以从已知的数据集中提取有用的信息,生成丢失的细节。
但由于问题本身“无中生有”的特性,要特别注意算法稳健性。相比较而言,不依赖学习的方法更简单,性能较好,效果也比较稳定。如果SDR视频本身曝光比较正常,使用这类算法优势较大。
· 噪声和失真抑制
在大幅提高动态范围时,如果不加额外处理,就会不可避免地造成噪声和失真的放大。
其中最特殊的,是量化误差引起的条带问题(亮度和色彩的断层)。由于SDR视频采用256级量化,在其相对较小的亮度区间中,相邻两个量化级别之间的亮度变化,人眼基本不可察觉。
因此,虽然SDR视频图像中的亮度等级不是连续的,但人眼感受不到明显的间断。而在转到HDR的过程中,如果采用简单的一一映射,那么得到的仍然只有256个等级。这时候相邻量化等级之间的亮度差异更大了,很容易造成原本看上去连续变化的区域,在HDR视频中变成一个个条带。
分析清楚了成因,我们可以通过一个平滑滤波避免这个问题。但要注意的是,我们只需要在场景亮度缓慢变化的区域进行滤波。这些区域本身不含太多高频信息,低通滤波不会损失过多额外信息。
因此,我们需要准确地判断出平坦区域,尤其是在区域边界附近要十分准确。此外,原则上我们只需要沿亮度场梯度方向平滑,而且平滑半径要比较大。当然,方向性滤波复杂度会高一些,如果应用中条件不允许,在平滑区域做各向同性的滤波,也在可接受范围内。
对于压缩比较严重的视频,压缩造成的块效应也会随着动态范围的扩大被放大。对于低信噪比的视频,比如夜景视频,亮度的提升也会导致噪声被放大。因此,在转换过程中需要抑制噪声和块效应。
事实上,以上所述的噪声和失真的抑制不一定需要单独的模块来完成,在算法设计的过程中我们采用了统一的算法同时抑制这些噪声和失真。
· 色域扩展
HDR视频可以表示更丰富的色彩,与SDR视频常用的Rec. 709色彩空间相比,现行的HDR视频标准采用的Rec. 2020色彩空间覆盖整个可见色域空间中更多的色彩。在SDR转HDR的过程中,我们有两个目标:
1. 我们要保证色域转换前后的色彩一致。由于两个色域的区别仅在于基色的选取不同,因此两组色彩分量(RGB值)之间只是一个简单的线性变换关系。
需要特别注意的是,随着亮度的提升,SDR视频的量化误差被放大,从而导致颜色的偏差。这个问题在压缩率过高、饱和度过高或过低、噪声过大等情况下尤为明显。采用上文提到的噪声和失真抑制算法能有效地避免这个问题,但对于比较敏感的图像内容(如皮肤)的颜色,我们还需要额外的算法来保证颜色的准确性。
2. 在不失真的基础上,我们还应尽量恢复原始场景的真实色彩。在SDR视频中,不在Rec. 709色彩空间覆盖范围之内的颜色都被截断为其邻近的颜色。这与上文提到的细节丢失问题类似,只不过丢失的是色彩上的细节。
解决的思路也与细节补充相似,我们需要判断出哪些区域的色彩被Rec. 709色彩空间的边界截断了,然后再根据邻近区域色彩变化的趋势,适当延伸出色彩空间的边界。
算法方面,在判断出需要补充色彩细节的区域后,可以采用与细节补充模块中类似的方法。
这里还需要注意,人眼视觉系统对亮度的感知受色彩影响很大。在增强色彩的时候需要考虑到这方面影响。比如,高饱和度的色彩如果过度增强,很容易造成物体在发光的视觉效果。
· 动态亮度调整
前面几节关于算法的描述,没有涉及参数调试的问题。我们通过大量实验发现,算法所需的参数中,与视频内容相关性最高的是两个涉及亮度的参数。对于曝光正常的SDR视频来说,这两个参数的最优值相对比较稳定,可以预先设定好。
但视频中难免会出现较暗或者较亮的场景。对于这些场景,如果动态地调整这两个亮度参数,可以明显地提高所生成HDR视频的主观效果。为此,我们还额外设计了动态亮度调整算法。
算法的设计思路大致如下。对于每一个场景来说,我们希望把可用的动态范围合理地分配给原始SDR视频的各个亮度区间。如果一个亮度区间内的信息比较多,就应该适当扩大分配给这个亮度区间的动态范围,反之则减小。
具体地,我们统计了原始SDR视频的亮度分布情况,根据这个分布调整算法的两个亮度参数,以期尽量合理地分配动态范围。由于统计亮度分布不需要很高的空间分辨率,这个额外的模块可以在更大尺度下进行,因此并不需要太多计算资源。
六、效果示意
直观上,SDR视频和HDR视频的对比如图5所示。算法从SDR视频(上)恢复出HDR内容(下)。在提升动态范围的同时,还补充了过曝区域(天空)和曝光不足区域(阴影)的部分细节。整个画面细节更丰富,层次更分明。
图5. 从SDR视频(上)中恢复的HDR内容(下)画面动态范围更大、细节更丰富、更有层次感
为保证观看效果,请使用最大亮度不低于1000尼特的HDR显示器观看,并调暗环境亮度。Mac自带Safari浏览器不支持YouTube HDR视频的播放,可以使用Chrome浏览器观看,部分型号的iPhone也可以使用YouTube客户端观看HDR视频。此外,B站视频需要打开“HDR真彩”观看HDR效果。
图5视频已上传至YouTube和billibilli:
https://youtu.be/9hez3LlifGo
https://www.bilibili.com/video/BV1Jr4y1K73B
七、结语
本文从HDR技术对视频质量的提升出发,介绍了HDR视频在画面对比度、细节和色彩丰富程度等方面的优秀特性,并着重讨论了SDR视频转HDR视频过程中面对的主要问题和解决这些问题的技术方案。目前,这一技术已经应用在腾讯视频云的视频处理服务中。
腾讯多媒体实验室“智媒”平台通过搭建基于多模态(视频、图像、文本、音乐)算法的多媒体内容分析和理解框架,实现媒体标签、分类、检测、摘要、内容生产等功能。未来,我们将持续为OTT、互联网、广电等行业提供视频技术和整体解决方案。
注释:
[1] 严格来讲,应该是辐照度(irradiance),描述的是单位面积接受到的辐射通量(radiant flux),单位W/m^2,经常和强度、亮度等词混用,造成歧义。为方便理解,文中统一使用更口语化的“亮度”一次。
[2] 这里给出的动态范围并不是指自然场景能达到的最大值和最小值之比,或者人眼可感知的最大值与最小值之比,而是通常情况下单一场景内的亮度范围。人类视觉系统的工作机制十分复杂,目前也没有完全研究清楚。由于自动调节机制的存在,人类能感知的最低光强在10^-6 cd/m^2量级,而最高在10^8 cd/m^2量级。但这个最大值和最小值通常不能在单一场景中同时达到。
[3] 由于页面显示原因,文中图片仅为示意图。
[4] 图片来源AudioHolics:
https://www.audioholics.com/hdtv-formats/how-to-tell-if-4k-uhd-tv-has-hdr
作者:赵天乐
编辑:李松南 Xinya
END
备注:质量
图像增强与质量评价交流群
图像增强、去雾、去雨、图像修补、图像恢复等技术,
若已为CV君其他账号好友请直接私信。
我爱计算机视觉
微信号:aicvml
QQ群:805388940
微博知乎:@我爱计算机视觉
投稿:amos@52cv.net
网站:www.52cv.net
在看,让更多人看到