Android对于图片的处理,最常使用的数据结构是位图——Bitmap,它包含了一张图片的所有的数据。整个图片都是有点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。二颜色值——ARGB,分别对应透明度、红、绿、蓝、这四个通道分量,它们共同决定了每个像素点显示的颜色,图(1)就是显示了自然界中的色光三原色。
(1)色光三原色
一、色彩矩阵分析
在色彩处理中,通常使用以下三个角度来描述一个图像。
● 色调——物体的传播颜色
● 饱和度——颜色的纯度,从0(灰)到100%(饱和)来进行描述
● 亮度——颜色的相对明暗程度
而在Android中,系统使用一个颜色矩阵——ColrMatrix,来处理图像的这些色彩效果。Android中的颜色矩阵是一个4*5的数字矩阵,它用来对图片的色彩进行处理。而对于每个像素点,都有一个颜色分量矩阵来保存颜色的TGNA值,如图(2)所示。
图中矩阵A就是一个4*5的颜色矩阵。在Android中,它会以一维数组的形式来存储[a,b,c,d,e,f,g,h,i,j,k,l,m,n,op,q,r,s,t],而C则是一个颜色矩阵的分量。在处理图像时,使用矩阵乘法运算AC来处理颜色分量矩阵,如图(3)所示。
根据前面对矩阵A、C的定义,通过矩阵乘法运算法则,可以得到如图(4)所示的运算过程。
矩阵运算的乘法计算公式相信大家在线性代数课程中都学过,计算过程如下所示。
R1 = a * R + b * G + c * B + d * A + e;
G1 = f * R + g * G + h * B + i * A + j;
B1 = k * R + l * G + m * B + n * A +