Post by "Uther",2008-04-01, 16:26
-----------------------------------------------------
看到了两篇关于色彩空间的帖子,第一篇是介绍这个色彩空间的发展,后一篇是对比sRGB和scRGB
===================================第一篇=======================================
原文http://hi.baidu.com/cybo/blog/item/8f24ba38bbb584c1d5622597.html
我们有幸能欣赏这个五彩缤纷的世界,是因为我们的眼睛能判别从红到紫的一系列颜色。令人惊奇的是,只要用三种被称为原色的色彩红、绿、蓝(或者它们的补色黄、品红、青),按不同比例混合,就能模拟千变万化的各种色彩,让我们的眼睛信以为真。
我们太幸运了,如果不是用三四种颜色就能模拟诸多色彩,我们就很难复制和重现这个瑰丽多姿的世界。
你看到上面的这一幅图像,有一个“舌形”色域空间,也是人眼能够辨别的色彩空间,它的边缘围绕一道从波长从380到700(毫微米)的光谱,中间就是用红、绿、蓝三种颜色按不同比例调配出来的颜色。
这幅图的巧妙之外在于它通过“归一化”,用两维平面来表示三个数据。X轴是红色的比例,Y轴是绿色的比例,而Z轴是蓝色的比例,虽然Z轴没有画出来,但它的比例数据可以很方便地计算出来。比方红是0.2,绿是0.3,那么蓝就是0.5。因为它们三者加起来必须等于1,不然怎么叫“归一化”呢!图上任何一点的蓝色分量,你都可以用这个方法计算出来。
10年前,微软和惠普公司推出一个叫标准红绿蓝的色域标准(sRGB),是一个基于32位PC机的标准。你可以从上面的图片看到,它只是人眼能辨别的色彩空间(舌形色域)的一部分,人眼能辨别的好多色彩它都无法显示。但这个标准还是被广泛接受。我们现在在使用的显示器、扫描仪、打印机、数码相机,许多都使用这个标准。
后来,大概过了两年,Adobe推出了Adobe RGB标准,显然色域要比sRGB的范围更宽广,这几年有好多上述设备采用了这一标准,然而它们都无法覆盖人眼可见的色域范围。
2003年,微软又推出了scRGB色域标准,它大大拓展了色域范围,不仅全部复盖人眼可见的色域范围,还把空间扩展了很多。其精细程度也大大超过sRGB,从下面的图片中我们可以看到它们的区别(你看那些放大了的云彩)。
===================================第二篇=======================================
原文http://blog.csdn.net/ghj1976/archive/2007/12/30/2004792.aspx
.net FrameWork 3.0 后,我们会发现有两个Color数据结构。
一个是:System.Drawing.Color
一个是:System.Windows.Media.Color
这两个结构有啥区别呢?
下面是对这两个类的属性的一个简单比较:
| System.Drawing.Color Structure
| System.Windows.Media.Color Structure
| 所在组件
| System.Drawing.dll
| PresentationCore.dll
| 支持的版本
| .NET Framework
Supported in: 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0
.NET Compact Framework
Supported in: 3.5, 2.0, 1.0
XNA Framework
Supported in: 1.0
| .NET Framework
Supported in: 3.5, 3.0 SP1, 3.0
| A
| Gets the alpha component value of this Color structure.
| Gets or sets the sRGB alpha channel value of the color.
| B
| Gets the blue component value of this Color structure.
| Gets or sets the sRGB blue channel value of the color.
| G
| Gets the green component value of this Color structure.
| Gets or sets the sRGB green channel value of the color.
| R
| Gets the red component value of this Color structure.
| Gets or sets the sRGB red channel value of the color.
| ScA
| 不支持
| Gets or sets the ScRGB alpha channel value of the color.
| ScB
| 不支持
| Gets or sets the ScRGB blue channel value of the color.
| ScG
| 不支持
| Gets or sets the ScRGB green channel value of the color.
| ScR
| 不支持
| Gets or sets the ScRGB red channel value of the color.
| 获得系统支持的一些颜色
| 在Color中定义了141种系统预定义的颜色
调用方法如下:
System.Drawing.Color.AliceBlue
| 不在Color中定义,而是Colors中定义,获得方法类似下面写法:
System.Windows.Media.Colors.AliceBlue
系统一共预定义了141个颜色。
| 小结
| 只支持 sRGB。向下兼容
| 同时支持 sRGB、ScRGB。不兼容3.0以下的版本
|
我们可以在上面看到,关键是sRGB和ScRGB两种颜色表示方法。这两种有啥差别呢?我们来看下面三副图,先来感性的看看:
这幅图的巧妙之外在于它通过“归一化”,用两维平面来表示三个数据。X轴是红色的比例,Y轴是绿色的比例,而Z轴是蓝色的比例,虽然Z轴没有画出来,但它的比例数据可以很方便地计算出来。比方红是0.2,绿是0.3,那么蓝就是0.5。因为它们三者加起来必须等于1,不然怎么叫“归一化”呢!图上任何一点的蓝色分量,你都可以用这个方法计算出来。 图中的“舌形”色域空间,是人眼能够辨别的色彩空间,它的边缘围绕一道从波长从380到700(毫微米)的光谱,中间就是用红、绿、蓝三种颜色按不同比例调配出来的颜色。 而图中的三角的区域,是 sRGB 可以表示的颜色范围。显然有一些我们人类可以看到的颜色,但是sRGB来描述的。 上面这幅图对比了 sRGB、人眼、ScRGB 可以表示的颜色范围。 上面这幅图是sRGB和ScRGB两幅图的比较,注意看放大了的云彩。 sRGB 和 scRGB 的转换
在 System.Windows.Media.Color 结构中,scRGB原色其实是被储存成单精度(single-precision)的浮点数。想要容纳scRGB颜色空间,Color 结构包含四个主要的property,类型都是float,分别为ScA、ScR、ScG、ScB。
这些property和A、R、G、B property 会相互影响,改编G property也会造成ScG property的改变,反之亦然。
当G property 为0,ScG property 也会为0;当G property 为255,ScG property 就会为1。在这个范围之内,
关系并非是线性的,如下表所示。
scG | G | <= 0 | 0 | 0.1 | 89 | 0.2 | 124 | 0.3 | 149 | 0.4 | 170 | 0.5 | 188 | 0.6 | 203 | 0.7 | 218 | 0.8 | 231 | 0.9 | 243 | >=1.0 | 255 |
ScR 与 R 之间的关系,ScB与B之间的关系,以及ScG与G之间的关系,也都是一样的。ScG的值可以小于0或者大于1,以容纳超出显示器和sRGB数字范围的颜色。
sRGB和scRGB的比较
sRGB目标是使同一网页在不同计算机上显示时的色彩更一致,但只适用于CRT显示器。微软HD Photo项目负责人克劳说,sRGB的挑战在于它只是完整色彩空间的一个子集,当使用sRGB编码时,我们会丢掉一些色彩。
scRGB色彩空间是sRGB扩展,对于黑色和纯绿色而言,这二者没有任何分别。二者的差别就在于scRGB能够显示人眼无法分辨的颜色,其精细程度也超过了sRGB。 scRGB描述每个点所需要的位数是sRGB 2倍,甚至是4倍。不仅能够使用整数,还能够使用浮点数,提高图像的精细程度。 参考资料: 关于scRGB色彩空间
http://hi.baidu.com/cybo/blog/item/8f24ba38bbb584c1d5622597.html
第二章 基本的Brush画刷类 [App = Code + Markup]
http://www.cnblogs.com/rickiedu/archive/2007/04/04/699529.html
GDI+与WPF中的颜色简析
http://blog.csdn.net/johnsuna/archive/2007/08/27/1761061.aspx
简述WPF中的图像像素格式(PixelFormats)
http://blog.csdn.net/johnsuna/archive/2007/08/28/1762901.aspx
|