跳过主要内容

什么是10位(和12位)颜色?

所以,10位颜色:重要的是新的,但是......是什么?在我们潜入其中之前,第一个问题是有点深度,为什么显示它是什么?

什么是位深

在计算机编程中,变量以不同的格式存储,具有不同的位数(即,那里和零),具体取决于可变需求的比特数。通常,您添加的每个位允许您按下以前的数字,因此存储在前一系列的信息。因此,如果您需要最多两次(不包括零),则需要一位。两位允许您最多键入四个,三位最多八位,等等。

这里需要注意的另一件事是,一般来说,比特越少越好。更少的位元意味着更少的信息,所以无论你是通过互联网传输数据,还是把数据扔给你的计算机的处理能力,你都能更快地得到你想要的任何东西。

然而,您需要足够的位来计算您想要达到的最高(或最低)数。超过你的限制是最常见的软件错误之一。正是这种病毒最初使甘地成为一个好战的、投掷核武器的暴君文明在他的“战争”评级试图下降到负值之后而是翻转到最大可能的设置.所以这是你所需要的比特数量的平衡;你使用的比特越少越好,但是你不应该使用比需要的更少的比特。

位深度如何与显示工作

为了传输您现在看到的图像,您的设备正在每像素传输三组不同的位,分为红色,绿色和蓝色。这三个通道的位深度确定了您的显示器的红色,绿色和蓝色的色调是收到的,因此也可以限制它可以输出多少。

最低端的显示器(现在已经完全不常见了)每个彩色通道只有6位。SRGB标准要求每个颜色通道为8位,以避免带状。为了尝试和匹配这个标准,那些老的6位面板使用帧速率控制来抖动。希望这样可以隐藏条带。

什么是条带?条纹是一种突然的,不需要的,颜色和/或亮度的跳跃。在这个例子中,输出红色、绿色和蓝色阴影时,计数越高,需要选择的颜色就越多,看到的条带就越少。另一方面,《犹豫不决》没有那些中间的颜色。相反,它试图通过噪声从一种颜色过渡到另一种颜色来隐藏条纹。虽然没有真正的高比特率好,但总比没有好。

在今天的HDR显示器中,你需要更多的颜色和更高的亮度范围来提供给你的显示器。这反过来意味着需要更多的比特信息来存储所有的颜色和亮度之间而不引起带状。那么,问题是HDR需要多少位?

目前,最常用的答案来自巴尔顿门槛,本文提出,来衡量人类对亮度对比的感知程度。杜比(Dolby Vision和HDR10所使用的新HDR标准中,bit如何应用于亮度的开发者)在看了它之后得出结论,10位将有一点明显的带,而12位将没有任何带。

这就是为什么HDR10(和10+,以及之后的任何其他)每像素有10位,在小带宽和更快传输之间做了权衡。杜比视觉标准使用12位每像素,这是为了确保最大的像素质量,即使它使用更多的位。这涵盖了HDR所能覆盖的亮度(即亮度)的扩展范围;但是颜色呢?

覆盖有多少位才能覆盖“色域”(标准的颜色范围可以产生的颜色范围)而没有绷带更难定义。科学原因很多,但他们都回到了事实上,难以准确测量人眼如何看到颜色。

一个问题是人类的眼睛对颜色的反应似乎改变根据在你申请什么样的测试更进一步说,人类的颜色视觉依赖于视蛋白,这是你的眼睛用来分别看到红色、绿色和蓝色的滤色片。问题是不同的人有不同的视蛋白,这意味着根据基因,人们可能会看到不同的颜色。

不过,我们可以做出一些有根据的猜测。首先,根据观察,在非hdr“SRGB”标准中完成的8位色域几乎可以,但不是完全可以,覆盖足够的颜色以避免条带。如果你仔细观察颜色梯度,假设你有一个8位屏幕,你很有可能会注意到这里有一点带状.一般来说,它足够好,除非你真的在寻找它,否则你不会看到它。

