Categories: 学术

sRGB

sRGB(标准红绿蓝)是惠普和微软1996年合作开发的RGB色彩空间,用于监视器,打印机和互联网。 它随后被IEC标准化为IEC 61966-2-1:1999。 它通常是不包含色彩空间信息的图像的“默认”色彩空间,特别是如果图像的像素以每个色彩通道8位整数存储。

sRGB使用ITU-R BT.709原色,与录音棚监视器和HDTV一样,是CRT典型的传输功能(伽玛曲线),以及旨在匹配典型家庭和办公室观看条件的观看环境。 该规范允许sRGB直接显示在当时典型的CRT监视器上,这极大地提高了它的接受度。

sRGB色域

色度 绿色 蓝色 白点
X 0.6400 0.3000 0.1500 0.3127
ÿ 0.3300 0.6000 0.0600 0.3290
ÿ 0.2126 0.7152 0.0722 1.0000

sRGB定义了红色,绿色和蓝色原色的色度,其中三个通道中的一个通道非零,另外两个为零。 可以用sRGB表示的色度范围是由这些原色定义的颜色三角形。 与任何RGB色彩空间一样,对于R,G和B的非负值,不可能表示这个三角形以外的颜色,这正好在具有正常三色视觉的人可见的颜色范围内。

sRGB有时被高端印刷出版专业人士避免,因为它的色域不够大,特别是在蓝绿色的颜色范围内,以包括可以在CMYK印刷中复制的所有颜色。

sRGB传输功能(“gamma”)

在每个点上有效的伽玛值。 低于0.04045的压缩值或0.00313的线性强度时,曲线是线性的,因此γ是1.红色曲线后面是黑色虚线,显示精确的γ= 2.2幂定律。

sRGB还定义了这些原色的强度与存储的实际数量之间的非线性变换。 该曲线与CRT显示器的伽玛响应类似。 这种非线性转换意味着sRGB可以合理高效地使用基于整数的图像文件中的值来显示人类可辨别的亮度级别。

与大多数其他RGB色彩空间不同,sRGB伽马不能表示为单个数值。 整体伽马大约为2.2,由接近黑色的线性(伽玛1.0)部分和其他地方包含2.4指数和伽马(对数输出对比对数输入的斜率)在其他地方的非线性部分组成,其从1.0变化到约2.3。 线性部分的目的是使曲线在0处没有无限的斜率,这可能导致数值问题。

转换规范
正向转换(CIE XYZ到sRGB)
必须缩放CIE XYZ值,以便D65(“白色”)的Y为1.0(X,Y,Z = 0.9505,1.0000,1.0890)。 这通常是正确的,但一些色彩空间使用100或其他值(例如在实验室文章中)。

计算来自CIE XYZ的sRGB的第一步是线性变换,其可以通过矩阵乘法来执行。 (下面的数值与官方sRGB规范中的数值相匹配,sRGB规范修正了sRGB创建者在原始出版物中的小舍入误差,并假设CIE XYZ的2°标准色度观测器)


值得注意的是,这些线性RGB值并不是最终的结果,因为它们尚未针对伽马校正进行调整。 以下公式将线性值转换为sRGB:


其中{\ displaystyle a = 0.055} a = 0.055,其中{\ displaystyle C} C是{\ displaystyle R} R,{\ displaystyle G} G,或{\ displaystyle B} B.
这些经过伽马校正的值在0到1的范围内。如果需要0到255范围内的值,例如对于视频显示或8位图形,通常的技术是乘以255并四舍五入为整数。

值通常被剪切到0到1的范围。 该修剪可以在伽玛计算之前或之后完成,或者作为转换为8位的一部分完成。

Related Post

相反的转变
再次是sRGB组件的值  ,  ,  在0到1的范围内(0到255的范围可以简单地除以255.0)。


其中{\ displaystyle a = 0.055} a = 0.055,其中{\ displaystyle C} C是{\ displaystyle R} R,{\ displaystyle G} G,或{\ displaystyle B} B.
接下来是线性值的矩阵乘法以得到XYZ:


转型理论

