SRGB色彩空间
维基百科,自由的百科全书
sRGB 色彩空间是惠普与微软一起开发的用于显示器、打印机以及因特网的一种标准RGB 色彩空间。这种标准得到了 W3C、Exif、英特尔、Pantone、Corel 以及其它许多业界厂商的支持,在 GIMP 这样的开放源代码软件也支持这种标准,另外一些专有的或者象 SVG 这样的开放图形文件格式中也有应用。
sRGB 最初设计的目的是作为生成在因特网以及万维网上浏览的图像的通用色彩空间,最后选择的是使用Gamma 校准系数为 2.2 的色彩空间,即 CRT 显示器在这种情况下的平均线性电压响应。
这里值得重视的是 sRGB 的设计与当时(1996年)不算理想色彩空间的 CRT 显示器相匹配。当时大量的专业或者个人电脑软件,使用 8 位深度的图像文件,并且不经转换就在8位/通道的显示器上显示。许多时髦的非 CRT 硬件,如 LCD、数码相机以及打印机,尽管本身并不生成 sRGB 曲线,但是都带有补偿电路或者软件以遵循这个标准。在一些高端的专业设备上可能并不遵循这个标准。因此,我们可以假定任何不带颜色配置表或者其它信息的 8 位图像文件、8 位图像 API 或者设备接口,都处于 sRGB 色彩空间。
目录 |
[编辑] 综述
sRGB 定义了红色、绿色与蓝色三原色的颜色,即在其它两种颜色值都为零时该颜色的最大值。在 CIE xy 颜色坐标系 中红色位于[0.6400, 0.3300]、绿色位于[0.3000, 0.6000]、蓝色位于[0.1500, 0.0600]、白色是位于[0.3127,0.3290]的 D65。对于任何的RGB 色彩空间来说,非负的 R、G、B 都不可能表示超出原色定义的三角形即色域范围,它刚好在人眼的色彩感知范围之内。
sRGB 还定义了原色强度与实际保存的数值之间的非线性变换。这个曲线类似于 CRT 显示器的 gamma 响应。重现这条曲线要比 sRGB 图像在显示器上正确显示更加重要。这个非线性变换意味着 sRGB 非常高效地使图像文件中的整数值表示了人眼可以分辨的颜色。
sRGB 由于它的色域不够大,尤其是蓝-绿颜色色域无法表示CMYK印刷中的所有颜色,所以通常印刷行业的专业人员通常不用这种模型。而Adobe RGB是印刷行业经常使用的色彩空间。
[编辑] 变换的规范
[编辑] 从 CIE xyY 或者 CIE XYZ 到 sRGB 的前向变换
[1]从 CIE xyY 坐标系计算 sRGB 中的三原色首先需要将它变换到 CIE XYZ 三值模式。
这样 XYZ 值就可以用矩阵转换到线性的 RGB 值,这些线性值并不是最终的结果。
Rlinear、Glinear 与 Blinear 的取值范围为 [0,1]。sRGB 是反映真实世界 gamma 为 2.2 的典型显示器的效果,因此使用下面的变换公式将线性值转换到 sRGB。设 Clinear 为 Rlinear、Glinear 或者 Blinear,Csrgb 为 Rsrgb、Gsrgb 或者 Bsrgb:
- 如果 则
- 如果 则 }-
这些经过 gamma 校正的值范围为 0 到 1。如果需要 0 到 255 的取值范围,如用于视频显示或者 8 位图形,通常将它乘以 255 然后取整。
[编辑] 逆向变换
假设 sRGB 分量的值 Rsrgb、Gsrgb、Bsrgb 的取值范围为 0 到 1。
其中
- 对于 有
- 否则
[编辑] 变换的理论基础
变换的非线性部分是为了逼近 2.2 的gamma 校正而设计的,但是在 K=0 斜率不为 0,这样可能会产生数值计算的问题。对于 sRGB 变换来说这大致正确。在 K0 处的 g(K) 为:
使用上面的标准值 φ = 12.92,得到 K0=0.04045... 这就是常用的变换。如果我们要求斜率也要匹配,那么需要:
这样就得到两个方程。假设未知变量为 K0 与 φ,这样就得到 K0=0.03928... 与 φ=12.9232.... sRGB 规范中有时也使用这些值进行计算,但是它们并不属于标准的一部分。
[编辑] 应用
作为因特网上推荐使用的色彩空间,在编辑、保存用于 WWW 的图像的时候要 sRGB 标准,但是由于与其它色彩空间相比它的色域较小,因此用于专业印刷的图像如印前输出则可以使用Adobe RGB 色彩空间那样有较大色域的色彩空间。在一些先进的硬件上的另外一种替代方法是仍然使用 sRGB 原色模式但是使用负值或者超过 1 的亮度,这样就可以无限扩大色域。
用其它色彩空间生成的用于因特网的图像在使用合适的图像编辑软件进行编辑的时候可以将它们转换成 sRGB,这些软件有Corel Paint Shop Pro以及Adobe Photoshop等等。尽管最初的非 sRGB 文件可以保存并转换为 sRGB,但是由于这个转换过程可能会丢失图像信息,所以建议保存为另外的文件而保存原始的非 sRGB 图像文件。
由于在因特网上的广泛应用,以及许多中低端的消费型数码相机、扫描仪都使用 sRGB 模型作为缺省模式或者是仅有的色彩空间,同时由于喷墨打印机的应用,因此许多人认为 sRGB 色彩空间对于家庭应用来说已经足够了。
两种占据主导位置的三维图形编程接口 OpenGL 与 Direct3D 都集成有 sRGB。OpenGL 2.1 中包含有首次在 EXT_texture_sRGB 扩展中引入的 sRGB 纹理。OpenGL 的 EXT_texture_sRGB 扩展支持线性或者 sRGB 色彩空间的渲染缓冲。DirectX 9 支持 sRGB 纹理以及用 Direct3D 渲染成 sRGB 表面。
[编辑] 参考文献
- IEC 61966-2-1:1999 是官方正式的 sRGB 规范。它定义了查看所需环境、编码以及色度计量的规范。
- Amendment A1:2003 to IEC 61966-2-1:1999 describes an analogous sYCC encoding for YCbCr color spaces, an extended-gamut RGB encoding, and a CIELAB transformation.
- The fourth working draft of IEC 61966-2-1 is available online, but is not the complete standard.
- ↑ sRGB description with XYZ conversion formula