那么两个HDR赌场,不得不覆盖一系列巨大的亮度以及P3色域,比SRGB宽,或甚至更宽BT2020色域.我们已经讨论了亮度需要多少位,但是更高的色域需要多少位呢?嗯,P3色域的颜色数量少于SRGB色域的两倍,这意味着名义上你只需要不到一位就可以覆盖它而不带条纹。然而,BT 2020色域是SRGB色域的两倍多一点,这意味着你需要不止一个额外的位来覆盖它而不带带。

这意味着,HDR10标准和10位颜色,没有足够的位深来覆盖整个HDR亮度范围和扩展的色域同时没有带。记住,10位颜色本身并不能完全覆盖更高的亮度范围,更不用说更多的颜色了。

这就是为什么HDR10和10位颜色(HLG标准也使用10位)最多输出1k尼特的亮度,而不是像杜比视觉那样输出10k尼特的部分原因。不用把亮度范围推得太大,你就可以把明显的条带保持到最小。事实上,由于当今面板的亮度和颜色范围有限,导致亮度和色彩内容有限,很少有人能注意到12位和10位信号之间的区别

那么,所有这些在实际的硬件和内容中是什么样子的呢?

把它付诸实践

首先,你是否应该担心HDR10和10位颜色的颜色和亮度范围更有限?现在的答案是否定的,不要太担心。在HDR显示中获得超过1k的细微之处现在是不可行的。大多数显示器也不能超过较小的P3范围。因为很多内容都是用10位彩色来控制和传输的,所以今天12位彩色硬件对你来说就没什么用了。

第二件事是如何确保您在显示器上获得10位颜色。幸运的是,这几乎总是在设备的技术规范中列出,但要注意任何没有列出它的HDR显示。您需要10位输入颜色,但输出是一个不同的故事。输出可以是10位面板输出,或八位与FRC。

显示器制造商会使出的另一招叫“魔术”查找表.并非所有场景都使用标准的所有颜色和亮度 - 事实上,最多不是。查看表格通过改变您可用的位数为更有限的颜色和亮度的信息来利用这一点。这限制了在没有绑带的情况下产生场景所需的比特数,并且可以显着减少95%或更多场景中的绷带。但是,我们应该注意,目前这是专门在高端参考监视器中发现的,就像来自EIZO那样的高端参考监视器。That's also the only place this trick is needed, because after being transferred from a camera (or what have you) to a device on which you'd watch the content, today’s HDR signals already come with a not dissimilar trick of metadata, which tells the display the range of brightness it’s supposed to be displaying at any given time.

第三个也是最后一个问题是什么时候该担心12位颜色。当BT2020色域在显示器、电视和手机等设备上可用时,这些设备能够达到更高的亮度,那时你可以考虑12位。一旦行业达到这一点,10位颜色将不足以显示的HDR水平没有带。但我们还没到那一步。