通常随便说明sRGB数据的解码伽马是2.2,但上述变换显示的指数为2.4。 这是因为分段分解的净效应在该范围中的每个点处必然是变化的瞬时伽玛:其从在零处的γ= 1变为处于最大强度处的2.4处的伽马,中值接近于2.2。 该变换被设计为接近约2.2的伽马,但具有接近零的线性部分以避免在K = 0时具有无限斜率,这可能导致数值问题。 曲线的连续性条件  ,它在上面被定义为一个分段函数  ,是


用…解决  和标准值  产生两种解决方案  ≈  要么  ≈  。 IEC 61966-2-1标准使用四舍五入的值  。 但是,如果我们强加斜坡匹配的条件,那么我们必须拥有


我们现在有两个等式。 如果我们将这两个未知变成{\ displaystyle K_ {0}} K_ {0}和{\ displaystyle \ phi} \ phi,那么我们可以解决


代  和  给  ≈  和  ≈  ,相应的线性域阈值at  ≈  。 这些值四舍五入为 ,  ,和  ,有时会描述sRGB转换。sRGB创作者的出版物 四舍五入为  和  ,导致曲线出现小的不连续性。 尽管存在不连续性,但一些作者采用了这些值。 对于标准,四舍五入的值  被保留下来了  值被重新计算以使得到的曲线如上所述连续,导致从交点以下的12.92到12.70以上的斜率不连续性。

观看环境

参数
屏幕亮度级别 80坎德拉/平方米
照明白点 x = 0.3127, y = 0.3290(D65)
图像环绕反射 20%(〜中灰)
编码环境照度级别 64勒克斯
编码环境白点 x = 0.3457, y = 0.3585(D50)
编码观看光晕 1.0%
典型的环境照度水平 200勒克斯
典型的环境白点 x = 0.3457, y = 0.3585(D50)
典型的观看眩光 5.0%

sRGB规范假定具有环境相关色温(CCT)为5000 K的暗光编码(创建)环境。值得注意的是,这不同于光源CCT(D65)。 两者都使用D50会使大多数相纸的白点显得过度蓝。 其他参数(如亮度级别)代表典型的CRT监视器。

为获得最佳效果,ICC建议使用编码观看环境(即暗淡,漫反射照明),而不是较不严格的典型观看环境。

用法
由于sRGB在互联网,计算机和打印机上的标准化,许多中低端消费型数码相机和扫描仪使用sRGB作为默认(或仅可用)工作色彩空间。 由于sRGB色域达到或超过低端喷墨打印机的色域,sRGB图像通常被认为是家用的满意产品。 但是,消费级CCD通常是未校准的,这意味着即使图像被标记为sRGB,也不能断定图像是颜色准确的sRGB。

如果图像的色彩空间未知并且是8至16位图像格式,则假定它位于sRGB色彩空间中是安全的选择。 这使程序能够识别所有图像的色彩空间,这可能比试图追踪“未知”色彩空间更容易和更可靠。 可以使用ICC配置文件; ICC分发了三个这样的配置文件:符合ICC规范第4版的两个配置文件,他们推荐的配置文件和符合第2版的一个配置文件,它仍然是常用的。

通过完全色彩管理的工作流(例如印前输出)专门打印的图像有时会使用另一种色彩空间,例如Adobe RGB(1998),该色彩空间可适应更广泛的色域。 互联网上使用的这些图像可能会使用颜色管理工具转换为sRGB,这些工具通常包含在适用于这些其他颜色空间的软件中。

3D图形的两个主要编程接口,OpenGL和Direct3D,都支持sRGB伽玛曲线。 OpenGL支持使用sRGB伽马编码颜色组件(首次引入EXT_texture_sRGB扩展,添加到OpenGL 2.1中的核心)以及渲染到sRGB伽玛编码帧缓冲区(首先以EXT_framebuffer_sRGB扩展引入,添加到OpenGL 3.0内核中)的纹理。 Direct3D支持sRGB伽马纹理并从DirectX 9开始渲染到sRGB伽马曲面中。正确的mRmapping和sRGB伽马纹理插值在大多数现代GPU的纹理单元中都有直接的硬件支持(例如,nVidia GeForce 8执行从8位纹理到线性插入这些值之前的值),并且不具有任何性能损失。

Share