[转]ColorMatrixFilter--颜色矩阵滤镜
转自: 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] |
可以看出,第一行的值决定了红色值,第二行决定绿色,第三行蓝色,第四行是透明(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--颜色矩阵滤镜相关推荐
- ColorMatrixFilter 色彩矩阵滤镜
包 flash.filters 类 public final class ColorMatrixFilter 继承 ColorMatrixFilter BitmapFilter Object 使用 ...
- ColorMatrixFilter色彩矩阵滤镜
一.构造方法: ColorMatrixFilter(matrix:Array = null): 二.matrix属性详解: 注意:这里的matrix并不是Matrix的实例,其实是一个Array: m ...
- Android 颜色矩阵 滤镜 ColorMatrix (复古,蓝调,淡雅,传统,胶片,怀旧,浪漫等)你想要的滤镜
首先我来给大家展示一下我的整体效果: 我们要用到的是ColorMatrix,ColorMatrix的三个方法: setRotate:调整色相 setSaturation:调整色彩饱和度 setScal ...
- Egret中颜色矩阵和滤镜的使用与介绍
一:颜色矩阵 颜色矩阵说明 颜色矩阵数据说明: 实际的颜色值由下面的公式决定: redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + ...
- [AS3][Matrix][利用颜色矩阵进行颜色变换]
import flash.filter.ColorMatrixFilter; 颜色矩阵:var arr:Array ; R G B A Off R 1 0 0 0 ...
- 【Android 应用开发】Paint 滤镜原理 之 颜色矩阵 ( 颜色模式 | 颜色通道 | 颜色矩阵 | 矩阵运算 | 矩阵乘法 | 矩阵加法 | 颜色矩阵深入解析 )
文章目录 颜色模式 颜色通道 Android 中的颜色矩阵 矩阵乘法运算 滤镜中的矩阵乘法运算 矩阵加法运算 滤镜中的矩阵乘法运算 滤镜运算原理 ( 总结 ) 实际滤镜理论示例 颜色模式 颜色模式 : ...
- GdiPlus[59]: 图像(十一) IGPImageAttributes 之颜色矩阵(TGPColorMatrix)变换
IGPMatrix 矩阵 是个接口, 要通过 TGPMatrix 实例化后使用, 其内置了很多方法和属性. TGPColorMatrix 只是一个结构体, 除了矩阵数据(5*5)外, 它只有一个方法: ...
- matlab_颜色矩阵三原色
matlab绘图时,通过plottools调出的面板可以可视化选择曲线散点等图像的颜色,但这种方法只是人工肉眼识别,其实我们可以用三原色矩阵来控制图像颜色: 其中,纯红是[1 0 0],纯绿是[0 1 ...
- ColorMatrix颜色矩阵让图片千变万化
在自定义控件中最熟悉的就是Paint,Canvas,path,Matrix等,要想炫酷效果这几个类必不可少.Paint.setColorFilter(ColorFilter filter):设置颜色过 ...
最新文章
- 实现Ant Design 自定义表单组件
- linux检查正则表达式,正则表达式及Linux文本检查工具
- C语言输入一行整数(OJ输入格式)
- 配置Java网络应用程序的开发框架
- 【Java核心面试宝典(1),程序员Javaweb源码
- 转载:EBS上用过的一些接口表整理信息
- 找出数组中出现次数超过一半的数
- 公司内网机器vm ubuntu proxy 设置
- java 四舍五入保留小数
- 使用 Android 开发 MQTT 客户端
- DreamScene for Windows 7梦幻桌面使用教程
- 怎样解决Mac电脑键盘上的大写锁定键灯不亮?
- 比较实型变量d是否为0为什么不能用d==0来表示
- 注意力机制-多头注意力
- ES6语法总结(21)--Generator函数的异步应用
- 组织级项目管理和项目集、项目组合管理
- AFMG全球战略发布会,一场与豪华纯电智能跑车的零距离之约
- 宝贝与iPad-新生代的玩具
- 火狐浏览器翻译页面功能如何设置
- Android备考01 黑马76期-day03 操作数据库
热门文章
- java 模板实现原理,Java Web 模板代码生成器的设计与实现详解
- 二维数组数组名的使用
- 1.3 torch_向量/矩阵操作
- C宏定义-SWAP的妙用
- ssh登陆connection refused的解决办法
- git checkout之一 HEAD基本和detached 状态
- JSON-lib 使用
- linux swap交换分区说明/管理
- 【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 饲料计算
- 洛谷——P1002 过河卒||codevs——T1010 过河卒