sRGB颜色空间

作者:追风剑情 发布于:2024-12-31 13:46 分类:Unity3d

  sRGB 颜色空间是惠普公司与微软公司于1996年一起开发的用于显示器、打印机及互联网图像存储的一种标准 RGB 颜色空间。这种颜色空间在编码上的定义充分利用了值为 2.2 的伽马校正系数,其很大程度上是为了和当时主流的 CRT 显示器的特性相匹配。

  使用 sRGB 颜色空间对颜色进行编码的一些图像文件,可以不经转换就能在当时的 CRT 显示器中正常显示。其原因如图 2-12 所示,在数据采集端中,图片中对实际场景中的场景颜色信息利用编码伽马值编码到图片的像素颜色值中去了,因此作为数据还原端的 CRT 显示器可以不用经过额外处理,就能利用其自身的电气特性较为准确地还原出实际场景的颜色信息。

  sRGB 定义了红色、绿色与蓝色三原色的颜色,即在其他两种颜色值都为0时该颜色的最大值。从 CIE xyY 坐标系计算 sRGB 中的三原色,首先需要将它变换到 CIE XYZ 三值模式: (2-26){X=YxyZ=Y(1xy)y

这样 X、Y、Z 值就可以用矩阵转换到线性 R、G、B 值,但这些线性值并不是最终的结果。 (2-27)[RlinearGlinearBlinear]=[3.2411.53740.49860.96921.8760.04160.05560.2041.0570][XYZ] 式中,RlinearGlinearBlinear 的取值范围是 [0, 1]。

  sRGB 是反映真实世界中伽马值为 2.2 的 CRT 显示器的效果,因此使用下式可以将定义在 CIE-XYZ 颜色空间的线性颜色值转换到 sRGB 颜色值。令ClinearRlinearGlinearBlinear,Csrgb为Rsrgb、Gsrgb或Bsrgb: (2-28){Csrgb=12.92ClinearClinear0.00304Csrgb=(1+a)Clinear12.4aa=0.055Clinear>0.00304

  这些经过伽马校正后的 sRGB 颜色值的范围为[0,1]。如果需要使用 0~255 的取值范围,通常将它乘以 255 然后取整。

  把颜色值从 sRGB 颜色值转换为线性颜色值则使用以下公式: (2-29)[XYZ]=[0.41240.35760.18050.21260.71520.07220.01930.11920.9505][g(Rsrgb)g(Gsrgb)g(Bsrgb)] 函数g(K)的定义如下: (2-26){g(K)=(K+a1+a)γK>0.04045g(K)=K12.92 式中,K为RsrgbGsrgbBsrgb

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号