13个评论 来自论坛的评论
  • abtocool
    我发现这篇文章的质量差,不清楚,太多的单词被用来表达很少的事情。
    回复
  • bit_user
    关于底流的问题是一个无益的题外话。如果我们讨论的是无符号,无偏整数,那么再多的位也无法避免这个问题。使用overflow的示例可能更合适一些。

    为什么不直接用阶梯来比喻呢?它简单易懂。

    使用8位索引颜色的示例具有误导性。大多数人不知道索引颜色,会混淆8位每像素和8位每通道(即24位的例子)。
    回复
  • cia1413
    我不认为你正在理解使用抬头表,lut。LUT用于校正图像的颜色。您在EIZO上使用LUT的原因是因为您可以轻松地添加颜色校正,使用大量的时间来改变图像的感觉,并快速将其应用于监视器的输出。它不用作“技巧”,使图像看起来更好,只是一个改变它的工具。
    回复
  • abtocool
    嘿,LUT表不就是一个颜色数据库吗(数百亿),整个想法就是监视器处理器不需要每次处理生成的颜色,只需要从LUT表中查找(回忆一下)就可以了。

    14位LUT (Benq/Viewsonic)表生成4.39万亿种颜色,然后使用这些颜色挑选10.7亿种颜色(10位),并生成适当的颜色。


    回复
  • koga73
    每通道8位的另一个好处是它很好地适合32位值。ARGB =每通道8位x 4个通道(A是Alpha表示透明度)。10或12位的颜色值在32位的应用程序中不起作用。假设您的应用程序是64位的,您可以将每个通道增加到16位(16 x 4 = 64)。
    回复
  • cia1413
    20951176说:
    嘿,LUT表不就是一个颜色数据库吗(数百亿),整个想法就是监视器处理器不需要每次处理生成的颜色,只需要从LUT表中查找(回忆一下)就可以了。

    14位LUT (Benq/Viewsonic)表生成4.39万亿种颜色,然后使用这些颜色挑选10.7亿种颜色(10位),并生成适当的颜色。


    不,它是一种修改颜色以以一种新的方式显示它们的方法。您可以在显示光线曲线中纠正错误或添加“外观”,例如使其蓝色和暗示夜间时间。
    回复
  • bit_user
    20951594说:
    每通道8位的另一个好处是它很好地适合32位值。
    这是显示实际支持的单独的物质以及如何将数据传输到它。

    20951594说:
    10或12位的颜色值在32位的应用程序中不起作用。
    当然它可以工作。它只不会像每个通道一样密集或容易包装8位。

    此外,3D渲染通常使用浮点格式来表示颜色。它仅在结束时将其映射到显示器支持的色域和亮度范围。
    回复
  • TripleHeinz
    20952597说:
    20951594说:
    每通道8位的另一个好处是它很好地适合32位值。
    这是显示实际支持的单独的物质以及如何将数据传输到它。

    20951594说:
    10或12位的颜色值在32位的应用程序中不起作用。
    当然它可以工作。它只不会像每个通道一样密集或容易包装8位。

    此外,3D渲染通常使用浮点格式来表示颜色。它仅在结束时将其映射到显示器支持的色域和亮度范围。

    我正要回答类似的问题,但你先回答了,而且很完美。

    我理解这一切都是关于一个颜色在32位值的方便包装。

    D3D9能够以32位无符号整数格式广泛工作,用于颜色表示。但是当前的API使用归一化(在0和1之间)32位浮点单元代表颜色,然后在内部GPU使用浮点数将数据转换为输出格式。我认为这是一种令人敬畏的方法,与任何格式几乎兼容。

    一个32位的应用程序可以完美地工作,并表示10位和12位的颜色值。32位系统可以很好地处理64位值。更重要的是,在x86架构的情况下,它在硬件上支持80位扩展精度浮点单元。
    回复
  • TripleHeinz
    NVIDIA控制面板中有此选项可输出8BPC或12BPC到显示。使用相当新的面板时,12BPC选项可用,但使用旧面板时不可用。这是否意味着我的显示器有一个支持12位颜色的面板,或者是别的东西吗?

    我真的怀疑我的面板是一个超级12位的。它来自一个有问题的OEM和品牌,但颜色和对比度一直看起来真的很好。
    回复
  • bit_user
    20952754说:
    更重要的是,在x86架构的情况下,它在硬件上支持80位扩展精度浮点单元。
    啊,悲哀,但事实如此。x87 FPU支持此功能,但SSE或AVX不支持此功能。我想我遇到了128位浮点数或int支持,在一些迭代的SSE或AVX,但我没有找到它。

    x87拥有的另一件事是对非标准的硬件支持。如果在SSE(可能还有AVX)中启用非常规支持,它将使用软件仿真,速度会慢得多。此外,x87还有关于超越函数和幂函数的说明。

    最后,x87很酷的一点是它是基于堆栈的——就像一个RPN计算器。我认为这是它被SSE推到一边的原因之一——它可能不适合流水线、超标量、无序执行。但是,还是有点酷。

    如果你喜欢设计过度的古董机器,那有近40年历史的8087就是一个很好的例子。

    https://en.wikipedia.org/wiki/intel_8087.
    回复