- 浏览: 1088141 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://uh.9ria.com/link.php?url=http://bbs.9ria.com%2Fviewthread.php%3Ftid%3D22769
XYZ —> RGB
RGB —> XYZ
XYZ —> Yxy
Yxy —> XYZ
XYZ —> Hunter-Lab
Hunter-Lab —> XYZ
XYZ —> CIE-L*ab
CIE-L*ab —> XYZ
CIE-L*ab —> CIE-L*CH°
CIE-L*CH° —>CIE-L*ab
XYZ —> CIE-L*uv
CIE-L*uv —> XYZ
RGB —> HSL
HSL —> RGB
RGB —> HSV
HSV —> RGB
RGB —> CMY
CMY —> RGB
CMY —> CMYK
CMYK —> CMY
Range of HSL, HSB and HSV in popular applications
XYZ (Tristimulus) Reference values of a perfect reflecting diffuser
相关色彩模式知识:
HSV颜色空间
HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于 角度0° ,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180° 。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个 模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。
HSI颜色空间
HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析 和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。
RGB颜色空间
RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉 发出不同亮度的光线,并通过相加混合产生各种颜色;扫描仪也是通过吸收原稿经反射或透射而发送来 的光线中的R、G、B成分,并用它来表示原稿的颜色。RGB色彩空间称为与设备相关的色彩空间,因为不同 的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同 的色彩显示结果。显示器和扫描仪使用的RGB空间与CIE 1931 RGB真实三原色表色系统空间是不同的,后者 是与设备无关的颜色空间。btw:Photoshop的色彩选取器(Color Picker)。可以显示HSB、RGB、LAB和CMYK 色彩空间的每一种颜色的色彩值。
CMYK颜色空间
CMYK(cyan,magenta,yellow)颜色空间应用于印刷工业,印刷业通过青(C)、品(M)、黄(Y)三原色油墨的不同 网点面积率的叠印来表现丰富多彩的颜色和阶调,这便是三原色的CMY颜色空间。实际印刷中,一般采用青 (C)、品(M)、黄(Y)、黑(BK)四色印刷,在印刷的中间调至暗调增加黑版。当红绿蓝三原色被混合时,会产生 白色,但是当混合蓝绿色、紫红色和黄色三原色时会产生黑色。既然实际用的墨水并不会产生纯正的颜色, 黑色是包括在分开的颜色,而这模型称之为CMYK。CMYK颜色空间是和设备或者是印刷过程相关的,则工艺方法、 油墨的特性、纸张的特性等,不同的条件有不同的印刷结果。所以CMYK颜色空间称为与设备有关的表色空间。 而且,CMYK具有多值性,也就是说对同一种具有相同绝对色度的颜色,在相同的印刷过程前提下,可以用分种 CMYK数字组合来表示和印刷出来。这种特性给颜色管理带来了很多麻烦,同样也给控制带来了很多的灵活性。 在印刷过程中,必然要经过一个分色的过程,所谓分色就是将计算机中使 用的RGB颜色转换成印刷使用的CMYK 颜色。在转换过程中存在着两个复杂的问题,其一是这两个颜色空间在表现颜色的范围上不完全一样,RGB的 色域较大而CMYK则较小,因此就要进行色域压缩;其二是这两个颜色都是和具体的设备相关的,颜色本身没有 绝对性。因此就需要通过一个与设备无关的颜色空间来进行转换,即可以通过以上介绍的XYZ或LAB色空间来 进行转换。
HSL颜色空间
HSL(hue,saturation,lightness)颜色空间,这个颜色空间都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。
HSB颜色空间
HSB(hue,saturation,brightness)颜色空间,这个颜色空间都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。
Ycc颜色空间
柯达发明的颜色空间,由于PhotoCd在存储图像的时候要经过一种模式压缩,所以 PhotoCd采用了 Ycc颜色空间,Ycc空间将亮度作由它的主要组件,具有两个 单独的颜色通道,采用Ycc颜色空间 来保存图像,可以节约存储空间。
XYZ颜色空间
国际照明委员会(CIE)在进行了大量正常人视觉测量和统计,1931年建立了"标准色度观察者", 从而奠定了现代CIE标准色度学的定量基础。由于"标准色度观察者"用来标定光谱色时出现负 刺激值,计算不便,也不易理解,因此1931年CIE在RGB系统基础上,改用三个假想的原色X、Y、 Z建立了一个新的色度系统。将它匹配等能光谱的三刺激值,定名为"CIE1931 标准色度观察者 光谱三刺激值",简称为"CIE1931标准色度观察者"。这一系统叫做"CIE1931标准色度系统"或称为" 2° 视场XYZ色度系统"。CIEXYZ颜色空间稍加变换就可得到Yxy色彩空间,其中Y取三刺激值中Y的值, 表示亮度,x、y反映颜色的色度特性。定义如下:在色彩管理中,选择与设备无关的颜色空间是 十分重要的,与设备无关的颜色空间由国际照明委员会(CIE)制定,包括CIEXYZ和CIELAB两个标准。 它们包含了人眼所能辨别的全部颜色。而且,CIEYxy测色制的建立给定量的确定颜色创造了条件。 但是,在这一空间中,两种不同颜色之间的距离值并不能正确地反映人们色彩感觉差别的大小, 也就是说在CIEYxy色厦图中,在 不同的位置不同方向上颜色的宽容量是不同的,这就是Yxy颜色空间 的不均匀性。这一缺陷的存在,使得在Yxy及XYZ空间不能直观地评价颜色。
Lab 颜色空间
Lab颜色空间是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间 中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。 由于Lab的色彩空间要 比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能 得以影射。Lab颜色空间取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表兰色(a,b)有L=116f(y)-16, a=500[f(x/0.982)-f(y)], b=200[f(y)-f(z/1.183 )];其中: f(x)=7.787x+0.138, x<0.008856; f(x)=(x)1/3,x>0.008856
YUV颜色空间
在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(点耦合器件)摄像机,它把摄得的彩色图像 信号,经分色、分别放大校正得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y、B-Y, 最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV色彩空间。 采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量, 那么这样表示的图就是黑白灰度图。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机 的兼容问题,使黑白电视机也能接收彩色信号。根据美国国家电视制式委员会,NTSC制式的标准,当白光的 亮度用Y来表示时,它和红、绿、蓝三色光的关系可用如下式的方程描述:Y=0.3R+0.59G+0.11B 这就是常用 的亮度公式。色差U、V是由B-Y、R-Y按不同比例压缩而成的。如果要由YUV空间转化成RGB空间,只要进行 相反的逆运算即可。与YUV色彩空间类似的还有Lab色彩空间,它也是用亮度和色差来描述色彩分量,其中L为 亮度、a和b分别为各色差分量。
XYZ —> RGB
var_X = X / 100 //X from 0 to 95.047 (Observer = 2°, Illuminant = D65) var_Y = Y / 100 //Y from 0 to 100.000 var_Z = Z / 100 //Z from 0 to 108.883 var_R = var_X * 3.2406 + var_Y * -1.5372 + var_Z * -0.4986 var_G = var_X * -0.9689 + var_Y * 1.8758 + var_Z * 0.0415 var_B = var_X * 0.0557 + var_Y * -0.2040 + var_Z * 1.0570 if ( var_R > 0.0031308 ) var_R = 1.055 * ( var_R ^ ( 1 / 2.4 ) ) - 0.055 else var_R = 12.92 * var_R if ( var_G > 0.0031308 ) var_G = 1.055 * ( var_G ^ ( 1 / 2.4 ) ) - 0.055 else var_G = 12.92 * var_G if ( var_B > 0.0031308 ) var_B = 1.055 * ( var_B ^ ( 1 / 2.4 ) ) - 0.055 else var_B = 12.92 * var_B R = var_R * 255 G = var_G * 255 B = var_B * 255
RGB —> XYZ
var_R = ( R / 255 ) //R from 0 to 255 var_G = ( G / 255 ) //G from 0 to 255 var_B = ( B / 255 ) //B from 0 to 255 if ( var_R > 0.04045 ) var_R = ( ( var_R + 0.055 ) / 1.055 ) ^ 2.4 else var_R = var_R / 12.92 if ( var_G > 0.04045 ) var_G = ( ( var_G + 0.055 ) / 1.055 ) ^ 2.4 else var_G = var_G / 12.92 if ( var_B > 0.04045 ) var_B = ( ( var_B + 0.055 ) / 1.055 ) ^ 2.4 else var_B = var_B / 12.92 var_R = var_R * 100 var_G = var_G * 100 var_B = var_B * 100 //Observer. = 2°, Illuminant = D65 X = var_R * 0.4124 + var_G * 0.3576 + var_B * 0.1805 Y = var_R * 0.2126 + var_G * 0.7152 + var_B * 0.0722 Z = var_R * 0.0193 + var_G * 0.1192 + var_B * 0.9505
XYZ —> Yxy
//X from 0 to 95.047 Observer. = 2°, Illuminant = D65 //Y from 0 to 100.000 //Z from 0 to 108.883 Y = Y x = X / ( X + Y + Z ) y = Y / ( X + Y + Z )
Yxy —> XYZ
//Y from 0 to 100 //x from 0 to 1 //y from 0 to 1 X = x * ( Y / y ) Y = Y Z = ( 1 - x - y ) * ( Y / y )
XYZ —> Hunter-Lab
(H)L = 10 * sqrt( Y ) (H)a = 17.5 * ( ( ( 1.02 * X ) - Y ) / sqrt( Y ) ) (H)b = 7 * ( ( Y - ( 0.847 * Z ) ) / sqrt( Y ) )
Hunter-Lab —> XYZ
var_Y = (H)L / 10 var_X = (H)a / 17.5 * (H)L / 10 var_Z = (H)b / 7 * (H)L / 10 Y = var_Y ^ 2 X = ( var_X + Y ) / 1.02 Z = -( var_Z - Y ) / 0.847
XYZ —> CIE-L*ab
var_X = X / ref_X //ref_X = 95.047 Observer= 2°, Illuminant= D65 var_Y = Y / ref_Y //ref_Y = 100.000 var_Z = Z / ref_Z //ref_Z = 108.883 if ( var_X > 0.008856 ) var_X = var_X ^ ( 1/3 ) else var_X = ( 7.787 * var_X ) + ( 16 / 116 ) if ( var_Y > 0.008856 ) var_Y = var_Y ^ ( 1/3 ) else var_Y = ( 7.787 * var_Y ) + ( 16 / 116 ) if ( var_Z > 0.008856 ) var_Z = var_Z ^ ( 1/3 ) else var_Z = ( 7.787 * var_Z ) + ( 16 / 116 ) CIE-L* = ( 116 * var_Y ) - 16 CIE-a* = 500 * ( var_X - var_Y ) CIE-b* = 200 * ( var_Y - var_Z )
CIE-L*ab —> XYZ
var_Y = ( CIE-L* + 16 ) / 116 var_X = CIE-a* / 500 + var_Y var_Z = var_Y - CIE-b* / 200 if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3 else var_Y = ( var_Y - 16 / 116 ) / 7.787 if ( var_X^3 > 0.008856 ) var_X = var_X^3 else var_X = ( var_X - 16 / 116 ) / 7.787 if ( var_Z^3 > 0.008856 ) var_Z = var_Z^3 else var_Z = ( var_Z - 16 / 116 ) / 7.787 X = ref_X * var_X //ref_X = 95.047 Observer= 2°, Illuminant= D65 Y = ref_Y * var_Y //ref_Y = 100.000 Z = ref_Z * var_Z //ref_Z = 108.883
CIE-L*ab —> CIE-L*CH°
var_H = arc_tangent( CIE-b*, CIE-a* ) //Quadrant by signs if ( var_H > 0 ) var_H = ( var_H / PI ) * 180 else var_H = 360 - ( abs( var_H ) / PI ) * 180 CIE-L* = CIE-L* CIE-C* = sqrt( CIE-a* ^ 2 + CIE-b* ^ 2 ) CIE-H° = var_H
CIE-L*CH° —>CIE-L*ab
//CIE-H° from 0 to 360° CIE-L* = CIE-L* CIE-a* = cos( degree_2_radian( CIE-H° ) ) * CIE-C* CIE-b* = sin( degree_2_radian( CIE-H° ) ) * CIE-C*
XYZ —> CIE-L*uv
var_U = ( 4 * X ) / ( X + ( 15 * Y ) + ( 3 * Z ) ) var_V = ( 9 * Y ) / ( X + ( 15 * Y ) + ( 3 * Z ) ) var_Y = Y / 100 if ( var_Y > 0.008856 ) var_Y = var_Y ^ ( 1/3 ) else var_Y = ( 7.787 * var_Y ) + ( 16 / 116 ) ref_X = 95.047 //Observer= 2°, Illuminant= D65 ref_Y = 100.000 ref_Z = 108.883 ref_U = ( 4 * ref_X ) / ( ref_X + ( 15 * ref_Y ) + ( 3 * ref_Z ) ) ref_V = ( 9 * ref_Y ) / ( ref_X + ( 15 * ref_Y ) + ( 3 * ref_Z ) ) CIE-L* = ( 116 * var_Y ) - 16 CIE-u* = 13 * CIE-L* * ( var_U - ref_U ) CIE-v* = 13 * CIE-L* * ( var_V - ref_V )
CIE-L*uv —> XYZ
var_Y = ( CIE-L* + 16 ) / 116 if ( var_Y^3 > 0.008856 ) var_Y = var_Y^3 else var_Y = ( var_Y - 16 / 116 ) / 7.787 ref_X = 95.047 //Observer= 2°, Illuminant= D65 ref_Y = 100.000 ref_Z = 108.883 ref_U = ( 4 * ref_X ) / ( ref_X + ( 15 * ref_Y ) + ( 3 * ref_Z ) ) ref_V = ( 9 * ref_Y ) / ( ref_X + ( 15 * ref_Y ) + ( 3 * ref_Z ) ) var_U = CIE-u* / ( 13 * CIE-L* ) + ref_U var_V = CIE-v* / ( 13 * CIE-L* ) + ref_V Y = var_Y * 100 X = - ( 9 * Y * var_U ) / ( ( var_U - 4 ) * var_V - var_U * var_V ) Z = ( 9 * Y - ( 15 * var_V * Y ) - ( var_V * X ) ) / ( 3 * var_V )
RGB —> HSL
var_R = ( R / 255 ) //RGB from 0 to 255 var_G = ( G / 255 ) var_B = ( B / 255 ) var_Min = min( var_R, var_G, var_B ) //Min. value of RGB var_Max = max( var_R, var_G, var_B ) //Max. value of RGB del_Max = var_Max - var_Min //Delta RGB value L = ( var_Max + var_Min ) / 2 if ( del_Max == 0 ) //This is a gray, no chroma... { H = 0 //HSL results from 0 to 1 S = 0 } else //Chromatic data... { if ( L < 0.5 ) S = del_Max / ( var_Max + var_Min ) else S = del_Max / ( 2 - var_Max - var_Min ) del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max if ( var_R == var_Max ) H = del_B - del_G else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R if ( H < 0 ) ; H += 1 if ( H > 1 ) ; H -= 1 }
HSL —> RGB
if ( S == 0 ) //HSL from 0 to 1 { R = L * 255 //RGB results from 0 to 255 G = L * 255 B = L * 255 } else { if ( L < 0.5 ) var_2 = L * ( 1 + S ) else var_2 = ( L + S ) - ( S * L ) var_1 = 2 * L - var_2 R = 255 * Hue_2_RGB( var_1, var_2, H + ( 1 / 3 ) ) G = 255 * Hue_2_RGB( var_1, var_2, H ) B = 255 * Hue_2_RGB( var_1, var_2, H - ( 1 / 3 ) ) } -------------------------------------------------------------------------------- Hue_2_RGB( v1, v2, vH ) //Function Hue_2_RGB { if ( vH < 0 ) vH += 1 if ( vH > 1 ) vH -= 1 if ( ( 6 * vH ) < 1 ) return ( v1 + ( v2 - v1 ) * 6 * vH ) if ( ( 2 * vH ) < 1 ) return ( v2 ) if ( ( 3 * vH ) < 2 ) return ( v1 + ( v2 - v1 ) * ( ( 2 / 3 ) - vH ) * 6 ) return ( v1 ) }
RGB —> HSV
var_R = ( R / 255 ) //RGB from 0 to 255 var_G = ( G / 255 ) var_B = ( B / 255 ) var_Min = min( var_R, var_G, var_B ) //Min. value of RGB var_Max = max( var_R, var_G, var_B ) //Max. value of RGB del_Max = var_Max - var_Min //Delta RGB value V = var_Max if ( del_Max == 0 ) //This is a gray, no chroma... { H = 0 //HSV results from 0 to 1 S = 0 } else //Chromatic data... { S = del_Max / var_Max del_R = ( ( ( var_Max - var_R ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_G = ( ( ( var_Max - var_G ) / 6 ) + ( del_Max / 2 ) ) / del_Max del_B = ( ( ( var_Max - var_B ) / 6 ) + ( del_Max / 2 ) ) / del_Max if ( var_R == var_Max ) H = del_B - del_G else if ( var_G == var_Max ) H = ( 1 / 3 ) + del_R - del_B else if ( var_B == var_Max ) H = ( 2 / 3 ) + del_G - del_R if ( H < 0 ) ; H += 1 if ( H > 1 ) ; H -= 1 }
HSV —> RGB
if ( S == 0 ) //HSV from 0 to 1 { R = V * 255 G = V * 255 B = V * 255 } else { var_h = H * 6 if ( var_h == 6 ) var_h = 0 //H must be < 1 var_i = int( var_h ) //Or ... var_i = floor( var_h ) var_1 = V * ( 1 - S ) var_2 = V * ( 1 - S * ( var_h - var_i ) ) var_3 = V * ( 1 - S * ( 1 - ( var_h - var_i ) ) ) if ( var_i == 0 ) { var_r = V ; var_g = var_3 ; var_b = var_1 } else if ( var_i == 1 ) { var_r = var_2 ; var_g = V ; var_b = var_1 } else if ( var_i == 2 ) { var_r = var_1 ; var_g = V ; var_b = var_3 } else if ( var_i == 3 ) { var_r = var_1 ; var_g = var_2 ; var_b = V } else if ( var_i == 4 ) { var_r = var_3 ; var_g = var_1 ; var_b = V } else { var_r = V ; var_g = var_1 ; var_b = var_2 } R = var_r * 255 //RGB results from 0 to 255 G = var_g * 255 B = var_b * 255 }
RGB —> CMY
//RGB values from 0 to 255 //CMY results from 0 to 1 C = 1 - ( R / 255 ) M = 1 - ( G / 255 ) Y = 1 - ( B / 255 )
CMY —> RGB
//CMY values from 0 to 1 //RGB results from 0 to 255 R = ( 1 - C ) * 255 G = ( 1 - M ) * 255 B = ( 1 - Y ) * 255
CMY —> CMYK
//CMYK and CMY values from 0 to 1 var_K = 1 if ( C < var_K ) var_K = C if ( M < var_K ) var_K = M if ( Y < var_K ) var_K = Y if ( var_K == 1 ) { //Black C = 0 M = 0 Y = 0 } else { C = ( C - var_K ) / ( 1 - var_K ) M = ( M - var_K ) / ( 1 - var_K ) Y = ( Y - var_K ) / ( 1 - var_K ) } K = var_K
CMYK —> CMY
//CMYK and CMY values from 0 to 1 C = ( C * ( 1 - K ) + K ) M = ( M * ( 1 - K ) + K ) Y = ( Y * ( 1 - K ) + K )
Range of HSL, HSB and HSV in popular applications
XYZ (Tristimulus) Reference values of a perfect reflecting diffuser
相关色彩模式知识:
HSV颜色空间
HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V=1. 它包含RGB模型中的R=1,G=1,B=1 三个面,所代表的颜色较亮。色彩H由绕V轴的旋转角给定。红色对应于 角度0° ,绿色对应于角度120°,蓝色对应于角度240°。在HSV颜色模型中,每一种颜色和它的补色相差180° 。 饱和度S取值从0到1,所以圆锥顶面的半径为1。HSV颜色模型所代表的颜色域是CIE色度图的一个子集,这个 模型中饱和度为百分之百的颜色,其纯度一般小于百分之百。在圆锥的顶点(即原点)处,V=0,H和S无定义, 代表黑色。圆锥的顶面中心处S=0,V=1,H无定义,代表白色。从该点到原点代表亮度渐暗的灰色,即具有不同 灰度的灰色。对于这些点,S=0,H的值无定义。可以说,HSV模型中的V轴对应于RGB颜色空间中的主对角线。 在圆锥顶面的圆周上的颜色,V=1,S=1,这种颜色是纯色。HSV模型对应于画家配色的方法。画家用改变色浓和 色深的方法从某种纯色获得不同色调的颜色,在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时 加入不同比例的白色,黑色即可获得各种不同的色调。
HSI颜色空间
HSI色彩空间是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation或Chroma)和亮度 (Intensity或Brightness)来描述色彩。HSI色彩空间可以用一个圆锥空间模型来描述。用这种 描述HIS色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。 通常把色调和饱和度通称为色度,用来表示颜色的类别与深浅程度。由于人的视觉对亮度的敏感 程度远强于对颜色浓淡的敏感程度,为了便于色彩处理和识别,人的视觉系统经常采用HSI色彩空间, 它比RGB色彩空间更符合人的视觉特性。在图像处理和计算机视觉中大量算法都可在HSI色彩空间中 方便地使用,它们可以分开处理而且是相互独立的。因此,在HSI色彩空间可以大大简化图像分析 和处理的工作量。HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着 转换关系。
RGB颜色空间
RGB(red,green,blue)颜色空间最常用的用途就是显示器系统,彩色阴极射线管,彩色光栅图形的显示器 都使用R、G、B数值来驱动R、G、B 电子枪发射电子,并分别激发荧光屏上的R、G、B三种颜色的荧光粉 发出不同亮度的光线,并通过相加混合产生各种颜色;扫描仪也是通过吸收原稿经反射或透射而发送来 的光线中的R、G、B成分,并用它来表示原稿的颜色。RGB色彩空间称为与设备相关的色彩空间,因为不同 的扫描仪扫描同一幅图像,会得到不同色彩的图像数据;不同型号的显示器显示同一幅图像,也会有不同 的色彩显示结果。显示器和扫描仪使用的RGB空间与CIE 1931 RGB真实三原色表色系统空间是不同的,后者 是与设备无关的颜色空间。btw:Photoshop的色彩选取器(Color Picker)。可以显示HSB、RGB、LAB和CMYK 色彩空间的每一种颜色的色彩值。
CMYK颜色空间
CMYK(cyan,magenta,yellow)颜色空间应用于印刷工业,印刷业通过青(C)、品(M)、黄(Y)三原色油墨的不同 网点面积率的叠印来表现丰富多彩的颜色和阶调,这便是三原色的CMY颜色空间。实际印刷中,一般采用青 (C)、品(M)、黄(Y)、黑(BK)四色印刷,在印刷的中间调至暗调增加黑版。当红绿蓝三原色被混合时,会产生 白色,但是当混合蓝绿色、紫红色和黄色三原色时会产生黑色。既然实际用的墨水并不会产生纯正的颜色, 黑色是包括在分开的颜色,而这模型称之为CMYK。CMYK颜色空间是和设备或者是印刷过程相关的,则工艺方法、 油墨的特性、纸张的特性等,不同的条件有不同的印刷结果。所以CMYK颜色空间称为与设备有关的表色空间。 而且,CMYK具有多值性,也就是说对同一种具有相同绝对色度的颜色,在相同的印刷过程前提下,可以用分种 CMYK数字组合来表示和印刷出来。这种特性给颜色管理带来了很多麻烦,同样也给控制带来了很多的灵活性。 在印刷过程中,必然要经过一个分色的过程,所谓分色就是将计算机中使 用的RGB颜色转换成印刷使用的CMYK 颜色。在转换过程中存在着两个复杂的问题,其一是这两个颜色空间在表现颜色的范围上不完全一样,RGB的 色域较大而CMYK则较小,因此就要进行色域压缩;其二是这两个颜色都是和具体的设备相关的,颜色本身没有 绝对性。因此就需要通过一个与设备无关的颜色空间来进行转换,即可以通过以上介绍的XYZ或LAB色空间来 进行转换。
HSL颜色空间
HSL(hue,saturation,lightness)颜色空间,这个颜色空间都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。
HSB颜色空间
HSB(hue,saturation,brightness)颜色空间,这个颜色空间都是用户台式机图形程序的颜色表示, 用六角形锥体表示自己的颜色模型。
Ycc颜色空间
柯达发明的颜色空间,由于PhotoCd在存储图像的时候要经过一种模式压缩,所以 PhotoCd采用了 Ycc颜色空间,Ycc空间将亮度作由它的主要组件,具有两个 单独的颜色通道,采用Ycc颜色空间 来保存图像,可以节约存储空间。
XYZ颜色空间
国际照明委员会(CIE)在进行了大量正常人视觉测量和统计,1931年建立了"标准色度观察者", 从而奠定了现代CIE标准色度学的定量基础。由于"标准色度观察者"用来标定光谱色时出现负 刺激值,计算不便,也不易理解,因此1931年CIE在RGB系统基础上,改用三个假想的原色X、Y、 Z建立了一个新的色度系统。将它匹配等能光谱的三刺激值,定名为"CIE1931 标准色度观察者 光谱三刺激值",简称为"CIE1931标准色度观察者"。这一系统叫做"CIE1931标准色度系统"或称为" 2° 视场XYZ色度系统"。CIEXYZ颜色空间稍加变换就可得到Yxy色彩空间,其中Y取三刺激值中Y的值, 表示亮度,x、y反映颜色的色度特性。定义如下:在色彩管理中,选择与设备无关的颜色空间是 十分重要的,与设备无关的颜色空间由国际照明委员会(CIE)制定,包括CIEXYZ和CIELAB两个标准。 它们包含了人眼所能辨别的全部颜色。而且,CIEYxy测色制的建立给定量的确定颜色创造了条件。 但是,在这一空间中,两种不同颜色之间的距离值并不能正确地反映人们色彩感觉差别的大小, 也就是说在CIEYxy色厦图中,在 不同的位置不同方向上颜色的宽容量是不同的,这就是Yxy颜色空间 的不均匀性。这一缺陷的存在,使得在Yxy及XYZ空间不能直观地评价颜色。
Lab 颜色空间
Lab颜色空间是由CIE(国际照明委员会)制定的一种色彩模式。自然界中任何一点色都可以在Lab空间 中表达出来,它的色彩空间比RGB空间还要大。另外,这种模式是以数字化方式来描述人的视觉感应, 与设备无关,所以它弥补了RGB和CMYK模式必须依赖于设备色彩特性的不足。 由于Lab的色彩空间要 比RGB模式和CMYK模式的色彩空间大。这就意味着RGB以及CMYK所能描述的色彩信息在Lab空间中都能 得以影射。Lab颜色空间取坐标Lab,其中L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色, 负端代表兰色(a,b)有L=116f(y)-16, a=500[f(x/0.982)-f(y)], b=200[f(y)-f(z/1.183 )];其中: f(x)=7.787x+0.138, x<0.008856; f(x)=(x)1/3,x>0.008856
YUV颜色空间
在现代彩色电视系统中,通常采用三管彩色摄像机或彩色CCD(点耦合器件)摄像机,它把摄得的彩色图像 信号,经分色、分别放大校正得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y、B-Y, 最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这就是我们常用的YUV色彩空间。 采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有Y信号分量而没有U、V分量, 那么这样表示的图就是黑白灰度图。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机 的兼容问题,使黑白电视机也能接收彩色信号。根据美国国家电视制式委员会,NTSC制式的标准,当白光的 亮度用Y来表示时,它和红、绿、蓝三色光的关系可用如下式的方程描述:Y=0.3R+0.59G+0.11B 这就是常用 的亮度公式。色差U、V是由B-Y、R-Y按不同比例压缩而成的。如果要由YUV空间转化成RGB空间,只要进行 相反的逆运算即可。与YUV色彩空间类似的还有Lab色彩空间,它也是用亮度和色差来描述色彩分量,其中L为 亮度、a和b分别为各色差分量。
发表评论
-
一个基于STARLING的TOWER塔防游戏
2012-07-24 15:27 0一个基于STARLING的TOWER塔防游戏 -
HttpStatusConfig --一个HTTP 协议返回的 解析说明类
2012-04-18 16:40 0package guwanyuan.qicool.game ... -
水果忍者鼠标跟随特效制作[转载]
2012-03-01 16:06 2456实现这效果其实比较简单,主要是思路~! package ... -
ColorMatrixFilter - 获得相应颜色的色调 函数
2012-02-08 23:03 0/**获得相应颜色的色调的滤镜**/ public sta ... -
[教程] 路点导航(Waypoint Navigation)
2011-12-31 00:51 0前言:这个不难,所以知道的童鞋不要喷,不知道的童鞋也不要怕,要 ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4656使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
弹弹堂测试
2011-12-08 04:21 0弹弹堂测试弹弹堂测试 -
一些DEMO
2011-11-28 17:42 0一些DEMO一些DEMO -
[转]三次贝尔曲线
2011-11-10 01:09 1931http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2943先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
五子棋算法详解
2011-10-31 04:14 0五子棋算法详解五子棋算法详解五子棋算法详解 -
[转]服务器端ActionScript语言参考
2011-10-31 00:29 0服务器端ActionScript语言参考 -
2个加载作用
2011-10-24 22:14 1873第一话:加载Base64 encoded string 通过 ... -
[转] 一种完全没有边缘痕迹的渐变AS做法
2011-10-23 00:21 1888http://bbs.9ria.com/viewthread. ... -
[心得] localToGlobal 和 globalToLocal 的理解
2011-10-20 03:10 0http://bbs.9ria.com/viewthread. ... -
翻译: Flash文本引擎, 第二部分: 交互
2011-10-20 02:34 0http://www.riadev.com/flex-thre ... -
翻译: Flash文本引擎, 第一部分: 概述
2011-10-20 02:33 0http://www.riadev.com/flex-thre ... -
珍宝探索 AS3-过关类小游戏
2011-10-13 02:15 0珍宝探索 AS3-过关类小游戏 -
设计模式(23种设计模式.AS3实现)
2011-10-13 02:04 0设计模式(23种设计模式.AS3实现) -
图片相册代码_photo_gallery
2011-10-12 11:17 0图片相册代码_photo_gallery
相关推荐
### 图像格式转换算法原理 #### 一、引言 图像作为多媒体技术中不可或缺的信息媒介,在数字通信、网络传输及各类应用软件中扮演着至关重要的角色。然而,图像的多种存储格式及其庞大的数据量给多媒体技术的发展...
本主题将深入探讨如何读取使用CMYK色彩模式存储的Tiff文件中的图像数据,并将其转换为更常见的RGB色彩模式。 TIFF(Tagged Image File Format)是一种灵活的位图图像格式,广泛用于印刷和扫描领域,因为它支持多种...
在建立设备特征化BP神经网络模型时,需要考虑两个方面的因素:一是确立色彩描述语言,也就是确立使用的色彩模式;二是因为色彩空间的范围不同,需要实现不同的色彩空间之间的映射。BP神经网络算法可以应用于设备特征...
在计算机图形学中,颜色表示通常分为两种主要的模型...总之,理解颜色模型的基本原理和转换算法对于进行图像处理或图形设计非常重要。通过Java编程,我们可以轻松地在RGB和CMYK之间进行转换,满足不同的应用场景需求。
本篇我们将深入探讨Bayer图像到彩色图像的转换算法,以及如何在VC++环境下实现这一过程。 一、Bayer滤镜阵列 Bayer滤镜阵列通常采用RGGB(红-绿-绿-蓝)或者BGGR(蓝-绿-绿-红)的排列方式,其中G(绿色)占据多数...
在图像处理领域,转换图像颜色模式是常见的任务之一。本资料包主要介绍如何使用MATLAB进行灰度图像到彩色图像的转换。MATLAB作为一个强大的数值计算和数据可视化平台,提供了丰富的图像处理工具箱,使得这类操作变得...
色彩空间转换通常包括两个步骤:首先是色彩描述语言的选择,即确定色彩模式;其次是解决色彩空间大小(色域)不一致所带来的映射问题。为了解决这些问题,研究人员提出了多种转换方法,包括多项式回归法、模型法、3D...
Adobe的RGB与CMYK色彩转换公式是为了在不同的色彩空间之间进行转换,尤其是在需要将图像转换为适合印刷的CMYK色彩模式时。色彩空间是用于描述颜色的一个数学模型,它们的转换通常很复杂,因为不同色彩空间的设计初衷...
CMYK色彩模式基于减色原理,适合表示油墨在纸张上的混合效果。 2. **CMYK到RGB转换**:反之,也有函数可以将CMYK值转换为RGB值,这在需要在屏幕上显示颜色时非常有用。 3. **其他色彩模型转换**:除了上述两种基本...
本主题主要关注的是YUV色彩空间中的NV12格式与YUV420、YUV422之间的转换,以及相关的图像处理算法,如锐化和自动对比度调整。 首先,让我们了解YUV色彩空间。YUV是一种广泛用于视频编码和图像处理的颜色模型,它将...
灰度转换是通过特定算法来实现的,这些算法主要基于人眼对不同颜色敏感性的权重分配。最常见的灰度转换方法是RGB平均法,它通过将红、绿、蓝(RGB)三个通道的像素值平均来得到新的灰度值。公式如下: 灰度值 = 0.21R ...
这个工具能够帮助用户轻松地在RGB、HSV、CMYK、HEX等色彩模式之间进行转换,极大地提高了工作效率。 RGB(Red, Green, Blue)是基于加法混色的色彩模型,广泛应用于显示器显示。红、绿、蓝三种颜色的数值组合可以...
这种方法虽然简单易用,但可能会在某些颜色区域产生误差,尤其是在颜色边界或复杂色彩模式下。 本程序提出的新型转换方法则放弃了多项式回归,可能采用了更先进的算法,如神经网络、查找表或者基于统计分析的方法。...
总结来说,PHP中的RGB到CMYK颜色模式转换是一个涉及图像处理库、色彩空间转换和ICC文件的过程。理解和正确使用这些工具对于保证色彩在不同平台和媒介上的一致性至关重要。而压缩包"PHPRGB图片模式转换CMYK模式图片...
在进行图像分析或算法开发时,有时需要在这两者之间进行转换,以便于利用各自的优势。本篇文章将深入探讨QImage与HObject之间的转换方法及其在多通道图像处理中的应用。 首先,QImage是Qt框架中用于处理图像的基础...
【标题】:“彩色图像色彩...总的来说,彩色图像色彩聚类算法在图像处理、模式识别、数据分析等领域有着广泛的应用。通过理解和优化这一过程,可以实现更高效、更精确的图像色彩处理,有助于提高图像分析和识别的性能。
2. **色彩深度和色彩空间**:BMP支持从8位到32位的色彩深度,包含灰度、索引颜色、真彩色等多种色彩模式。转换时需要处理这些差异,确保色彩的准确还原。 3. **压缩算法**:BMP文件通常无损,而JPEG、PNG等格式则...