您的位置:首页 > 其它

基于颜色矩阵原理的图片处理概述

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: