转自: http://blog.sina.com.cn/s/blog_49b35d540100aks4.html

ColorMatrixFilter--颜色矩阵滤镜(flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法。ColorMatrixFilter为 4行5列的多维矩阵(20个元素的数组)。图1是与ColorMatrixFilter等同的矩阵:

图1. 与ColorMatrixFilter等同的矩阵

红,绿,蓝通道的值由如下所示计算方法所决定:
    CODE:

redResult   = a[0] * srcR + a[1] * srcG + a[2] * srcB + a[3] * srcA + a[4]
greenResult = a[5] * srcR + a[6] * srcG + a[7] * srcB + a[8] * srcA + a[9]
blueResult  = a[10] * srcR + a[11] * srcG + a[12] * srcB + a[13] * srcA + a[14]
alphaResult = a[15] * srcR + a[16] * srcG + a[17] * srcB + a[18] * srcA + a[19]

可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(Alpha)通道值。同样可以看出首四栏值是与红,绿,蓝,alpha通道值的乘积,而第五栏的值分别是和(偏移量)。注意每行的源值和结果值都是在0到255的区间内。因此即使各个通道的值小于0或大于255都会被强制到该区间内。我来举些例子说明它的原理。
    如果你想在红色通道加100(偏移量),将a[4]设置为100,如图2:

图2. 红色值增加100

如果想使绿色通道加倍,将a[6]设为2,如图3:

图3. 绿色加倍

如果你要使结果图像中的蓝色与原图的红色数量相等,将a[10]设为1, a[12]设为0 ,如图4:

图4. 红色决定蓝色值

改变图像的亮度,你需要在每个颜色通道的值改变同样的数量。最简单的途径是在每个通道都设置相同的偏移量。偏移量为正时可以增加亮度为负时可以减小亮度。图5是一个增加亮度的例子:

图5. 增加亮度

你也可以通过将每个颜色通道与一个值相乘按比例的改变亮度,大于1的增加亮度小于1减小亮度。
按照原理,将图像转换为灰度图,你需要将每个通道的部分设为等值。因为有三个通道,你可以将每个通道乘以0.33并将它们相加得到结果值。如图6:

图6.灰度图矩阵

由于不同颜色通道的相对屏幕发光度,但是确实有特殊的提供更加真实的灰度图的“亮度系数”值。例如在PS里创建一个纯绿色块然后把它放在一个纯蓝色块,然后将图像灰度化,你会看到原来绿色的地方的灰色会比原来蓝色的区域要亮。
    在Flash里使用这些矩阵,创建一个ColorMatrixFilter的实例然后将它加入到一个影片剪辑(MovieClip)实例上。下面是一个使绿色加倍的例子:
    CODE:

import flash.filters.ColorMatrixFilter;
var mat:Array = [ 1,0,0,0,0,
                  0,2,0,0,0,
                  0,0,1,0,0,
                  0,0,0,1,0 ];
var colorMat:ColorMatrixFilter = new ColorMatrixFilter(mat);
mc.filters = [colorMat];

ColorMatrixFilter与一个已知的矩阵使用,你可以完成除了亮度和灰度之外复杂的颜色调整。调整对比度,饱和度和色相等。
    下面是Adobe官方提供的一个ColorMatrixFilter操作图像的在线演示图:

转载于:https://www.cnblogs.com/yjmyzz/archive/2010/10/16/1852878.html

[转]ColorMatrixFilter--颜色矩阵滤镜相关推荐

  1. ColorMatrixFilter 色彩矩阵滤镜

    包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter  BitmapFilter  Object 使用 ...

  2. ColorMatrixFilter色彩矩阵滤镜

    一.构造方法: ColorMatrixFilter(matrix:Array = null): 二.matrix属性详解: 注意:这里的matrix并不是Matrix的实例,其实是一个Array: m ...

  3. Android 颜色矩阵 滤镜 ColorMatrix (复古,蓝调,淡雅,传统,胶片,怀旧,浪漫等)你想要的滤镜

    首先我来给大家展示一下我的整体效果: 我们要用到的是ColorMatrix,ColorMatrix的三个方法: setRotate:调整色相 setSaturation:调整色彩饱和度 setScal ...

  4. Egret中颜色矩阵和滤镜的使用与介绍

    一:颜色矩阵 颜色矩阵说明 颜色矩阵数据说明: 实际的颜色值由下面的公式决定: redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + ...

  5. [AS3][Matrix][利用颜色矩阵进行颜色变换]

    import  flash.filter.ColorMatrixFilter; 颜色矩阵:var arr:Array ; R   G   B   A  Off R   1    0   0   0   ...

  6. 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )

    文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...

  7. GdiPlus[59]: 图像(十一) IGPImageAttributes 之颜色矩阵(TGPColorMatrix)变换

    IGPMatrix 矩阵 是个接口, 要通过 TGPMatrix 实例化后使用, 其内置了很多方法和属性. TGPColorMatrix 只是一个结构体, 除了矩阵数据(5*5)外, 它只有一个方法: ...

  8. matlab_颜色矩阵三原色

    matlab绘图时,通过plottools调出的面板可以可视化选择曲线散点等图像的颜色,但这种方法只是人工肉眼识别,其实我们可以用三原色矩阵来控制图像颜色: 其中,纯红是[1 0 0],纯绿是[0 1 ...

  9. ColorMatrix颜色矩阵让图片千变万化

    在自定义控件中最熟悉的就是Paint,Canvas,path,Matrix等,要想炫酷效果这几个类必不可少.Paint.setColorFilter(ColorFilter filter):设置颜色过 ...

最新文章

  1. 实现Ant Design 自定义表单组件
  2. linux检查正则表达式,正则表达式及Linux文本检查工具
  3. C语言输入一行整数(OJ输入格式)
  4. 配置Java网络应用程序的开发框架
  5. 【Java核心面试宝典(1),程序员Javaweb源码
  6. 转载:EBS上用过的一些接口表整理信息
  7. 找出数组中出现次数超过一半的数
  8. 公司内网机器vm ubuntu proxy 设置
  9. java 四舍五入保留小数
  10. 使用 Android 开发 MQTT 客户端
  11. DreamScene for Windows 7梦幻桌面使用教程
  12. 怎样解决Mac电脑键盘上的大写锁定键灯不亮?
  13. 比较实型变量d是否为0为什么不能用d==0来表示
  14. 注意力机制-多头注意力
  15. ES6语法总结(21)--Generator函数的异步应用
  16. 组织级项目管理和项目集、项目组合管理
  17. AFMG全球战略发布会,一场与豪华纯电智能跑车的零距离之约
  18. 宝贝与iPad-新生代的玩具
  19. 火狐浏览器翻译页面功能如何设置
  20. Android备考01 黑马76期-day03 操作数据库

热门文章

  1. java 模板实现原理,Java Web 模板代码生成器的设计与实现详解
  2. 二维数组数组名的使用
  3. 1.3 torch_向量/矩阵操作
  4. C宏定义-SWAP的妙用
  5. ssh登陆connection refused的解决办法
  6. git checkout之一 HEAD基本和detached 状态
  7. JSON-lib 使用
  8. linux swap交换分区说明/管理
  9. 【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 饲料计算
  10. 洛谷——P1002 过河卒||codevs——T1010 过河卒