最近发现我每天根本不需要和大佬们聊天了……只需要和ChatGPT聊天,就能学到很多东西。。。

今天晚上我和他讨论了整整一夜HDR问题。这里是一些聊天记录,我觉得这段对话很有价值,于是分享过来。我不得不说,跟它聊天我还是学到了超多东西。。。

注意!这篇博客是由 ChatGPT 生成的!它回答的并非完全正确,谨慎参考!

基本概念



HDR是什么?

HDR代表“高动态范围”(High Dynamic Range),是一种广泛用于图像和视频技术的术语。它涉及到增强图像和视频的动态范围,从而提高图像和视频的对比度、色彩饱和度和显示的细节。简单来说,HDR技术通过捕捉和呈现比标准显示技术更广泛的亮度和颜色范围来提高图像和视频的质量。

在HDR技术中,相对于标准技术,更多的颜色和亮度数据可以被捕捉和存储,然后通过特定的显示技术来呈现这些数据。这种技术需要支持HDR的摄像机、电视机和显示器等设备来呈现更广泛的颜色和亮度范围,同时还需要支持HDR的格式和协议来传输、存储和呈现这些数据。

file


HDR和bt2020有什么关系?

HDR(高动态范围)和BT.2020(ITU-R推荐BT.2020)是两个不同但相关的概念。

BT.2020是一种视频编解码器的规范,旨在为视频制作、存储和传输提供广泛的色域和动态范围,其中包括高动态范围技术。BT.2020规范定义了一种新的彩色空间和容器格式,其中可以使用更多的颜色和亮度数据来呈现更广泛的色域和动态范围。因此,BT.2020规范成为了实现HDR技术的重要基础。

HDR则是指一种图像和视频处理技术,它允许显示设备呈现比传统设备更广泛的亮度和颜色范围。HDR技术需要使用BT.2020规范定义的色域和容器格式来捕获、存储和传输更多的颜色和亮度数据。因此,HDR和BT.2020之间存在密切的关系,BT.2020规范提供了支持HDR技术所需的基础设施。

file


BT2020,是否对颜色深度(8bit,10bit)有要求呢?HDR,是否对颜色深度(8bit,10bit)有要求呢?

是的,BT.2020和HDR技术对颜色深度都有一定的要求。

BT.2020规范定义了广色域视频的容器格式和颜色空间,支持8位、10位和12位颜色深度。通常,为了在广色域范围内获得更细腻的颜色变化,更高的颜色深度会被优先选择,因为它可以提供更多的色彩细节。因此,BT.2020规范通常与10位颜色深度一起使用,以提供更广泛的色域和更好的色彩精度。

HDR技术也对颜色深度有一定的要求,通常需要使用10位颜色深度或更高。这是因为,HDR技术通过捕捉和呈现比传统技术更广泛的亮度和颜色范围来提高图像和视频的质量。如果使用较低的颜色深度,那么HDR技术无法捕捉到足够的颜色信息,从而无法提供更广泛的色域和更好的色彩精度。因此,HDR技术通常需要使用至少10位颜色深度。


对于BT.2020的编解码规范,它和传统的SDR编解码规范有什么区别?

BT.2020编解码规范与传统的SDR(标准动态范围)编解码规范有以下区别:

色域范围:BT.2020编解码规范定义了一种更广泛的色域范围,使视频制作者能够捕获和呈现更多的颜色和亮度数据。

动态范围:BT.2020编解码规范允许更广泛的动态范围,可以捕获和呈现比SDR编解码规范更明亮和更暗的图像。

分辨率:BT.2020编解码规范支持更高的分辨率,包括4K、8K和更高分辨率的视频。

帧率:BT.2020编解码规范支持更高的帧率,可以呈现更流畅的动画效果。

音频:BT.2020编解码规范支持更高质量的音频编码和呈现,包括立体声、多声道和空间音频。

总之,BT.2020编解码规范可以提供比传统的SDR编解码规范更广泛的颜色、亮度、分辨率、帧率和音频范围,使视频制作者能够创建更高质量、更逼真的视频和音频内容。


BT.2020和编解码器,例如:H264,HEVC,vp9,av1有什么关联?

file

BT.2020是一种视频色彩空间和容器格式的规范,而H.264、HEVC、VP9和AV1则是视频编解码器的标准。这些编解码器实现了将视频数据压缩并解压缩的功能,以便在存储和传输时占用更少的带宽和存储空间。

在视频编码时,视频数据需要转换为特定的色彩空间(如BT.601、BT.709、BT.2020)并压缩成特定的格式(如H.264、HEVC、VP9、AV1等)。这些编解码器都可以支持BT.2020规范定义的广色域视频,但需要使用特定的配置和参数来进行编码和解码。

例如,当使用H.264或HEVC编码器来压缩BT.2020规范定义的广色域视频时,需要设置编码参数以支持10位或12位的色彩深度和更广泛的色域范围。同样,当使用VP9或AV1编码器来压缩BT.2020规范定义的广色域视频时,也需要使用特定的配置和参数,以支持更广泛的色域范围和更高的色彩深度。

因此,BT.2020和视频编解码器之间的关联在于,视频数据需要转换为特定的色彩空间和容器格式,并使用特定的编解码器来压缩和解压缩数据,以便在存储和传输时占用更少的带宽和存储空间。


sRGB和RGB有什么区别和联系呢?

file

RGB(Red, Green, Blue)是一种基于三原色的颜色空间,由红、绿、蓝三个颜色分量组成,通过不同分量的组合可以表示出各种颜色。sRGB(Standard RGB)是一种标准化的RGB颜色空间,被广泛应用于电子显示器、数码相机、扫描仪等设备和应用程序中,也是互联网和数字媒体中最常用的颜色空间。

sRGB与传统RGB颜色空间相比,其主要特点在于具有一个标准化的颜色映射曲线,使得不同设备的显示效果更加统一。此外,sRGB定义了一组预定义的颜色空间的色域,这些色域涵盖了人眼可见的所有颜色,并且可通过调整亮度、对比度和饱和度等参数进行调整。

在实际应用中,如果没有特别的需求,大多数应用程序都会默认使用sRGB颜色空间来处理图像和颜色。

表达方法



我已经知道了传统SDR画面是使用RGB来描述的,也就是三个0-255的数字,或是例如 #FFFFFF 这样的六位十六进制数。这只的是8bit吗?

