【问题标题】:RGB 0-1 nomenclatureRGB 0-1 命名法
【发布时间】:2019-09-18 08:28:33
【问题描述】:

愚蠢的提问时间!

RGB 颜色具有三个值(红色、绿色和蓝色,范围从 0 到 255)。如果这些值的范围是 0 到 1,那么这个颜色空间的名称是什么*?

是 RGB 0-1 吗? RGB数字?虚幻 RGB?

*如果包含 alpha 通道 RGBA 0-1。

【问题讨论】:

    标签: rgb terminology


    【解决方案1】:

    不幸的是,没有真正的命名法。有时,同一个词可能会根据您学习的书(计算机图形、电视广播、数字视频格式、照片)有不同的解释。

    首先:RGB 不是颜色空间,而是颜色模型,因此它只提供了有关如何制作颜色的想法,但没有提供任何精确信息。

    当使用 RGB 时,通常我们打算使用线性 RGB 或伽马校正 (R'G'B')。线性表示光的强度,伽玛校正更多的是我们如何感知颜色。所以半灰色(似乎介于白色和黑色之间)在线性 RGB 中约为 18%,在伽马校正空间中约为 50%

    然后我们就有了色彩空间,比如 sRGB。在色彩空间中,我们定义(R、G 和 B 的)色度和白色的色度。 [通常将色度作为 CIExyz 的 x,y 给出]。 Rec.709 (HDTV) 具有相同的 R、G 和 B 色度,但不同的 gamma 和不同的白色。

    色彩空间通常会定义各种特征。 sRGB 定义从 0 到 255(最初)的值,因此是一个字节,总是经过伽马校正。以前,通常将 100 或 1.0 作为白色的值(这些值的三元组)。注意:高于 1.0 或 100 的值可能有效。在旧的模拟电视上,我们可以有这样的值(仅限于部分屏幕和有限的帧,但仍然允许)。

    对于数字世界信号(例如 HDMI),我们有全范围 RGB:0 到 255 或有限范围 RGB 16-235。

    我不知道一个好的命名法,但通常很明显。一般来说:线性 RGB 有 (0.0, 0.0, 0.0) 代表黑色,(1.0, 1.0, 1.0) 代表浮点数(半精度或单精度)。浮点数已经是一种指数表示,如伽马校正和线性:添加光只是一种加法(它不会产生不需要的颜色)。

    在非线性色彩空间 [伽马校正] 上,我们倾向于使用整数,通常是 0 到 255(或 0 到 1023,10 位)(颜色深度,有时是总的,有时是每个通道的位)。所以如果你有一个颜色深度,你正在使用整数,所以值 0 到 2**channel_depth-1。

    指定值总是好的,也因为缺乏命名法并且经常混淆。您会看到很多关于人们没有意识到 HDMI 信号上的全尺寸/有限尺寸图像的问题。

    我的看法:您定义“8 位 sRGB”(或 24 位):0 到 255,模拟 10 位等。“线性 RGB”(或任何具有浮点常数的东西,或者在文本):0 到 1.0。如果您在某处也看到 YCC,请开始担心,因为您永远不知道您是全频还是有限频。 0 到 100 可以在教科书上找到(尤其是旧书),但在这种情况下,我更喜欢添加 % 符号,因此会自动将值从 0 到 1.0。

    但是像文件格式一样,您应该在某个地方完整地描述您的色彩空间:色度(例如,通过引用 sRGB DCI-P3、Apple P3、AdobeRGB 等),您使用哪种伽玛校正(有各种功能,Apple在旧硬件上使用不同的硬件),我会写黑色:0,0,0,白色 1.0,1.0,1.0(例如,带范围,例如负数 [用于颜色“超出色域”或超发光值)和精度(16 位 [半精度] 32 位 [单精度],每通道,或经典的 8 位、10 位、12 位(如果是整数)。您只需要一次,但最好是明确的,尤其是考虑到不同领域的人有不同的期望。

    【讨论】:

      【解决方案2】:

      RGB 是一个color space,其中颜色被定义为其组件的比例,因此 RGB 颜色是从 0 到 1 的 3 个值。True color 有时被称为 RGB,但它在技术上并不正确,因为它是颜色空间 (RGB) 和color depth(3*8 位)的组合。

      RGB 0-1 很好,但在我看来,RGB 数字更适合 0-255 范围,而 RGB 虚幻的名字真的很糟糕,因为它使用实数而不是整数来表示颜色。

      【讨论】:

      • 虚幻游戏引擎使用 RGB 0-1,这就是我包含它的原因 - 这导致我写了这个问题
      • 技术上 RGB 是一种颜色模型(您也可以在链接中看到它)。 sRGB、AdobeRGB、DCI-P3 等是色彩空间。 RGB 的值可以大于 1(或 100)。而且你错过了一个很大的效果:“伽玛校正”与线性空间。
      【解决方案3】:

      使用 0 和 1 作为 RGB 值,您可以得到以下组合:

      000
      001
      010
      100
      
      110
      101
      011
      111
      

      八种不同的颜色:黑色,然后是蓝色,绿色,红色,然后是黄色,洋红色,青色,然后是白色。

      (按照我在列表中列出 rgb 颜色位的顺序)

      如果您使用粗体属性加倍,您将获得 16 种官方 Linux 颜色。我猜色彩空间以前就存在过:当你从 3 种“基础”颜色开始并将它们混合得到 6 种时,你会得到它。

      还有一个数字魔术:2^3=2*3+1+1

      8减黑减白为6色,分两组。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-09
        • 2017-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 2018-09-26
        • 1970-01-01
        相关资源
        最近更新 更多