基于颜色矩阵原理的图片处理概述
2012-06-27 16:52
141 查看
基于颜色矩阵原理的图片处理概述
介绍
4乘4矩阵可用于转换RGB颜色,缩放RGB颜色,并控制色调,饱和度和对比度等等,利用矩阵最主要的优势就是任何颜色转换,都可以使用标准的矩阵乘法来完成。
实现
变换矩阵:
| m00 m01 m02 m03 |
| m10 m11 m12 m13 |
| m20 m21 m22 m23 |
| m30 m31 m32 m33 |
色彩阵列:
| R |
| G |
| B |
| A |
由于我们目前处理的图像基本不考虑A(alpha,即:透明度),默认为1(即:不透明)。
在应用的时候,就是将色彩阵列与变换矩阵做矩阵乘法,形式如下:
R = R*m00 + G*m01 + B*m02 + A*m03
G = R*m10 + G*m11 + B*m12 + A*m13
B = R*m20 + G*m21 + B*m22 + A*m23
A = R*m30 + G*m31 + B*m32 + A*m33
进行了这些操作之后,得到一个新的色彩阵列,如下:
| R`|
| G`|
| B`|
| A`|
所以,在A默认为1的情况下,我们可以理解为一个彩色点RGB被变换矩阵m处理后得到新的彩色点RGB`,同理,处理一张完整的图片时,就是对图片中的每一个像素点都进行如此的处理,则增幅图像的处理就完成了,这就是所谓的“基于颜色矩阵原理的图片处理”。
实例
一、单位矩阵:
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
解释:这个最基本的一个矩阵,因为任何值为(R,G,B,1)的点与其相乘后,值均不会有任何改变。
二、亮度矩阵
1, 0, 0, nValue,
0, 1, 0, nValue,
0, 0, 1, nValue,
0, 0, 0, 1
解释:其中的nValue可以理解为对当前亮度所要做出的改变。该矩阵的处理实际上等价于将RGB三色同时加上一个相同的值nValue。
三、增益矩阵
fltGainR, 0, 0, 0,
0, fltGainG, 0, 0,
0, 0, fltGainB, 0,
0, 0, 0, 1
解释:其中的fltGainR、fltGainG和fltGainB可以理解为对相应色彩分量做出的改变,是一个浮点数。该矩阵的处理实际上等价于给每个色彩分量乘以一个系数。
综述
可以看到,这种图像处理方式的优点就是简单通用,各种各样的图片处理都可以仅仅通过一个特殊的处理矩阵加上一次简单的矩阵乘法来完成。但是其中也有难点,最大的难点就是处理矩阵的生成算法,以上列出的只是非常简单基础的处理矩阵,此外的例如“饱和度”、“对比度”、“怀旧特效”等等处理矩阵的生成就没有那么简单了。
参考链接
1、http://www.graficaobscura.com/matrix/index.html
2、http://www.cnblogs.com/leon19870907/articles/1978065.html
3、http://www.cnblogs.com/Memo/archive/2008/07/29/1255566.html
介绍
4乘4矩阵可用于转换RGB颜色,缩放RGB颜色,并控制色调,饱和度和对比度等等,利用矩阵最主要的优势就是任何颜色转换,都可以使用标准的矩阵乘法来完成。
实现
变换矩阵:
| m00 m01 m02 m03 |
| m10 m11 m12 m13 |
| m20 m21 m22 m23 |
| m30 m31 m32 m33 |
色彩阵列:
| R |
| G |
| B |
| A |
由于我们目前处理的图像基本不考虑A(alpha,即:透明度),默认为1(即:不透明)。
在应用的时候,就是将色彩阵列与变换矩阵做矩阵乘法,形式如下:
R = R*m00 + G*m01 + B*m02 + A*m03
G = R*m10 + G*m11 + B*m12 + A*m13
B = R*m20 + G*m21 + B*m22 + A*m23
A = R*m30 + G*m31 + B*m32 + A*m33
进行了这些操作之后,得到一个新的色彩阵列,如下:
| R`|
| G`|
| B`|
| A`|
所以,在A默认为1的情况下,我们可以理解为一个彩色点RGB被变换矩阵m处理后得到新的彩色点RGB`,同理,处理一张完整的图片时,就是对图片中的每一个像素点都进行如此的处理,则增幅图像的处理就完成了,这就是所谓的“基于颜色矩阵原理的图片处理”。
实例
一、单位矩阵:
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
解释:这个最基本的一个矩阵,因为任何值为(R,G,B,1)的点与其相乘后,值均不会有任何改变。
二、亮度矩阵
1, 0, 0, nValue,
0, 1, 0, nValue,
0, 0, 1, nValue,
0, 0, 0, 1
解释:其中的nValue可以理解为对当前亮度所要做出的改变。该矩阵的处理实际上等价于将RGB三色同时加上一个相同的值nValue。
三、增益矩阵
fltGainR, 0, 0, 0,
0, fltGainG, 0, 0,
0, 0, fltGainB, 0,
0, 0, 0, 1
解释:其中的fltGainR、fltGainG和fltGainB可以理解为对相应色彩分量做出的改变,是一个浮点数。该矩阵的处理实际上等价于给每个色彩分量乘以一个系数。
综述
可以看到,这种图像处理方式的优点就是简单通用,各种各样的图片处理都可以仅仅通过一个特殊的处理矩阵加上一次简单的矩阵乘法来完成。但是其中也有难点,最大的难点就是处理矩阵的生成算法,以上列出的只是非常简单基础的处理矩阵,此外的例如“饱和度”、“对比度”、“怀旧特效”等等处理矩阵的生成就没有那么简单了。
参考链接
1、http://www.graficaobscura.com/matrix/index.html
2、http://www.cnblogs.com/leon19870907/articles/1978065.html
3、http://www.cnblogs.com/Memo/archive/2008/07/29/1255566.html
相关文章推荐
- A Fast Single Image Haze Removal Algorithm Using Color Attenuation Prior——基于颜色衰减先验单图片去雾算法原理
- 【转】图片处理:颜色矩阵和坐标变换矩阵
- 【转】图片处理:颜色矩阵和坐标变换矩阵
- Android通过颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)处理图片
- Android图片处理:颜色矩阵和坐标变换矩阵
- Android图片处理:颜色矩阵和坐标变换矩阵
- 基于jQuery实现左右图片轮播(原理通用)
- Android 图片特效(二):ColorMatrix(颜色矩阵)与图片的底片效果、老照片效果
- vb.net 教程 5-16 图像处理之ImageAttributes 类2 颜色矩阵1
- vb.net 教程 5-16 图像处理之ImageAttributes 类2 颜色矩阵4
- 图片颜色处理
- 图片颜色处理/ 关于RGB转换YUV的探讨与实现
- Android -- 图片处理, 画画板,缩放,旋转,平移,镜面,倒影,图片合成,颜色处理
- 基于Qt与OpenCV的图片读取、保存,并利用Canny进行简单的边缘处理结果显示
- 《MonkeyRunner 原理剖析》第九章-MonkeyImage 实现原理 - 第五节 - 图片处理基类 ChimpImageBase
- Flash图片处理—颜色变换
- 爬山法处理基于颜色的图像分割
- 使用GirdView异步加载图片,并对图片进行颜色矩阵变化
- c 处理基于java服务端byte[]数组接收图片( xsd__base64Binary)
- Atitit 图像处理 灰度图片 灰度化的原理与实现