影音知识备忘录
长期挖坑更新。非专业人士,不保证科学严谨性
颜色的基本知识
颜色的物理本质是光,光的不同波长与频率决定了颜色的不同。由此又有单色和复合色之分。由单一波长的光感受到的颜色为单色。复合色则是多种光混合成的。
亮度
亮度不影响光的波长、频率。但也会影响颜色的感知,暗的橙黄被感受为褐色,而暗的黄绿被感受为橄榄绿。
亮度(luminance)又称辉度,是表示人眼对发光体或被照射物体表面的发光或反射光强度实际感受的物理量;可理解为:单位面积内看上去有多亮。亮度和光强这两个量在一般的日常用语中往往被混淆使用。在其他条件相同的情况下,个人认为二者成正比。亮度所决定的物理量是光被人眼接收的功率。
色彩三要素
- 色相,确定是哪种颜色。
- 明度
- 色度,确定颜色的纯度。
色温
色温本身的定义是:
把标准黑体加热,温度升高到一定程度时该黑体颜色开始,由深红-浅红-橙黄-白-蓝色,逐渐改变,某光源与黑体的颜色相同时,我们把黑体当时的绝对温度称为该光源的色温。
色温不是针对某个颜色的。例如,说到色温的时候,常说阳光、白炽灯、荧光灯等光源的色温,这些光源发出的是固定颜色的光。对于显示器而言,色温决定了白点。
数字图像处理
色彩的表示
RGB
红绿蓝三个数值表示颜色。
色深
表示颜色所用的比特数。8-bit使用8位表示红或绿或蓝,一个像素点,三个通道共24比特。10-bit则相应为30比特,可以表示更多的颜色。表示更多颜色是指在同一个范围内,划分更细致。全0为黑,全1为白的情况下,每个通道上,8-bit划分256个级别,10-bit则有1024个。由于gamma校正,256/1024级别不表示同等间隔的强度。
杂项
感觉详细地学习从物理实质到颜色的专业术语过于复杂,便面向问题展开。
上面的已有内容不再修改,下面的问题则来自于阅读各种内容或者实践中遇到的困惑。阅读的内容包括VCB-Studio 科普教程 3。
有限范围(limited RGB range)与全范围(full RGB range)
问题可能来自于Rec. 601,BT.601亦或称为CCIR 601。这是一个关于将交错式模拟信号编码为数字信号的标准。其中定义了对于8-bit亮度采样,16是黑色,235是白色,0、1-15、236-254和255用于其他余量和控制等用途。Cb和Cr似乎于此无关,另有不同的定义。
根据明基的文章,有限范围的绝对黑色比全范围的绝对黑色更亮,绝对白色同理更暗。从有限范围的起源看,有限范围进行了裁切,不准确的理解是0.00001尼特和0.001尼特都展示为0.001尼特,从而减少暗部的细节。电影电视的内容创作(例如蓝光盘)应该是按照有限范围进行的,从而处理一些细节,例如暗部细节。那么我认为内容创作者应该就希望画面最暗的地方只有0.001尼特,不去更低到0.00001尼特,哪怕硬件上是可以显示出来的。具体可能需要具体查看视频文件的媒体信息,大多都是有限范围。
- 强制在全范围的显示器上观看有限范围的内容,暗部被压得很厉害,暗处显示得太黑,缺少细节。可能是经过某种处理,16被按照0显示。不过fav filter、mpv、vlc等专业工具应该能正确处理转换。
- 强制在硬件是全范围的显示器上运行有限范围(例如在操作系统或者显卡驱动里进行设置),黑色会显示为深灰色。我认为软件认为要输出黑色,于是传过去的数值是16,而硬件上显示黑色是要0,所以16得到的显示效果是深灰色。
- 强制让电视(有限范围)工作在全范围,会黑的太黑。原因未知。
不用太在意这些搭配组合,关键是了解硬件是全范围还是有限范围,然后对应设置好软件。
但是,2024年的智能电视,是否还遵循这些标准呢?是全范围还是有限范围呢?有没有标准图片可以检测呢?可以使用256灰阶图片(8 bits情况)来测试。具体会发生什么暂不具体分析,但只要最后整条链路中存在有限范围的瓶颈,那么就无法完美显示所有灰阶。因为,16~235范围的整数无法无损表示256个整数的信息。至于损失了哪些信息,就先不管了,反正有损就说明是有限范围。
gamma
伽玛矫正处理的是亮度,通过非线性的运算,从而让数据尽量用于表示人眼可很好感知的差异,而不是浪费在人眼感知不到的差异上。相机记录自然界的光线时,会使用一个gamma,从而存储为相应数值。显示图像内容的时候,也会使用gamma,从文件中的数值恢复为发出的光线亮度。为了正确显示,这两处的gamma应当匹配。如果记录时的gamma和显示时的gamma(可能由操作系统和显示器,软硬件共同决定)不一样,我认为应该可以进行转换从而保证正确的显示效果。在知道自然界的亮度是经何种gamma记录下来后,可以计算出正确的亮度,然后在按照显示的gamma进行编码,发给显示器进行显示。
动态范围
直接复制过来维基百科的定义:
动态范围(英语:dynamic range)是可变化信号(例如声音或光)最大值和最小值的比值。
那么在这里,一种最大和最小的对比是最亮和最暗的对比。
白点
显示器所认为的白色。严格来讲应该是某种光源下,白色物体表现的颜色。在显示器上,它的变动会影响大部分颜色的表现,不过似乎不影响红绿蓝三原色。如果已知记录某个物体颜色时光照的白点,和另外一种光照的白点,就能计算出记录的物体在另一种光照下的颜色。白点应该在图片和视频文件配套的色域中进行了说明,然后显示器也有自己的白点,那么就能进行转换。
常用色域
以下是日常挑显示设备时,会遇到的色域
sRGB
win默认按照sRGB管理颜色。可以认为是现在(2024年)的底线,如果覆盖不了sRGB,那还是别买了。虽然不少显示器能达到90%+的sRGB色域覆盖和色域容积,既不过饱和又不低色域,但色准并不一定好,可能偏色。
Rec. 709
sRGB的出现晚于Rec. 709,但这里我以sRGB为主。二者有相同的三原色和白点,但gamma不同。
DCI-P3
DCI-P3是由美国电影行业所提出的。在其定义中,蓝色原色与Rec. 709、sRGB、Adobe RGB相同,红色、绿色和白点(6300K)都不同,所以在色域马蹄图上,他们对应不同的三角形。
Display P3
Display P3是由苹果公司开发的DCI-P3的一种变种,它的白点和gamma跟DCI-P3不一样,白点使用6500K(D65),gamma用sRGB的gamma。
响应时间
占坑。对于非游戏用途,我认为这个指标不是很重要。如果一款产品在响应时间上有明显不足,相关评测应会有提到,所以不用具体了解技术细节,有必要的话,只用将测试结果和响应时间明显偏高、拖影严重的产品数值进行对比即可,例如对比老旧的VA屏,这些确实拖影严重,在白色背景中显示黑色图片,上下滚动时可以看到明显的黑色拖影。
高动态范围(HDR)
这部分主要指的是亮度的高动态范围。这需要一整个流程,从真实世界中记录场景,存储在介质中,最后显示出来。
拍照的HDR
相机的动态范围是有限的,如果要拍好很亮的地方,暗处就拍不好,反之亦然。若超过了所允许的动态范围,色调信息会被损失。亮处过高的会像纯白色,暗处过低的会像纯黑色。但可以通过对同一个场景拍多张不同曝光程度的照片,然后合成出一张好看的照片。合成出来的,可以是HDR文件,此时思路是想要记录现实世界的真实情景,通过多重曝光让能力有限的相机记录下这些场景并完整地保存下来。但我觉得也可以保存成普通的文件,只需要像色调映射那样处理一下就好。这时思路是想要记录真实世界,通过多重曝光让相机记录下这些信息,但又没很高的要求,所以可以在保存时损失一些信息,只要能同时看清亮处和暗处就行。
HDR渲染
用来实时渲染和显示虚拟世界,避免由于有限对比度而损失细节。使用65535:1动态范围,然后可以通过色调映射在SDR显示器上显示出来。在一些老游戏(例如古剑奇谭二)中可以见到这个设置。
HDR文件
传统的文件保存的是一个相对的值,例如8-bit文件对应的0-255,是相对于设备而言,从设备的最暗到最亮。而HDR文件中存储的是与真实世界对应的亮度值,是绝对的。对于视频而言,介绍一下常用的几种格式。
HDR10
一种比较基础、使用广泛、开放的格式。不兼容SDR。具有HDR静态元数据。PQ10是不包含任何元数据的HDR10格式。它使用10 bits(根据PQ的输入来判断,应该是浮点数)
涉及到几个概念:
- 图像的传递函数是光和电之间的传递函数。这里用到的electro-optical transfer function(EOTF)将文件中的电信号转为显示出来的光信号。MDR10采用SMPTE ST 2084(PQ,perceptual quantizer,基于感知的量化器,感知量化)。PQ可以用于0.0001~10000尼特,是用于HDR的传递函数,代替SDR的gamma曲线。它可以用12 bits就可以实现视觉感知不到的色带。输入是信号的值,[0, 1]范围的浮点数。输出是显示亮度。
- HDR元数据分为静态和动态。静态元数据提供了关于整个视频的信息,包括Mastering Display Color Volume。It describes the color volume of the mastering display (i.e. the color primaries, the white point and the maximum and minimum luminance). 然后还有最大帧平均亮度级别(MaxFALL,Maximum Frame Average Light Level)和最大内容亮度级别(MaxCLL,Maximum Content Light Level)。The metadata do not describe how the HDR content should be adapted to HDR consumer displays that have lower color volume (i.e. peak brightness, contrast and color gamut) than the content. 所以播放出来效果会有损失,无法保留创作者的意图。动态元数据则针对视频的每一帧或每个场景。Dynamic metadata of Dolby Vision, HDR10+ and SMPTE ST 2094 describe what color volume transform should be applied to contents that are shown on displays that have different color volume from the mastering display. It is optimized for each scene and each display. It allows for the creative intents to be preserved even on consumer displays that have limited color volume. 至于具体怎么做,就先不关心了,认为它能很好处理(毕竟就算处理有不足,按照日常观看状态,而非挑刺的态度,真的能感知吗?)
HDR10+
它是给HDR10加上了动态元数据。EOTF、原色跟HDR10一样,采用10~16 bits。
元数据必须包含Mastering Display Color Volume Metadata,可选MaxCLL和MaxFALL。动态元数据被用于应用动态色调映射。相较于静态色调映射,动态色调映射在不同场景使用不同色调曲线,而不是整个视频统一一个曲线。
杜比视界(Dolby Vision)
关于动态元数据见上文。关于不同的配置文件,具体情况查阅具体信息。
一些杜比视界的配置文件是双层视频。具有base layer和enhancement layer。Enhancement layer分为full enhancement layer (FEL)和minimum enhancement layer (MEL)。
HLG
混合对数伽玛(Hybrid Log–Gamma)是用于HDR显示的传递函数,并兼容SDR的gamma曲线。使用Rec. 2020原色和10 bits,不使用元数据。对SDR并不是完全兼容,需要接收设备与Rec. 2020色域容器相容。我的理解是,只要接收设备知道什么是Rec. 2020,就算本身色域更低,只要能正确处理就行。不然如果硬当作较低的色域处理,就会去饱和。
显示设备的HDR
在硬件层面,只有色域、亮度的技术指标,无所谓SDR或者HDR。显示器支持HDR应是讨论软件层面的事情,显示器能够理解接收的HDR数据并根据自身显示能力显示出来。例如支持HDR10+,就是能理解并色调映射后显示出HDR10+的内容。
Tone Mapping
用来将HDR内容显示在有限动态范围的设备上,这个设备不必须是SDR设备,亮度不够高的HDR设备也需要做色调映射。它本质上是进行大幅度的对比度衰减将场景亮度变换到可以显示的范围,同时要保持图像细节与颜色等对于表现原始场景非常重要的信息。早期的色调映射采用裁剪的方法,在有限动态范围的设备上显示高动态范围图像时按照最大值、最小值进行裁剪。
有反向的色调映射,用来SDR转HDR。
MediaInfo中需要关注的信息
挖坑。哪里不会查哪里。
播放器做了哪些处理
挖坑。哪里不会查哪里。