颜色模型浅谈(四)

原创 2001年04月09日 19:19:00

三、直观颜色模型


  前面讲解的颜色模型都是基于三基色的颜色模型,现在我们来看一种比较直观的颜色模型。可能大家都画过油画或是水粉画吧?还记得我们是怎么调配颜色的吗?我们总是从颜料中选取一种我们需要的色彩,然后如果我们需要暗淡一些就往里面添点黑色,需要颜色淡一点的话就往里面加点白色。显然,这种调配的方法对于我们来说比用三基色要直观的多,相对应的,我们也可以用这种直观的模型来描述颜色。

HSV颜色模型

  这个模型中颜色的参数分别是:色彩(H),纯度(S),明度(V)。

  HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。
见下图:

hsv.jpg (11499 bytes)
HSV六棱锥

  H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。
  纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。
  V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。

RGB转化到HSV的算法

  max=max(R,G,B)
  min=min(R,G,B)

  if R = max, H = (G-B)/(max-min)
  if G = max, H = 2 + (B-R)/(max-min)
  if B = max, H = 4 + (R-G)/(max-min)

  H = H * 60
  if H < 0, H = H + 360

  V=max(R,G,B)
  S=(max-min)/max

HSV转化到RGB的算法

  if s = 0
    R=G=B=V
  else
    H /= 60;
    i = INTEGER(H)
    f = H - i
    a = V * ( 1 - s )
    b = V * ( 1 - s * f )
    c = V * ( 1 - s * (1 - f ) )
    switch(i)
      case 0: R = V; G = c; B = a;
      case 1: R = b; G = v; B = a;
      case 2: R = a; G = v; B = c;
      case 3: R = a; G = b; B = v;
      case 4: R = c; G = a; B = v;
      case 5: R = v; G = a; B = b;

  HSV对用户来说是一种直观的颜色模型。我们可以从一种纯色彩开始,即指定色彩角H,并让V=S=1,然后我们可以通过向其中加入黑色和白色来得到我们需要的颜色。增加黑色可以减小V而S不变,同样增加白色可以减小S而V不变。例如,要得到深蓝色,V=0.4 S=1 H=240度。要得到淡蓝色,V=1 S=0.4 H=240度。

  一般说来,人眼最大能区分128种不同的色彩,130种色饱和度,23种明暗度。如果我们用16Bit表示HSV的话,可以用7位存放H,4位存放S,5位存放V,即745或者655就可以满足我们的需要了。

  由于HSV是一种比较直观的颜色模型,所以在许多图像编辑工具中应用比较广泛,如Photoshop(在Photoshop中叫HSB)等等,但这也决定了它不适合使用在光照模型中,许多光线混合运算、光强运算等都无法直接使用HSV来实现。

  顺便提一下,另外一种直观颜色模型是HSL模型,该模型中前两个参数和HSV一样,而L表示亮度。它的三维表示为一双棱锥。因为用的不多,这里就不详细讲了。

 

【Unity3D Shader编程】之七 静谧之秋篇: 表面着色器的写法(二)—— 自定义光照模式

本文主要讲解了Unity中SurfaceShader的自定义光照模式的写法。 上篇文章中我们已经说到,表面着色器将分为两次讲解,上一篇文章中介绍了表面着色器的基本概念和一些写法,用内置的兰伯特光照...
  • zhmxy555
  • zhmxy555
  • 2015年01月11日 17:03
  • 20108

android中color的用法及十六进制编码大全

在android开发中,适当的颜色搭配可以为我们的应用增色不少,废话就不多了,下面是对android开发中颜色使用的总结颜色分类:1.系统颜色 android内置的颜色,比如系统资源中定义的颜色,...
  • qingfengzaishou
  • qingfengzaishou
  • 2015年09月22日 17:09
  • 1308

原型模式-浅克隆和深克隆的自我理解

原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的. 原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下...
  • u011625768
  • u011625768
  • 2015年01月06日 17:25
  • 1229

PPT颜色浅谈

  • 2014年06月13日 10:37
  • 2.67MB
  • 下载

浅谈计算机中的存储模型(四)磁盘

最后一片文章简单聊聊磁盘相关知识 前几篇文章 浅谈计算机中的存储模型(一)存储体系 浅谈计算机中的存储模型(二)物理内存 浅谈计算机中的存储模型(三)虚拟存储器 目录 磁盘 ...
  • wwh578867817
  • wwh578867817
  • 2015年10月09日 20:46
  • 1545

Core Data浅谈系列之四 : 数据模型的版本变迁

继上一篇文章末尾提到的,一支队伍可以添加多名球员,不过一名球员只能属于一支队伍中,这分别对应着Core Data中一对多和一对一的属性关系: ...
  • yangkunlll
  • yangkunlll
  • 2013年07月09日 10:04
  • 500

Core Data浅谈系列之四 : 数据模型的版本变迁

继上一篇文章末尾提到的,一支队伍可以添加多名球员,不过一名球员只能属于一支队伍中,这分别对应着Core Data中一对多和一对一的属性关系: ...
  • liuyujinglove
  • liuyujinglove
  • 2014年05月06日 18:02
  • 399

浅谈图论模型的建立与应用.

  • 2011年11月24日 17:46
  • 172KB
  • 下载

浅谈软件能力成熟度模型的有效实施

  • 2012年08月16日 19:15
  • 41KB
  • 下载

浅谈迭代模型下的测试方法

  • 2009年07月06日 08:15
  • 2.96MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:颜色模型浅谈(四)
举报原因:
原因补充:

(最多只允许输入30个字)