是的,通常情况下,传统SDR画面使用8位色深(也称为8bit色深)来描述,即每个颜色通道可以显示256个不同的亮度级别,总共可以显示16777216(256的3次方)种颜色。在RGB格式中,每个颜色通道的取值范围是0到255,所以它们被描述为三个0-255的数字或六位十六进制数(例如#FFFFFF)。而在视频编解码中,8位色深通常用于压缩和传输SDR视频。


那么对于HDR视频,当它使用 BT.2020 来描述自己的画面颜色时,使用的是什么语法呢?

对于HDR视频,当它使用BT.2020来描述自己的画面颜色时,通常使用的是PQ或HLG的电荷量传输函数(EOTF)和ST.2084或HLG的光电转换函数(OOTF)来编码和传输广色域和高动态范围的图像。这些函数可以将更宽广的颜色和亮度范围转换为数字编码,并在解码时将其还原为可视的图像。具体来说,BT.2020规范中定义了一些基于PQ和HLG的EOTF和OOTF,这些函数可以与不同的色彩空间(如BT.601、BT.709、BT.2020)和不同的编解码器(如HEVC、VP9、AV1)结合使用,以支持广色域和高动态范围的视频。


能给出我一个使用 BT.2020 描述的颜色信息的示例吗?我指的是,显卡传输给显示器的源数据。

当显卡传输给显示器的源数据采用BT.2020来描述颜色时,可以使用RGB或YCbCr编码格式。其中,RGB是一种基于原色的颜色表示方式,而YCbCr是一种亮度和色度分离的颜色表示方式。

以RGB编码为例,假设显卡输出的颜色信息为R=800、G=1200、B=1600,采用10位色深,那么在BT.2020色彩空间下,这个颜色可以表示为:

R' = R / (2^10 - 1) = 0.78 G' = G / (2^10 - 1) = 1.18 B' = B / (2^10 - 1) = 1.57

接着,根据BT.2020的RGB到XYZ的矩阵变换,可以将RGB颜色转换为XYZ颜色空间下的三个分量X、Y和Z:

X = 0.636958R' + 0.144616G' + 0.168881B' = 0.7376 Y = 0.262700R' + 0.677998G' + 0.059302B' = 0.9962 Z = 0.000000R' + 0.028072G' + 1.060985*B' = 1.2586

最后,根据BT.2020的XYZ到RGB的矩阵变换,可以将XYZ颜色空间下的颜色转换为显示器的RGB颜色:

R' = 1.716651X - 0.355670Y - 0.253366Z = 0.7868 G' = -0.666684X + 1.616481Y + 0.015769Z = 1.1848 B' = 0.017640X - 0.042770Y + 0.942103*Z = 1.5736

因此,最终输出到显示器的颜色是R'=0.7868、G'=1.1848、B'=1.5736。

file


那么对于一个很亮的白色,和一个较暗的白色,HDR BT.2020 会分别如何描述和传输呢?

在HDR BT.2020中,对于不同亮度的白色,它们在编码和传输时会使用不同的电荷(luminance)值来描述。具体来说,HDR BT.2020会使用PQ(Perceptual Quantizer)或者HLG(Hybrid Log-Gamma)等高动态范围的色彩空间来描述颜色。

以PQ色彩空间为例,它是一种非线性的色彩空间,使用了一种特殊的gamma曲线,可以在保留人眼对低亮度部分细节的敏感性的同时,扩大高亮度部分的亮度范围。在PQ色彩空间下,不同亮度的白色会使用不同的电荷值来描述。

例如,假设有两种白色,一种非常亮,另一种较暗,它们在PQ色彩空间下的电荷值可能分别为1000和500。这些值会被显卡编码并传输到HDR显示器,HDR显示器会根据这些值来调整自身的亮度,使得这些白色在显示时能够呈现出逼真的效果。因为HDR显示器能够更加精确地控制亮度,所以即使是非常亮的白色也不会出现过曝或失真的情况。


请给出一个实际的例子,关于很亮的白色、较暗的白色、很亮的灰色、较暗的灰色,在HDR BT.2020 会分别如何描述和传输。

file

在HDR BT.2020中,对于不同亮度和颜色的场景,会使用不同的电荷(luminance)值来描述和传输。以下是一些例子,展示了不同亮度和颜色的场景在HDR BT.2020下的电荷值:

很亮的白色:在PQ色彩空间下,很亮的白色可能对应的电荷值为1000。在HLG色彩空间下,相应的电荷值可能为400。

较暗的白色:在PQ色彩空间下,较暗的白色可能对应的电荷值为500。在HLG色彩空间下,相应的电荷值可能为200。

很亮的灰色:在PQ色彩空间下,很亮的灰色可能对应的电荷值为800。在HLG色彩空间下,相应的电荷值可能为320。

较暗的灰色:在PQ色彩空间下,较暗的灰色可能对应的电荷值为400。在HLG色彩空间下,相应的电荷值可能为160。

需要注意的是,这些电荷值仅仅是示例,实际的值可能会因为场景的不同而有所变化。此外,由于不同的HDR格式采用的色彩空间和电荷值的计算方式可能不同,所以实际应用中需要根据具体的情况进行调整。


在 HDR 中,纯白如何表示呢?很亮的纯白,和很暗的纯白,在表达上有什么区别呢?能否给出传递给显示器的源数据作为例子呢?

在 HDR 中,纯白的表示方式可以根据不同的 HDR 标准而有所不同,不过通常都使用了比传统 SDR 更大的亮度范围和更多的颜色深度来描述。

以 HDR10 标准为例,该标准规定了最大亮度为1000或4000 nits,纯白应当使用所有的颜色分量都取最大值的方式表示,即 R=1.0,G=1.0,B=1.0。如果使用 10 bit 的颜色深度,那么对应的源数据将是 (1023, 1023, 1023)。对于很亮的纯白和很暗的纯白,在 HDR 中的区别在于显示器的亮度范围和能力,以及视频的调色方式。如果一个显示器的最大亮度为1000 nits,那么在显示亮度为1000 nits的 HDR 视频时,这个显示器可以完全还原视频中的亮度范围和细节;而如果同样的视频在另外一个只支持最大亮度为400 nits的显示器上播放,那么就需要通过色彩映射和亮度调整等技术来将亮度范围压缩到400 nits以内,从而保留视频中的关键细节。

需要注意的是,以上只是一个简单的例子,实际的 HDR 视频中可能会有更加复杂的颜色和亮度调整,这些都取决于视频的制作和 HDR 标准的规定。


很亮的灰色和较暗的白色在HDR下是否可能表达为同一个源数据?

file

是的,很亮的灰色和较暗的白色在HDR下可能会被表达为同一个源数据,因为它们的电荷值可能非常接近。HDR BT.2020使用的是更大范围的电荷值来表达颜色和亮度,这使得它可以表达比SDR更大的亮度范围和更多的颜色信息,但是也可能导致在一些情况下,两种不同的颜色或亮度看起来非常相似,因为它们的电荷值之间的差异非常小。这也是为什么在HDR视频中,准确的色彩校准和调整至关重要,以确保画面颜色和亮度的准确呈现。


像你提到的,很亮的灰色和较暗的白色在HDR可能表达为同一个源数据。但又像你提到的,纯白应当 R=1.0,G=1.0,B=1.0。而灰色一定不会是纯白,那么很亮的灰色和较暗的白色在HDR怎么可能表达为同一个源数据呢?

我可能没有说清楚,在 HDR 中,很亮的灰色和较暗的白色可能在源数据上是相同的,但它们在显示时的表现是不同的。在 HDR 中,纯白通常表示为 R=1.0,G=1.0,B=1.0,而很亮的灰色则可能表示为 R=0.8,G=0.8,B=0.8。这是因为 HDR 可以使用比 SDR 更高的亮度范围和更广的色彩空间来表现颜色和亮度信息,因此不同亮度的白色可以在 HDR 中通过不同的亮度级别来表示。

很亮的灰色和较暗的白色在 HDR 中虽然可能对应相同的源数据值,但它们的呈现方式并不相同。这是因为在 HDR 中,每个像素的亮度值和颜色值是独立编码的,也就是说,一个像素可以同时具有很高的亮度和很低的颜色饱和度,或者很低的亮度和很高的颜色饱和度。

对于纯白色(R=1.0,G=1.0,B=1.0),其在 HDR 中的亮度值会被编码为显示器所支持的最大亮度值,因此无论在什么情况下,纯白色都应该是最亮的颜色。

而对于很亮的灰色和较暗的白色,它们的亮度值虽然相同,但它们的颜色值不同。因此,很亮的灰色和较暗的白色在 HDR 中会以不同的颜色饱和度呈现,这取决于它们的颜色分量是如何编码的。如果一个很亮的灰色的 RGB 值是 (0.9, 0.9, 0.9),那么在 HDR 中它会被编码为一个亮度很高但颜色饱和度较低的像素,而一个较暗的白色的 RGB 值是 (0.8, 0.8, 0.8),则会被编码为一个亮度较高但颜色饱和度更高的像素。

在 HDR 中,纯白的颜色通常表示为最大的亮度值,而不是最大的 RGB 分量值。因此,即使存在 “纯白但不是最亮” 的颜色,它的亮度值也应该小于最大的亮度值。


那么如何在 HDR 中表达“很暗的纯白”呢?

file

在 HDR 中,要表达“很暗的纯白”,可以使用比较低的亮度值和适当的色调来表示。例如,使用比较低的亮度值和稍微带有灰色调的纯白色来表示。这种方式可以通过降低纯白色的亮度值,使其看起来更暗,而同时又能保留它的纯白色调。在 HDR 中,由于亮度值的范围更大,因此可以使用更多的颜色和亮度值来表达不同的色彩和亮度,从而得到更加丰富的视觉效果。


我明白了。也就是说,HDR并不只是颜色+亮度这两个信息独立传递,而是一起传递的。因此并不存在“很暗的纯白”。因为如果我认为纯白是 R=1.0,G=1.0,B=1.0,它一定会被计算得到最高的亮度值。要想降低这个亮度,必须降低 RGB 的分量,变成灰色。这正确吗?

你的理解是正确的。在 HDR 中,纯白被定义为 R=1.0,G=1.0,B=1.0,而这个颜色是具有最高亮度值的。如果你希望降低这个亮度值,你需要降低 RGB 分量的值,从而传递一个灰色,而不是纯白。这也是为什么在 HDR 中,不存在“很暗的纯白”的原因。

对于 YCbCr 表达方式,是否存在一个概念,它是纯白,但是亮度不是最高,也就是“很暗的白色”呢?

是的,YCbCr 中存在一个概念叫做“超白(super white)”,它是指具有超过标准范围的亮度值的颜色。通常情况下,超白色指的是亮度范围在 100-110% 之间的颜色,因此在表示这些颜色时,需要将亮度的范围扩展到更高的范围。这意味着超白颜色将具有比标准白色更高的亮度值,但它们并不是最亮的颜色。因此,超白颜色可能是一种“很暗的白色”,即亮度不是最高的白色。

请给出一个显卡描述的“很暗的白色”输出给显示器的信息示例,使用 YCbCr 。

注意!这个ChatGPT生成的内容可能和它生成的其它内容产生了矛盾,我会在后面追问。

一个典型的描述“很暗的白色”输出给显示器的 YCbCr 信息示例如下:

Y: 16 Cb: 128 Cr: 128

其中,Y表示亮度,取值范围为 0 到 255,16 表示较暗的亮度值;Cb和Cr表示色度,取值范围为 -128 到 127,128 表示中性的颜色值。这个 YCbCr 值描述了一个很暗的白色,它的亮度较低,但是色度中性。

Cb和Cr是色度分量,它们分别代表蓝色和红色的色度信息。在YCbCr颜色空间中,亮度信息Y与色度信息Cb和Cr分离,Y表示亮度,Cb和Cr表示色度。这种分离的方式使得视频压缩和处理更加高效,因为亮度信号相对于色度信号变化比较缓慢,色度信号则变化更快。

可是你曾经提到过,在HDR中,并不存在一个概念,叫“很暗的纯白”。为何此时的结论与之前提到的结论产生了矛盾呢?

非常抱歉,我之前的回答有些混淆了概念,造成了矛盾。在 HDR 中,确实不存在一个概念叫做“很暗的纯白”,同时也不存在一个“很暗的白色”输出给显示器的信息示例。我之前的回答有误。

YCbCr 表达方式中,Y表示亮度,Cb和Cr表示色度,取值范围为 -128 到 127,128 表示中性的颜色值。在 HDR 中,如果需要表达一个较暗的颜色,可能会将亮度值 Y 设为一个较小的数值,但这并不代表这个颜色是“很暗的白色”,而只是一个较暗的颜色。对于 HDR 视频来说,它会在整个亮度范围内包含更多的细节和信息,因此不会存在“很暗的纯白”或者“很暗的白色”这样的概念。

在 YCbCr 表达方式中,如果描述一个白色,Y的取值通常应该是较高的值,例如235或者240。而如果Y的取值为16,则代表的是黑色,不是白色。因此,描述一个白色时,Y的取值较低是不正确的,这也就不存在“很暗的纯白”的概念。

显示器选购



传统 LCD 显示器、MiniLED 和 OLED显示器,哪种显示器有更好的 HDR 体验呢?

file

传统 LCD 显示器、MiniLED 和 OLED 显示器都可以提供 HDR 体验,但它们有各自的优缺点。

传统 LCD 显示器使用 LED 背光源,通过液晶屏幕控制光的透过程度来显示图像。传统 LCD 显示器的优点是价格相对较低,可以达到很高的亮度和色彩饱和度。然而,它们的局部对比度和黑色水平相对较低,可能会在暗部细节上受限。

MiniLED 显示器是一种新型的显示技术,它使用数千个小型 LED 灯来提供背光。这使得 MiniLED 显示器可以实现更高的对比度和更深的黑色水平,因此在 HDR 图像中能够呈现更多的细节。但是,MiniLED 显示器通常比传统 LCD 显示器价格更高。

OLED 显示器使用有机发光二极管来显示图像。由于每个像素都可以独立控制,OLED 显示器可以提供非常高的对比度和黑色水平。此外,它们能够提供更广的颜色范围和更快的响应时间。但是,OLED 显示器的寿命可能比传统 LCD 显示器更短,并且容易出现“烧屏”现象。

因此,要选择哪种显示器作为最佳 HDR 体验,需要考虑自己的需求和预算。如果对黑色水平和局部对比度有较高的要求,可以选择 MiniLED 或 OLED 显示器。如果预算有限,传统 LCD 显示器也可以提供很好的 HDR 体验。


有没有 10bit 色深的 SDR 显示器呢?

file

是的,现在市面上已经有一些 10bit 色深的 SDR 显示器了,不过它们相对较为罕见,并且价格一般较高。这些显示器通常采用广色域技术,能够显示更丰富、更准确的颜色,这对于一些专业领域的应用比如图形设计、影视后期等来说非常重要。但对于普通用户来说,一般的 8bit 色深的 SDR 显示器已经可以满足大多数的需求了。


那么我不理解,就像你说的,传统SDR画面是使用RGB来描述的,也就是三个0-255的数字,或是例如 #FFFFFF 这样的六位十六进制数,而这就像你说的,指的正是8bit。而既然SDR显示器接受的是8bit色深,怎么可能像你说的,存在 10bit 色深的 SDR 显示器呢?

您的疑惑是有道理的。SDR显示器一般都是8位的,即每个颜色通道只有256个取值范围,共计16777216种颜色。如果显卡输出的颜色深度超过8位,那么在将其传递给8位SDR显示器时,需要进行一些处理。这种处理方式称为“dithering”(抖动),它会将高位的颜色信息通过一些算法映射到8位的颜色空间内,以尽可能地还原原始颜色信息。虽然这种方式无法完全还原高位颜色信息,但在一定程度上可以提高图像的细节表现力和渐变过渡的平滑度。但需要注意的是,dithering 的效果取决于算法和硬件质量等因素,可能会在一些情况下产生一些视觉上的不良影响。


我明白了。你指的是,如果我们要将 10bit 色深的数据展示给 10bit 的SDR显示器,受限于我们只能传递 8位 的颜色深度,因此我们只能在时间上进行抖动,进而产生模拟10bit的效果。我的解释对吗?

是的,您的理解是正确的。为了展示 10bit 色深的数据,如果仅有 8bit 的传输通道,则可以通过时间上的抖动,也就是将相邻的像素颜色略微调整,以模拟出更高的色彩深度。这种技术被称为“时域量化”,它可以提供更平滑的颜色过渡和更精细的颜色细节,但它仍然受到 8bit 色深限制。


假如一台高端SDR显示器,它成功设计实现了极限亮度做的很高,暗部亮度很低,并且实现了 10bit,那么它的体验和HDR有什么区别呢?

如果一台 SDR 显示器能够具有更高的亮度范围和更深的黑色水平,并且能够显示非常明亮和非常暗的区域,同时保持细节和清晰度,那么它与 HDR 显示器在显示这些内容时的差异可能不太明显。

然而,即使如此,它们之间仍然存在一些重要的区别。首先,HDR 显示器支持更广阔的色域范围,包括更多的颜色和更高的饱和度,因此能够呈现更加逼真和生动的图像。

其次,HDR 显示器使用的是专门为 HDR 设计的色调映射算法,以确保图像在显示时能够充分利用其亮度范围,并保持细节和平滑度。这种算法通常比 SDR 显示器使用的标准色调映射算法更加复杂和精细,能够提供更高质量的图像表现。

另外,许多 HDR 显示器还支持局部调光技术,能够对屏幕不同区域的亮度进行独立控制,以进一步提高图像的对比度和动态范围。

因此,尽管 SDR 显示器可能能够显示类似于 HDR 显示器的图像,但是在支持的色域范围、色调映射算法和局部调光技术等方面仍然存在明显的差异。要获得完整的 HDR 体验,需要选择支持 HDR 标准的显示器和内容。


现在如果需要得到一些基础 HDR 体验,我相信最需要做的事情就是购买一台 HDR 显示器。如何选择呢?

当选择 HDR 显示器时,面板类型和显示原理都是需要考虑的因素,因为它们会直接影响到图像质量和观看体验。以下是一些面板类型和显示原理的推荐:

  • OLED 面板:这种面板能够提供出色的黑色水平和对比度,这对于 HDR 内容非常重要。同时,OLED 显示器还能够提供非常准确的颜色和广阔的视角。
  • Mini LED 面板:这种面板使用更小的 LED 灯来提供更高的亮度和更好的对比度,这使得它们能够显示更逼真的 HDR 内容。这种面板的缺点是价格相对较高。
  • VA 面板:这种面板能够提供出色的对比度和黑色水平,但是颜色准确性和视角可能不如其他面板类型。VA 面板价格相对较低,是比较实惠的选择。
  • IPS 面板:这种面板能够提供良好的颜色准确性和广阔的视角,但是对比度和黑色水平可能不如其他面板类型。IPS 面板价格相对较低,是比较实惠的选择。

在选择显示器时,还需要考虑显示器的色域范围、刷新率、极限亮度、分辨率等因素,以确保其能够提供最佳的 HDR 体验。

SDR与HDR转换



如果我在8Bit SDR显示器上播放HDR视频,会有什么结果呢?显卡将会把何种数据传输给显示器呢?是否一定要传输8bit颜色呢?是否可以传递10Bit颜色呢?是否可以传递亮度信息呢?

如果你在8Bit SDR显示器上播放HDR视频,那么通常情况下显卡会将HDR视频的编码转换为SDR编码,然后再传输给显示器。这个过程中,将会出现颜色信息的丢失和压缩,同时亮度范围也会缩小,因为8Bit SDR显示器的亮度范围和颜色深度都比HDR要小。因此,播放HDR视频在8Bit SDR显示器上可能会失去一些细节和色彩层次,画面看起来可能会有一些不自然的色彩偏差和失真。

在这种情况下,显卡通常会将HDR视频的颜色信息转换为8位颜色信息,因为8Bit SDR显示器不支持10位颜色深度。同时,显卡也会将HDR视频的亮度范围转换为8Bit SDR显示器所支持的范围,这可能会导致亮部和暗部细节的丢失。

总之,虽然在8Bit SDR显示器上播放HDR视频是可能的,但是画面质量可能会受到限制,无法充分发挥HDR的优势。如果想要获得最佳的HDR画面效果,还需要使用支持HDR显示的设备和软件,并确保所有环节都进行了正确的色彩校准和调整。

file


如何使用 ffmpeg 将 HDR 视频编码为 SDR 呢?又如何将 SDR 视频编码为 HDR 呢?

要将 HDR 视频编码为 SDR,可以使用以下 ffmpeg 命令:

ffmpeg -i input.hdr -vf zscale=t=linear:npl=100,format=yuv420p -c:v libx265 -crf 18 -preset slow -c:a copy output.mp4

该命令将 HDR 输入文件 input.hdr 转换为 SDR 输出文件 output.mp4。其中,-vf 参数使用了 zscale 滤镜进行颜色空间转换和色彩压缩,-c:v 参数使用了 libx265 编码器进行视频压缩,-crf 参数设置了视频质量,-preset 参数设置了编码速度,-c:a copy 参数复制了输入文件的音频流。

要将 SDR 视频编码为 HDR,需要进行色彩映射和扩展亮度范围的操作。这个过程比较复杂,需要对视频进行分析和处理。ffmpeg 目前还没有原生支持 SDR 转 HDR 的功能。一些第三方软件和库,如 HDRTools、NeroVision、VapourSynth 等,提供了 SDR 转 HDR 的功能,可以在 ffmpeg 中使用。


你已经为我解释了如何在 SDR 显示器上播放 HDR 视频,就像你说的,这需要将 HDR 视频进行压缩。那么如果我要在 HDR 显示器上播放 SDR 视频,是否可以有更好的明暗体验呢?

在 HDR 显示器上播放 SDR 视频,由于 SDR 视频的亮度范围相对较窄,因此无法展现 HDR 显示器的高动态范围,从而无法获得更好的明暗体验。在这种情况下,通常会使用一些算法对 SDR 视频进行转换,以便更好地适应 HDR 显示器的特性。这种算法被称为 SDR-to-HDR 转换,可以使用一些技术来扩展亮度范围和颜色范围,以提供更好的视觉体验。但需要注意的是,这种转换并不能将 SDR 视频转换为真正的 HDR 视频,因为它无法添加真正的高动态范围信息。


你提到的 “SDR-to-HDR 转换” 中,是否涉及了 8bit 色深 向 10bit 色深的转换?如果存在,那么转换后的内容是 8bit 还是 10bit 呢?

在 SDR-to-HDR 转换过程中,可能会涉及将 8bit 色深的视频转换为 10bit 色深的 HDR 视频,以获得更好的明暗细节。在这种情况下,转换后的内容将是 10bit 色深的。这种转换可能会使用插值和映射等技术来增加图像数据的细节和动态范围,从而提高图像的质量。


就像你提到的,HDR信号包含了亮度信息。而你提到的 “SDR-to-HDR 转换” 中,亮度信息从何而来呢?

在 SDR-to-HDR 转换中,亮度信息是通过算法估算和映射得到的。具体来说,这种算法通常使用从视频源中提取的亮度信息和局部对比度来计算 HDR 映射函数,以将 SDR 视频映射到 HDR 显示器的高动态范围。这种映射函数可以将 SDR 视频中的亮度值映射到 HDR 显示器的亮度范围内,并增强图像的对比度和色彩饱和度。因此,虽然 SDR 视频本身没有包含亮度信息,但是通过算法映射可以实现 SDR 视频到 HDR 显示器的转换。


所以即使我们播放的是 SDR 视频,只要显示器支持 HDR,就仍然可以体验到更强的亮度对比度和色彩饱和度,并且最终传输给显卡 BT.2020 信号,而不是视频本身的 RGB。我的说法对吗?

是的,您理解的很对。如果您的显示器支持HDR,即使播放的是SDR视频,也可以通过显卡将SDR转换为HDR信号,并使用BT.2020颜色编码来提供更强的亮度、对比度和色彩饱和度。这种转换将会在发送到显示器之前进行,因此最终传输到显示器的信号将是HDR信号,而不是原始的SDR信号。

刷新率



HDR 和刷新率之间是否有关联呢?

HDR和刷新率之间没有直接的关联,它们是两个不同的概念。

HDR是一种显示技术,它可以增加显示器的亮度和对比度范围,提供更加生动逼真的颜色和明暗细节,以获得更好的视觉体验。

刷新率则是指显示器每秒刷新屏幕的次数,通常以赫兹(Hz)为单位表示。高刷新率可以提供更加平滑的图像和更少的图像撕裂,但并不影响颜色和对比度的表现。

但是,在某些情况下,刷新率和HDR可能会相关。例如,要在电视上观看HDR内容,必须使用高带宽HDMI端口,这可能需要将刷新率设置为较低的水平(如30Hz),以便支持更高的分辨率和更高的色彩深度。但这并不是因为HDR本身需要低刷新率,而是因为当前的HDMI规范限制了HDR和高刷新率同时使用。

Windows 体验



如果我使用的是 Windows 操作系统,我如何查询到当前 HDR 显示器支持的最大亮度值呢?

在 Windows 操作系统中,您可以按照以下步骤查询当前 HDR 显示器支持的最大亮度值:

  • 打开 Windows 设置,单击 “系统”。
  • 在左侧菜单中,单击 “显示”。
  • 滚动到页面底部,单击 “高级显示设置”。
  • 滚动到 “HDR 和 WCG” 部分,在其中找到您的 HDR 显示器。
  • 单击 “HDR 和 WCG” 部分下的 “Windows HD 色彩显示器校准”。
  • 在打开的窗口中,单击 “开始校准”。
  • 在下一个窗口中,单击 “下一步”。
  • 在下一个窗口中,您会看到一个滑块,您可以通过滑动该滑块来调整亮度,以达到最佳效果。
  • 在滑块上方,您将看到当前亮度的值,这是您的 HDR 显示器支持的最大亮度值。

请注意,此方法可能因不同版本的 Windows 操作系统而有所不同。


当我打开一个纯白的SDR应用,例如记事本,它会如何让显示器渲染呢?此时是否需要进行你提到的 “SDR-to-HDR 转换”呢?如果需要,如何决策记事本的亮度呢?

如果您使用 Windows 操作系统连接了 HDR1000 显示器并打开一个纯白的 SDR 应用,例如记事本,在这种情况下,您的计算机将根据系统设置和显卡驱动程序进行 SDR 到 HDR 的转换。

具体来说,如果您的 Windows 系统已经启用了 HDR 模式,您打开的 SDR 应用程序将自动进行 SDR-to-HDR 转换,以显示在 HDR 显示器上。这种转换将使用 Windows 的“HDR视频处理管道”来实现。转换后的图像将基于您的系统设置和显卡驱动程序来决定亮度和色彩的呈现方式。

file

在这种情况下,纯白的SDR应用程序将被映射到 HDR 显示器的最大亮度值,即 HDR1000。这通常会产生过度的亮度和破坏性的眩光效果,因此您可能需要在显示器上手动调整亮度以获得更好的显示效果。


我是否可以通过修改 Windows 上的设置,使得纯白的 SDR 应用不会被映射到 HDR 显示器的最大值以避免您提到的过度的亮度和破坏性的眩光效果呢?

是的,您可以通过 Windows 显示设置中的 "Windows HD Color settings"(Windows HD 色彩设置)中的 "SDR content appearance"(SDR 内容外观)选项来控制如何显示 SDR 内容。这个选项允许您选择一个 "Windows HD Color compatible"(Windows HD 色彩兼容)模式,这样就会将 SDR 内容映射到显示器的 SDR 范围内,而不是映射到 HDR 范围内。如果您选择了这个选项,那么您的 SDR 应用就不会被映射到 HDR 显示器的最大值,从而避免了过度亮度和眩光的问题。

在 Windows 10 操作系统中,你可以按照以下步骤找到这个选项:

  • 点击 Windows 按钮,选择“设置”(齿轮图标)。
  • 点击“系统”。
  • 选择“显示”选项卡。
  • 在“Windows HD Color”下找到“SDR内容”选项。
  • 拖拽“SDR内容亮度”的选择条

file

调整此选项后,纯白的 SDR 应用程序将不会被映射到 HDR 显示器的最大亮度值,以避免过度亮度和破坏性的眩光效果。


如果我需要观看 SDR 内容,那么我是否有必要将 Windows 的显示设置由HDR修改为SDR?

注意!这个ChatGPT生成的内容可能和它生成的其它内容产生了矛盾,我会在后面追问。

如果您需要观看SDR内容,那么将Windows显示设置从HDR更改为SDR通常是一个好主意。如果您在HDR设置下观看SDR内容,可能会导致图像过于明亮或颜色过于饱和,从而使图像不够真实。

将Windows显示设置从HDR更改为SDR可以更好地适应SDR内容,使其看起来更加自然。您可以在Windows设置中更改显示设置,将其从HDR模式切换到SDR模式。在大多数情况下,您需要在Windows设置中选择“SDR”选项,然后重新启动应用程序以使更改生效。


但是您刚刚提及了,即使观看 SDR内容,使用 SDR-to-HDR 转换,应该仍然可以体验到更强的亮度对比度和色彩饱和度才对呀?

抱歉,我的回答有误。您所说的是正确的。在使用 SDR-to-HDR 转换技术的情况下,即使您观看 SDR 内容时使用 HDR 模式,也可以通过算法映射实现更强的亮度对比度和色彩饱和度。这是因为 SDR-to-HDR 转换技术可以通过将 SDR 视频映射到 HDR 显示器的亮度范围内,并增强图像的对比度和色彩饱和度来实现这一点。

因此,如果您选择在 Windows 显示设置中将模式设置为 HDR,并观看 SDR 视频时使用 SDR-to-HDR 转换技术,您可能会发现图像比在 SDR 模式下观看更加令人印象深刻。然而,这也取决于您的个人喜好和观看体验。

正确的答案因人而异,因为观看 SDR 内容时是否应该将 Windows 显示设置由 HDR 修改为 SDR 取决于个人喜好和观看体验。如果您更喜欢忠实地呈现 SDR 视频内容,那么将 Windows 显示设置修改为 SDR 可能是更好的选择。但是,如果您更喜欢更高的亮度对比度和色彩饱和度,并且正在使用 SDR-to-HDR 转换技术,那么使用 HDR 模式可能更适合您的需求。

图片体验



我已经理解了如何判断一个视频是否是HDR编码的,就像你提到的,查看它的编解码规范是否是 BT.2020。那么对于图片,我如何判断呢?

对于图片,我们可以通过查看其元数据来判断其是否是 HDR 图片。元数据是指图片中包含的关于图片的信息,比如图片的拍摄时间、地点、相机型号等等。对于 HDR 图片,它们通常包含有关于它们的色彩空间、亮度范围和色深等信息的元数据。具体而言,我们可以查看以下几个元数据字段:

  • ColorSpace:HDR 图片通常使用 BT.2020 或者 P3 色彩空间。
  • BitsPerSample:HDR 图片通常使用 10、12 或 16 位的色深,而不是传统的 8 位。
  • TransferFunction:HDR 图片使用的是不同于传统 SDR 图片的 gamma 或者对数伽马等非线性的色彩转换函数。
  • LightLevel 或者 MaxFALL/MaxCLL:HDR 图片中包含了有关于其亮度范围的元数据信息,例如在 LightLevel 中记录了亮度的最大值和最小值。

通过查看这些元数据信息,我们可以较为准确地判断一个图片是否是 HDR 图片。


我如何查看上述源数据呢?HDR图片是否也会采用传统的 jpg\png\bmp 来作为扩展名呢?

HDR 图片可以使用多种格式来保存,例如 OpenEXR、TIFF、PNG、JPEG XL 等格式都支持 HDR 图像。其中,OpenEXR 是一种广泛使用的开放格式,适用于保存高动态范围的图像。其他格式如 TIFF、PNG 也可以保存 HDR 图像,但通常不如 OpenEXR 支持得好。

在 Windows 操作系统中,您可以使用一些图像处理软件如 Photoshop、GIMP、Lightroom 等来打开 HDR 图片。当您打开 HDR 图片时,这些软件通常会在界面上指示该图片是一个 HDR 图像,并提供相应的 HDR 图像处理选项。


如果我使用画图(mspaint)编辑这种图片(据我所知,画图是基于 RGB 的)那么会发生什么呢?

file

如果你使用画图编辑HDR图片,那么编辑器会自动将图片转换为SDR格式,因为画图是基于RGB的,它不支持HDR格式。这意味着,当你打开HDR图片时,它会在转换为SDR格式之前显示在画图中,因此你不能看到HDR效果。当你保存图片时,它将被保存为SDR格式。因此,如果你要编辑HDR图片,你需要使用支持HDR格式的专业图像编辑软件。


在我使用专业的支持HDR格式的专业图像编辑软件编辑HDR图片时,我如何在图片上绘制 HDR 色彩呢?例如,我想绘制一个很亮的白和很暗的白。

file

在专业的支持HDR格式的图像编辑软件中,通常可以直接使用HDR颜色空间来进行绘制。在这种情况下,您可以在HDR色彩范围内选择颜色,以绘制很亮或很暗的纯白色。

通常情况下,绘制纯白色的最大值是10000或4000,这取决于您的HDR显示器的亮度设置。要绘制很暗的纯白色,您可以选择HDR颜色空间中的较低值。

在专业的HDR图像编辑软件中,通常会提供针对HDR图像进行编辑的特定工具,例如可以在HDR颜色空间下进行色彩调整、明暗度调整等。如果您需要在SDR显示器上查看编辑后的HDR图像,通常可以通过软件提供的转换功能将其转换为SDR颜色空间。

其它显示其概念



我还听到了一些概念,例如 HDR400,HDR600,HDR1000,HDR10。它们是什么?有什么区别和联系呢?哪种更具有优势呢?

注意!这个ChatGPT生成的内容可能和它生成的其它内容产生了矛盾,我会在后面追问。

HDR400、HDR600、HDR1000这些数字表示的是HDR显示器的亮度值范围,通常这些数字代表了其最大亮度的数值,比如HDR400的最大亮度为400 nits,HDR600为600 nits,HDR1000为1000 nits,其中nit是用于表示亮度的单位。不同的HDR显示器最大亮度不同,HDR1000的显示器亮度范围更高,因此能够呈现更多的细节和色彩。

另外,HDR10是一种广泛使用的HDR格式,它定义了视频和图像的颜色、亮度等元数据。HDR10要求显示器支持至少1000 nits的亮度,并且能够呈现出更多的颜色和亮度细节。

总的来说,HDR1000的显示器能够呈现更广泛的亮度范围和更丰富的色彩细节,因此可以提供更出色的HDR体验。但是对于一般用户而言,HDR400或HDR600的显示器可能已经足够满足日常使用需求,而且价格更为实惠。


那么 HDR10 和 HDR1000 有什么区别和联系呢?

HDR10 和 HDR1000 是两个不同的概念,没有可比性。

HDR10 是一种视频内容的 HDR 格式,它支持最大亮度为 1000 尼特,并使用 10 位色深(每个颜色通道使用 1024 个级别来表示颜色)。 HDR10 是业界广泛支持的 HDR 标准之一,因为它是目前所有 HDR 格式中唯一不需要专利许可的格式,因此可以被广泛使用。

而 HDR1000 是一种显示器的 HDR 显示能力的指标,表示显示器支持的最大亮度为 1000 尼特。这是一种比较高的亮度水平,可以提供更加逼真的高光细节和明亮的色彩。

因此,HDR10 和 HDR1000 的概念不同,没有直接的比较。但是,对于消费者来说,购买支持 HDR10 视频内容和 HDR1000 显示能力的产品可以提供更加逼真和生动的图像和视频体验。虽然HDR10和HDR1000都涉及HDR技术,但它们并不是互相等价的。HDR10是一种视频格式,其支持HDR技术,可以提供比SDR更广泛的动态范围和更丰富的颜色。而HDR1000是指支持最大亮度为1000尼特的HDR显示器,它是一种硬件规格。因此,如果显示器支持HDR10,那么它支持播放HDR视频,但它并不一定满足HDR1000的硬件规格。如果要确保显示器符合HDR1000标准,需要查看显示器的具体规格和技术参数。


你刚刚不是说,“HDR10要求显示器支持至少1000 nits的亮度”,这是否和上面的结论矛盾呢?

很抱歉,我的回答有误,造成了矛盾。实际上,HDR10 要求显示器支持至少 1000 nits 的亮度,但并不要求显示器的最大亮度值必须是 1000 nits,因此支持 HDR10 的显示器并不一定满足 HDR1000 的要求。HDR1000 是指显示器的最大亮度达到或超过 1000 nits,因此它可以认为是一种比 HDR10 更高规格的 HDR。


像你说的,HDR400要求显示器最大能够支持400nits的亮度。那么我使用 HDR400的显示器,观看一段视频,其视频的细节都表现在了高亮度的区域,也就是 500nits 到550nits 之间,那么我观看这段视频是否会损失一些细节呢?

如果您使用HDR400的显示器,观看的视频中存在高于400 nits的亮度范围,那么这些细节将被映射到400 nits的范围内。这种映射通常是通过动态色彩映射(Dynamic Color Mapping)实现的,也就是在显示器上动态调整亮度和色彩以保留尽可能多的细节。但是,映射过程中仍然可能会损失一些细节,因为400 nits的亮度范围相对于更高的亮度范围来说是有限的,因此显示器可能无法完全还原原始图像中的细节。

HDR 软件开发



普通的桌面软件,例如:Office,是否有必要为 HDR 内容做适配呢?还是只需要专注于展示 RGB 内容即可?

普通的桌面软件如Office并不需要专门为HDR内容做适配,因为它们的主要功能是展示RGB颜色空间的内容,而不是处理HDR颜色空间的内容。普通的桌面软件通常使用sRGB颜色空间来显示颜色,而sRGB的亮度范围与HDR有所不同,因此即使在HDR显示器上显示普通桌面软件的内容,也不会出现明显的问题。

但是,如果您在普通的桌面软件中编辑或创建HDR图像或视频,则可能需要在软件中进行适当的设置以确保正确处理HDR颜色空间的内容。


哪些类型的桌面应用需要考虑显示 HDR 内容呢?

file

桌面应用需要考虑显示 HDR 内容的主要是涉及到图形、视频或者照片处理的应用。这些应用需要在显示器上以更加真实的方式呈现颜色和亮度的变化,以提供更高的视觉质量和更好的用户体验。此外,如果你经常观看HDR视频或玩HDR游戏,那么也会需要支持HDR显示以获得更好的体验。对于一些需要高保真图像的应用,如设计、艺术和照片处理,显示HDR图像也是必须的。

视频播放器、媒体编辑器、照片查看器和游戏都是需要考虑显示 HDR 内容的应用程序。视频播放器和媒体编辑器通常需要支持不同的 HDR 格式,以便用户能够编辑和播放具有高动态范围的视频。照片查看器也需要能够显示照片的 HDR 格式,以便用户能够查看和编辑拍摄的具有高动态范围的照片。游戏则需要支持 HDR 游戏,并能够在支持 HDR 的显示器上以更好的质量呈现游戏场景。

还有一些需要考虑显示HDR内容的应用程序。例如,虚拟现实和增强现实应用程序,需要在高对比度和高亮度的情况下呈现3D场景,以提供更加逼真的体验。此外,科学可视化应用程序、设计工具、绘图软件等也可能需要考虑显示HDR内容,以便用户能够更好地观察和处理高对比度的图像。

file


开发者如何开发一个显示 HDR 内容的桌面应用呢?

要开发一个支持显示HDR内容的桌面应用,开发者需要考虑以下几个方面:

  1. 显示器的支持:首先要确保用户使用的显示器支持HDR,并且该显示器已经被正确地配置,以便能够正确地显示HDR内容。这可能需要一些硬件和软件的配置。
  2. 像素格式:开发者需要确保应用程序使用的像素格式支持HDR内容。现代操作系统通常支持HDR格式的像素,例如,Windows 10 支持DXGI 1.5 HDR像素格式。
  3. 帧缓冲:开发者需要确保应用程序的帧缓冲支持HDR像素格式。这通常需要开发者使用OpenGL或DirectX等图形API来实现。
  4. 内容创建:开发者需要创建HDR内容以供应用程序使用。这可以通过使用现代摄像机和HDR支持的软件来实现,例如Adobe Photoshop等。
  5. 编码和传输:在将HDR内容传输到显示器之前,开发者需要对内容进行编码,并确保它们以正确的格式传输到显示器。

总之,要开发一个支持显示HDR内容的桌面应用,开发者需要注意硬件和软件的配置,确保应用程序使用正确的像素格式和帧缓冲,并使用支持HDR的软件来创建内容。

展望未来


file


sRGB 是否可能会被放弃?

注意!这个ChatGPT生成的内容可能和它生成的其它内容产生了矛盾,我会在后面追问。

未来完全放弃 sRGB 是有可能的,因为随着技术的进步和人们对更高质量图像的需求,HDR (高动态范围) 技术正在变得越来越受欢迎。这种技术可以提供比 sRGB 更广泛的颜色范围和比 sRGB 更高的亮度范围。

随着 HDR 技术的成熟,越来越多的摄影机、显示器和相机都开始支持 HDR。在未来,我们可能会看到更多的设备都采用 HDR 技术,甚至可能成为标准。这将使得编辑和观看 HDR 内容变得更加普遍。

当我们编辑和观看 HDR 内容时,我们将能够获得更加真实的色彩和更高的对比度。这将使得我们能够更好地捕捉和再现真实世界的颜色和光线变化,从而提供更加逼真的视觉体验。

当然,这需要一个时间过程,需要足够的市场需求、技术支持和产业链配套,不过未来随着技术的进步,这种可能性会越来越大。

你是否混淆了色域和动态范围这两个概念?

非常感谢您的指正,您说得没错,我之前的回答有些混淆了色域和动态范围这两个概念。色域和动态范围是两个不同的概念,它们分别描述了显示设备的颜色范围和亮度范围。

色域指的是显示设备可以显示的颜色范围。通常用三个主色(红、绿、蓝)的色彩空间来描述一个显示设备的色域。不同的显示设备具有不同的色域,例如sRGB、Adobe RGB、DCI-P3等。广色域显示器通常能够显示更广的色域范围,从而呈现更加鲜艳和逼真的颜色。

动态范围则是描述了显示设备能够呈现的最亮和最暗的像素值之间的范围。对于HDR显示器而言,其具有更高的动态范围,可以显示更明亮的白色和更深的黑色。这意味着HDR显示器能够呈现更加真实的场景,并且在图像的明暗变化中保持更多的细节。

因此,您说得没错,色域和动态范围是两个不同的概念,它们各自描述了显示设备的颜色范围和亮度范围。在这方面,没有哪一个可以替代另一个。

HDR技术并不是要取代sRGB颜色空间,而是为了提升显示设备的动态范围,从而能够呈现更加真实、更具深度感的图像。

在传统的SDR显示技术下,显示设备的动态范围受到限制,很难同时呈现出明亮和暗深的细节。HDR技术通过提高显示设备的最大亮度值和最小亮度值,从而扩展了动态范围。同时,HDR显示设备也具有更加丰富和鲜艳的色彩表现能力,这是通过扩展色域范围来实现的。因此,可以说HDR技术是为了提升显示设备的动态范围和色域范围,从而提高图像的真实感和表现力,而不是取代sRGB颜色空间。