Editor’s note
随着时代的发展,人们越来越不满足于屏幕画面有限的色彩,开始研究如何让画面与现实世界更加相似。本次LiveVideoStackCon 2021上海站大会我们邀请到了快手音视频技术部的章佳杰。他以几个小故事作为引子,来分析照片无法完美重现现实世界的原因,并分享关于HDR高动态范围视频干货。
文 / 章佳杰
整理 / LiveVideoStack
我叫章佳杰,在快手做图像算法,我是程序员,同时也是摄影师。作为摄影师,我的作品登上过NASA的星空每日一图,在这里我将不止从技术的角度也会从摄影师的角度与大家分享自身感受以及在HDR技术方面的细节。
摄影是用光的艺术,风光摄影师为了完成一幅满意的作品,跋山涉水,常常会在人迹罕至的野外蹲守几天甚至几周,就为了等待一个完美光线的瞬间。我自己也有类似的经历,虽然只等待了大半天,从下午等到傍晚,可当看到一束束光从云缝中透出,洒向大地的瞬间,一片金光辉煌,整个场面使我非常震撼,留下了深刻印象。
我走过许多地方,见识过许多美景,可是大自然的奇美瑰丽往往还是超出了我的想象。这时我会庆幸自己爱好摄影,跋山涉水来到这个地方,如此美景得见一眼;可也常常懊悔自己能力不足,无法把眼前的美景完美记录下来,重新展现给别人看,给观众再现这样强烈震撼的感觉。方寸之间的数字世界实在难以完美复刻现实世界中的完美光线。
我自认是一个技术激进主义者,一直觉得赛博世界是一个很酷的概念。很多人都熟悉《黑客帝国》系列电影,这就是一个完全的赛博世界,其他很多艺术作品中也都有类似的概念,我看到了人们对赛博世界很酷的未来畅想。可是啊,当我站在湖边、雪山脚下、站在草甸花海中、站在岸边,看见朝霞、看见星光,我深深地明白,再先进的赛博世界,再厉害技术手段也无法完美复刻现实世界。
我面对美景拍下了照片,使出浑身解数加以后期制作修改美化,努力去再现大自然的美丽。我发在朋友圈也会收获许多点赞,可我知道真实的大自然远远超过了照片所能表达的内容,远远更生动鲜活。我不禁要问,照片与真实世界的差距是哪儿呢?我想与大家分享一些我自己的经历和小故事,之后再给出我的思考。
01 故事分享
1.1 莫奈 - 《睡莲》
上图的画是莫奈的《睡莲》。我喜欢莫奈的画,莫奈是印象派大师,从中学艺术史的课上大家都了解过莫奈的画,他的《睡莲》非常有名。他擅长用细碎的笔触描绘光影。莫奈画了很多系列作品,比如教堂系列、日本桥系列等,这其中我尤其喜欢睡莲系列,有的安静、有的忧郁、有的生机勃勃。我还特意买了莫奈画集册细细欣赏,对特别喜欢的几幅,甚至我有一种给我一支笔马上也可以画一幅的感觉。
后来有一次,借着论文被会议收录的机会,前往美国华盛顿开会,闲暇时间去了纽约大都会博物馆和现代艺术博物馆,在博物馆中看到几幅莫奈的画,其中就有我心心念念的睡莲系列。
那是一种无法用言语表达的震撼,原来《睡莲》的原画是如此之大,十多米宽、两米高,有一面墙那么大,让所在的会场都放不下。原来在画册上细碎笔触并不细碎,一笔一划清清楚楚。原来原画的色彩如此生动鲜亮。然而在画册上看到的色彩总觉得有些灰蒙蒙的,有前辈对我解释说莫奈晚年罹患眼疾,所以色彩调得有些朦胧,可站在原画前发现不是这样,白的耀眼、红的热烈、蓝的深沉,还有不乏纯度很高的色彩混入其中,仿佛在发光。只是原画太大,将它印刷到画册上后颜色就混在一起,让人误以为是这样的风格。我在原画面前来回走动,每一个视角都仿佛在刷新我的认知,非常震撼。我被这些生动的颜色和热情的笔触所淹没,感受着那些从未在小小画册上体会到的情绪,让我流连忘返。这是第一个故事。
1.2 蓝鲸 - 《The Blue》
第二个故事,蓝鲸。前两年,VR 技术特别火。当时我和小伙伴在美国创业,我们都是喜欢新技术的人,看见如此酷炫的新技术当然手痒,再加上和创业内容也有关系,所以我们说干就干,把我们的车库打造成了一个「VR 体验厅」。尽管已经充分了解了相关的技术和原理,但是我第一次带上 VR 头盔,也还是小小惊讶了一番,普通的屏幕无论多大还可以想象,而VR的屏幕相当于是无限大的屏幕,在上面呈现的内容也是全新的体验。我们两个都是程序员,很快就手痒做了很多程序给自己体验,比如我们写了一个无限大屏幕的代码编辑器,就不用担心一行不能超过多少字符,可以一直绕至脑后,转着圈子写代码,很好玩。我们做了许多好玩的小玩意儿,我自以为已经完全熟悉这块「无限大的画布」了,直到我体验了一个 VR 艺术作品《The Blue》。
上图播放了YouTube搬运的游戏体验。屏幕上展示的是这个玩家看到的内容。很快会看到从背后冒出一条巨大的蓝鲸,巨大这个词已经很难描述我第一眼看到时候的震撼感受了,真的很大,大到要转头才能看全。那种栩栩如生、进而产生那种强烈的压迫感真的吓了我一跳。随着蓝鲸继续往上游,它巨大的尾巴甩过来,好像真的要甩到我脸上,我明明知道这是个VR的艺术作品,但我还是下意识坐地上躲避。这就是当视角从有限的屏幕拓展到无限的屏幕时,同样的东西所带来的感觉就会完全不一样,太震撼了。
我真心体会到沉浸式到底有多美妙,是一块不断追求更大尺寸的屏幕,是一种量变引起质变的体验。当拥有一块无限大屏幕时,当你的上下、左右、前后、全方位都能提供内容时,这是怎样一种震撼,这种体验至今难忘。
1.3 李安 - 《双子杀手》
接下来是第三个故事。我挺喜欢李安导演的。虽然我并不是专业的影评人,但作为普通观众,喜欢他拍的一些电影。从《卧虎藏龙》到《少年派》,李安一直努力探索电影这个艺术形式的可能性。
在《比利林恩的中场战事》中李安尝试了高帧率拍摄的手法,我没能在电影院欣赏这部片子,后来在16寸的电脑屏幕上看,并没有给我留下深刻印象,我甚至觉得李安导演是不是翻车了。直到李安拍了下一部,《双子杀手》。
去电影院之前我就了解到这部片子采取很多新的技术,比如 120 帧, 4K分辨率,CINITY 高亮度。我也事先了解在北美市场这部片子反响并不好,想着也许他又翻车了。怀着这样的心情,我去了最高级的 CINITY 厅看电影。电影开始后我很快就震惊了,很庆幸当时买了最贵的 CINITY 厅的票。扑面而来的那种生动感受无法形容,让我羞愧于我词汇的贫乏。画面很细腻,开场场景里草地上的小草能够一根一根地被分辨出来,甚至可以看见主角脸上的皮肤纹理,纤毫毕现。
动作丝滑,没有电影感,没有 24 格常见的拖影。主角在进行搏斗时,那种拳拳到肉的力量感,直击心灵。光线非常生动,阳光下的码头,波光粼粼的海面,耀眼的光影,让人应接不暇。洞窟内主角搏斗,再也不担心以往看电影那种黑乎乎一片看不清;相反的是动作清晰,甚至可以看到主角眼神里的光。所有的这一切扑面而来,让我措手不及,甚至好几次下意识想要按下暂停键。这让我第一次在看电影的时候有一种信息量太大,处理不过来的感觉。一下子理解了这部电影在北美反响不佳的原因:整个北美很难找到一块完美的 CINITY 屏幕,能够满足 120 帧率,4K分辨率,以及高亮度。没有这些技术手段,它就是一部平平常常讲杀手故事的电影;有了这一切后,完全不一样,扑面而来的信息感让人感觉是完全不同的电影。看完之后我立刻向朋友们安利,并告知一定要去真正的 CINITY 厅看,不然看的就是垃圾,天差地别,完全不一样。
02 信息量
故事讲完,回到我们一开始讨论的问题:照片为什么无法完美复现现实的场景。照片与现实场景有什么不一样?从这几个故事中,我给出的答案是:巨大信息量上的差异。
2.1 画幅的尺寸
在睡莲故事中,由于画册的尺寸太小了,承载不了一面墙那样大的《睡莲》原画的信息量,所以感受截然不同,看到原画才知道艺术家的厉害之处。
快手做短视频,在画幅方面我们做不了太多,用户手机屏幕大小已经固定。当然了,手机屏幕越来越大是一种趋势,我们已经做好不同屏幕尺寸的适配工作。
2.2 视角大小
蓝鲸故事中,普通屏幕视角有限,无论是40寸或是100寸的电视始终是有限的。可是量变引起质变,当拥有了完全无限的屏幕,就可以达到无限制的享受。普通的屏幕承载不了《the Blue》这个VR作品中360 度环绕身体场景的信息量,也就营造不出那种强烈的压迫感,当在普通屏幕中蓝鲸尾巴拍下来时就只觉得一般了。而戴上头盔体验,临场感完全不一样。
那么,对我们的启发是什么呢?去年快手支持了 VR,用户可以转着手机看全景视频。将来更多地普及VR设备后,可以在VR中看快手,会是一种完全不同的、身临其境的感觉。
2.3 高分辨率 高帧率 高动态范围
李安的《双子杀手》,利用分辨率、高帧率、高动态范围这些加起来使得与普通3D电影完全不同,变成一个特别精彩并给人带来震撼感的故事。当观看普通的3D电影时,人们还可以意识到自己是在电影院中看电影,但在CINITY厅里看,一切就像真实的发生在眼前。
分辨率、帧率、动态范围这几项,去年快手已经支持了 1080p 高分辨率,60fps 高帧率,最后是高动态范围,正是今天我想分享的主题。
03 HDR视频
我们知道,HDR 视频有更高、更宽、更深的特点。
更高、更宽、更深是指更高的亮度和对比度、更宽广的色域、更细腻的色彩层次。
3.1 更高的动态范围
本次分享的屏幕不是HDR屏幕,而是 SDR 的屏幕,但要展示真正的效果,必须拿 HDR 的屏幕来 side by side 对比。上图效果只是一种模拟示意,HDR有更高的动态范围,亮的更亮、暗的更暗。人眼在认知物体细节的时,在意的不是绝对亮度,而是明暗对比。这一点在后续内容中会更详细说明。
3.2 更宽的色域
更宽的色域这个特性比较直白,HDR 视频能显示的颜色更多了。SDR 的标准能记录的颜色很少,离现实世界差得太远,显示不了现实世界的丰富色彩,由于历史上发光材料的限制,根据当年的技术条件规定了SDR使用的bt709这样的色域,而我们现在技术更先进了,可以显示更多的颜色,需要用更大的色域显示记录。
3.3 更深的色深
从上图对比图中可以看出,左边的图中有一条一条的banding现象。右边的图片看起来更加细腻。要更深色深的原因是色域更广,显示颜色更多,对比度更高,能显示的亮度范围更大。原先8bit 数据位数不够就必须提高数据位数。进一步理论细节会在后续内容中详细讨论。
3.4 更高、更宽、更深
HDR视频有更高、更宽、更深的特点。我们日常的科普,为什么要用 HDR视频,就会用更高、更宽、更深来解释。但这还是太粗略了,不完整。我们大家作为技术人员,在多媒体处理领域里做专业的事应该要看得更深刻。
- 更高,有多高?为什么一般说对比度 / 动态范围高,而不说亮度高?
- 更宽,有多宽?原先SDR颜色直接加饱和度行不行?
- 更深,多深才足够?8bit、10bit、12bit?
上述这些问题,有的比较 trivial,比如更宽的色域,加饱和度的结果还是在原有色域中。在色域外的颜色人眼能够看见,但SDR标准的色域表示不了,只能用更宽的色域。
而其他的大部分问题,就不是那么简单直白了。
归根到底,一个最大的根源就是——人眼(人类视觉系统)对光的响应是非线性的。我将分享人眼对光线的响应是一个怎样的过程。
首先,人眼对亮度的感知范围极大。上图是我自己拍的一个普通的的夏日室内场景,窗外是地中海风格的白墙建筑。大家有这样的经验,在屋内看到阳光直射的室外,人眼毫不费力可以同时看清。上面是模拟图,显然最亮的像素值就是 255,最暗的像素值就是 0. 但是实际的亮度呢?
那么在这个场景里,最亮和最暗的光线强度相差多少呢?
A. 1:100
B. 1:1000
C. 1:10000
答案是 1:10000,更精确的是 1:16000。这是我拍摄时直接拿相机测光表测出的。最暗的地方是沙发底下,最亮的地方是窗外阳光下的白墙,差了14档光圈,一档光圈是两倍的光线亮度,14档光圈是2的14次方,16000左右。
上图是我拍摄的原始照片数据,显示了其中连续 12档不同曝光的图像,最暗的可以看出外面的白墙可以被记录,最亮的那张可以看出沙发底下还是很黑,再过曝两档光圈,才可以拍到沙发下的细节。当时人眼感受比较接近倒数第二张和倒数第三张之间,但是窗外的白墙也可以毫不费力看清,不会像照片里这样有过曝的感觉。人眼对光线亮度的感受范围极大,可以很轻松跨4 个数量级,甚至更大。
人类视觉系统的另一个特点,对亮度的感知是非线性的。举个例子线性的意思是亮度 100 和 亮度 200 的灯泡放一起,后者比前者亮了一点,那么再放一个亮度300的灯泡,后者比前者也亮了同样的一点。实际上,做一个实验就会发现不是这样的,亮度100的灯泡放好,亮度200的放中间,另一边要放亮度400的才能视觉上看起来同样亮一点,这是非线性的。
在这个场景中,将沙发和白墙局部截出来,单独看的话人眼觉得两块区域的反差差不多,但从绝对亮度上相差非常大。因为人眼不是线性的,是按倍数关系的,上图中沙发亮暗差1:2.5倍,白墙亮暗差1:2.6倍。比率差不多,人眼就会觉得亮暗程度差不多。
04 定律
4.1 韦伯-费希纳定律
韦伯-费希纳定律表示人眼在很大的亮度范围内对光线响应是对数的。解一下方程就可知响应函数是对数的。根据实验韦伯定律在 1~1000 nit 的亮度下都符合得较好。根据定律就应该按照Log的规律记录亮度,这就是Log编码。
4.2 史蒂文斯幂律
在场景更暗的区域,人眼的视杆细胞逐渐占主导,对反差的灵敏度会减小。符合史蒂文斯幂律,解方程可看出响应函数呈指数关系。gamma 是反映灵敏度相关的指数,不同的实验条件下,gamma 多在 2~3 之间。SDR 的 ITU 标准里指定的参考 CRT 显示器特性就是 gamma = 2.4。就是参照此实验定下来的参照依据。史蒂文斯幂律是在更暗的条件下符合的规律,用此规律设计编码,可以得到gamma编码,接近于现在sRGB编码。
05 响应
5.1 线性编码灰阶响应
如果按照线性编码,1-255标,最下面行是实际亮度,从暗的黑点是0.4nit,最亮的100nit,100nit是SDR视频参考显示器的亮度。图片上端的EV是根据人眼对数特性做的标尺。如果按照线性的编码,数字大小就直接正比于亮度。可以看到上图的灰阶,会觉得不够均匀。比如从127到255跨了这么多码位,只表示了一档曝光,从127到63、63到31码位越来越少,仍然只表示一档曝光,对于暗部区域远远不够,对亮度来说表示得太细腻,不合理。
5.2 Gamma2.4 编码灰阶响应
如果按照Gamma规律设计是上图的感觉,可以发现比按照线性编码均匀很多,尤其是暗部的情况比刚才均匀很多,同样还是会发现,EV值还是略有不均匀。
最初的编码Log编码来说,不均匀情况减少很多。但在特别暗的最左端,黑的地方太长了,这表示在暗部太过细腻,有点浪费。这些实验发现不同编码方式各有各的优势和不足之处,在SDR视频的场景下Gamma编码和Log编码差别还不会很大。但这些编码都不能用在HDR视频上。有没有一些办法能够设计出一种更好的编码方式用于HDR视频呢?人们为此做了很多实验。
06 实验模型
6.1 Schreiber 实验模型
Schreiber 将数据汇总在一起,做出了他的实验模型。在上图中横坐标是以10为底的对数坐标,横坐标是0-3之间对应实际亮度是1-1000 nit,1到1000大体上是横的直线,小于1的部分是斜的直线。
从刚才的页面上我们知道,韦伯-费希纳定律意味着在双对数坐标图上是一条水平横线,而史蒂文斯幂律意味着在双对数坐标图上是一条斜线。Schreiber的实验数据正好描述了在不同范围内,人眼对光线的响应程度——亮的区域中符合韦伯-费希纳定律,在暗的区域中符合史蒂文斯幂律。
6.2 Barten感知模型
后面在此基础上做了更为复杂的Barten感知模型,更完整地描述了人眼对于不同亮度和空间的频率的响应情况。空间频率可以理解为细节程度,平坦的地方频域低,细节地方频域高。这个模型很复杂,感兴趣的话可以看一下paper原文。本次分享不考虑细节。
07 最小可感反差限
上图是把不同模型的「最小可感反差限」画到双对数坐标轴上。红色的是根据Schreiber实验数据做的简单模型,下面是Barten模型中取不同条件下的两条线,分别是ramp、flat,表示在不同条件下取的值。这个最小可感反差限这是一个强大的武器,我们可以用这个来评价编码设计好与否,看编码的效率。纵轴的Delta L可以看做是编码上变化 1 对应的真实亮度变化,只要Delta L比L的值小于这个最小可感反差限,人眼看起来就是过度平滑的。
上图是上述三种编码方式的情况。可以很明显看出蓝色的线性编码线,在亮度低的范围内,它远远大于极限,表示在比较暗的地方,编码效率远远不够,在亮的地方又太浪费了。黄色的线情况会好很多,在暗部会有一些浪费。绿色的Log编码大部分情况都利用非常好,在暗的地方有一点浪费,这符合刚才直观感受。上图右边可以看出,Log编码暗度太长,太细腻;线性编码亮度会显得太长了,就表示其亮度效率低,有些浪费。这些编码都或多或少有问题,更不用说,这只是在SDR范围内的结果,三条曲线范围都是100nit为止。而HDR 亮度远远不止100nit,很容易可以到1000 nit,如果把上面的几条曲线扩展到1000 nit范围,那么问题会更加严重,用8bit编码就远远不够了。那么如何设计HDR视频编码呢?目前比较通行的有两种方案。
HDR 视频里常用的 EOTF 函数有两种:HLG混合对数gamma和 PQ。
混合对数gamma好处是把对数编码与gamma编码相结合,在暗的地方用gamma编码,在亮的地方用对数编码,中间有过度,上图的曲线一开始是斜着的,慢慢变平,可以一直到1000nit。把这条曲线和Schreiber极限相比,暗的地方编码效率略显不够。
PQ是完完全全根据Barten模型人为设计的,它是设计出来的所以它对于最小可感反差限符合比较好,可以看到整个编码效率利用非常高,用10bit就可以从0.001nit一直到1000nit,甚至扩展到10000 nit都没有问题,全程几乎都在Schreiber极限以下。
HLG虽然在暗部略有浪费,但好处是他和现有编码体系较一致,现在SDR用的是gamma编码,切换到HLG的成本较小。如果不经过色调映射处理,直接用现有的SDR视频播放器来播放HLG的HDR视频,显示出来偏色会比较小;而PQ编码的HDR视频如果不经过色调映射处理,把它当做SDR直接去显示,偏色情况会更大。
以上讨论的是编码方式,或者说是transfer function,这才是HDR视频区别于SDR视频最关键的部分。一开头提到的更高,更宽,更深,是外在的,而真正定义一个视频是不是HDR视频,最核心的还是要看transfer function,如果是transfer function是这HLG或者PQ两种,就是HDR视频。
08 快手做了什么?
上述是技术的点,接下来我聊一聊快手做了什么?我们现在正式支持了 HDR 视频的上传、观看。观看的环节可能大家会认为没什么东西,因为很直观、直白,播放HDR视频的时候调用系统API去播放就好了,这没有值得说的地方。但其实这里面还是有很多值得说道的。
首先观众用户上传的HDR视频不是统一格式,我们在转码的环节进行统一,播放时会减少很多问题。上图中列了一些常见格式:HDR10、HLG、Dolby Vision等,还有其他标准格式,我们都在服务端转码的时候进行统一。
统一后是不是就没有问题了呢?也不是的,因为不是所有的手机都具备HDR屏幕,支持播放HDR视频,有些手机硬件无法解码HDR视频,或者手机系统根本放不了HDR,无法调用API。这就导致HDR视频传上来后,有的用户能看,有的用户看不了,这是不能接受的。
我们的做法是在转码时同时转出一份SDR版本,刚刚所说的那么多编码方式,不同的transfer function在这里就能用上了。我们把HDR视频经过色调映射,下变换成SDR,使得观看效果比较接近,除了亮度变暗了,整体色彩,对比度范围都很类似,我们将这种下变换转出的SDR称作“SDR ”,以区别于原本的SDR视频。转出的SDR 版本,就可以让不支持HDR播放的用户能够正常观看其他用户上传的HDR视频。所以现在转码环节我们转出两个版本,对于支持HDR播放的用户我们下发HDR10,不支持的下发SDR 。
好了新的问题又来了,我们设想晚上在被窝刷视频,刷着刷着突然来了HDR视频,会特别亮,就会觉得刺眼。这和系统相册场景不一样,系统相机拍摄HDR视频就一直都是HDR视频,在浏览相册的时候一直是高亮显示状态,眼睛是适应的,而我们刷短视频的时候,往往前一个是 SDR后一个是HDR,亮度变化很大,在这里就需要自适应调整。这时候没有现成系统API可以用,我们需要自己来做。怎么去调整呢?仍需要上述一些transfer function方面知识。
另外一个比较重要的环节是编辑。用户发作品时需要编辑,原始视频是HDR,编辑后还需要是HDR。如果直接按照原来的编辑流程走会有问题,尤其特效、美颜相关的,这些素材都是SDR素材,是设计师基于SDR视频来设计的,直接用在HDR视频上效果肯定不好。我们需要SDR HDR的混合编辑,这里要怎么做呢?又需要上述的transfer function的知识了。我们要根据SDR和HDR它们各自不同的transfer function转至统一空间,做好处理后重新转回HDR空间,再导出保存成HDR视频。
截止4月1日,在快手平台上,HDR视频的作品数量、作者数量、消费量都在稳步增长。从实际用户数据中可以发现目前为止能够播放HDR视频的手机数量还是少数,在消费数量中12%是真正原生播放HDR效果,剩余88%播放结果转码的是SDR 的效果。但是随着硬件器材的更新换代,越来越多的设备将支持HDR视频播放。
“你必须万分努力,才能让结果看起来毫不费力”是对我们工作的总结,几个月的研究和开发,克服了很多的困难,大家很辛苦。我们在背后默默把细节做好,让用户能够特别简单地上传HDR,而另一边观众无论使用SDR手机还是HDR手机都能顺利看到漂亮的画面,且整个过程看起来毫不费力。这背后的艰苦工作只有我们自己知道,可是看到用户的认可并喜欢HDR视频,这一切我觉得都是值得的。
09 快手的未来发展方向
我们的脚步不会停止,不只是上传和观看,还要从拍摄到编辑,整个链路全面支持 HDR。就像开头所说在人们不断追求更真实的效果,而在不断追求更大信息量的道路上,新的技术掀起了新的浪潮,而我们就是浪尖的弄潮儿。快手从 2019 年支持 60fps 高帧率,到 1080p 高分辨率,再到现在正式支持 HDR 高动态范围,我们一直走在最前沿。我们用双手抚平新技术的门槛,让更多的用户可以更早、更方便地体验新技术带来的震撼,在新时代的浪尖上,继续坚定前行。
以上就是我分享的所有内容,谢谢。