颜色矩阵

转自http://tieba.baidu.com/p/1730549463


颜色矩阵可以做到上面所讲的和颜色搭边的一切.颜色矩阵的功能是很强大的,理解起来也相对困难一点,涉及了很多色彩的专用的术语,一般的新手和一般的皮肤制作都用不上,我对色彩研究也不是很深,下面我只是略微谈下我的理解。


首先讲一下官网里面的Tips-ColorMatrixUnleased的以前的版本,这个以前的技术文档里面讲的主要是一些运算方面的东西,比较晦涩,新版本的技术文档里面就直观得多,很多美学的概念也都比较熟悉,比如对比度,亮度,饱和度等等.

基本的定义:

颜色颜色的参数是由5*5的矩阵表示的,用来改变相应的meter=image类型的meter的指定的image图片的 色彩表达 方式用的,默认的矩阵如下:

ColorMatrix1=1; 0; 0; 0; 0
ColorMatrix2=0; 1; 0; 0; 0
ColorMatrix3=0; 0; 1; 0; 0
ColorMatrix4=0; 0; 0; 1; 0
ColorMatrix5=0; 0; 0; 0; 1

主对角线上的值,从左上到右下,依次是.红,绿,蓝,alpha,和一个占位符 ,0.0表示的是none,1.0表示的是正常,矩阵中允许一种颜色的值来修改另外一种颜色(比如:红色的值可能有蓝色值的一半),最后一行(ColorMatrix5),这个偏移量会直接添加给颜色(比如:colormatrix=0.5;0;0;0;1那么红色的值就增加了50%)

我们先讲一下颜色矩阵里面的几个基本的概念:
缩放,旋转,削减,偏移,这四个,
下面是颜色矩阵的规范式 :

R G B A V
m11 m12 m13 m14 m15
m21 m22 m23 m24 m25
m31 m32 m33 m34 m35
m41 m42 m43 m44 m45
m51 m52 m53 m54 m55

下面的讲述中大写的ARGB将表示现有的颜色分量的值,小写的argb表示运算之后的值.

1. 颜色的缩放.

它就是按照给定的比例在图形像素现有的A,R,G,B各分量数值的基础上面计算新的分量的值.这比例值就是colorMatrix主对角线除了m55之外的其他四个值.
下面是一个例子:
比如某像素的RGBA的置为,255,128,64,255,而主对角线m11-m44的值分别为0.8,0.5,-1,0.5 那么新的rgba的值为:
r=R*m11=255*0.8=204
g=G%m22=128*0.5=64
b=B*m33=64*(-1)=192
a=A*m44=255*0.5=128
注意一下的是64用32位数表示为0Xffffffc0,无符号字节包含取值,取最后8位0Xc0等于192.

2.颜色的削减

一般来说图像像素R,G,B各分量安装与另一种颜色颜色分量成比例的值增加或者减少颜色分量就是削减.其实这种表述不完全,像素的A分量也是参与其中的.

以红色分量R为例子,如果安装绿色分量G进行削减,那么m21就是削减的比例,m21*G就得到了G对R的削减量,同理m31*B,m41*A就分别得到了B和A对R的削减量了,加起来就是R的总削减量.

公式为:
r=G*m21+B*m31+A*m41
g=R*m12+B*m32+A*m42
b=R*m13+G*m23+A*m43
a=R*m14+G*m24+B*m34

3.颜色的旋转
这个稍微复杂一点点,这就是在图像像素里面以其中两个分量,安装一定角度围绕另外1个分量做运算的结果,就是颜色的旋转,以红色分量R和绿色分量G围绕蓝色分量G转60度为例子
m11=cos(60)=0.5 m12=sin(60)=0.866 m21=-sin(60)=-0.866
m22=cos(60)=0.5 那么R和G分别得到的旋转量是:
r=R*m11(0.5)+G*m21(-0.866)
g=R*m12(0.866)+G*m22(0.5)
从上面看,其实就是两个分量自身的缩放量加上对方的削减量而已

4.颜色的偏移
上面的都是颜色的线性的变化,但是偏移是非线性的就是对各个分量做了一个加法而已,如下:
r=R+m51*255
g=G+m52*255
b=B+m53*255
a=A+m54*255

综上所述,那么一个实际的综合的利用了colormatrix之后的值r,g,b,a可以分别表示为:
r=R*m11+G*m21+B*m31+A*m41+m51*255
g=R*m12+G*m22+B*m32+A*m42+m52*255
b=R*m13+G*m23+B*m33+A*m43+m53*255
a=R*m14+G*m24+B*m34+A*m44+m54*255

5. 负运算
在前面就是只有对角线有值的情况下面
b的负运算值为b=B*m33=64*(-1)=192,但是加上了一个削减量和偏移量这个值会发生变化,比如加上0.1的偏移,这个问题有两个解决方案:
(1).缩放后值192的基础上面加上偏移量0.1*255等于218
(2).做连续的运算,b=B*m33=64*(-1)+255*0.1=-38(饱和处理后大小为0)
Colormatrix的方案使用的是(2)
最后声明的一点是颜色矩阵对背景色无效就是solidcolor,必须对图片使用,而且必须选定图片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值