计算机中的颜色IV——纯色、色相色

简介:

 前一篇文章介绍了颜色的HSV表示方法,其中H表示色相,亦即表示在色相环上的位置。S表示颜色的纯度,当S=1时,表示颜色最纯,当S=0时,表示颜色没有纯度,此时表示为灰度色。V表示颜色的亮度,当V=1,颜色最亮,当V=0时,亮度最低,此时表示颜色为黑色。

  综上所述,当一个颜色(H,S,V)中的S=1,V=1时,此时该颜色表示色相环上的一种颜色。我们定义该颜色为纯色或者是色相色。

  由于每种颜色都有H分量,因此任意一种颜色都和一种纯色对应,他们之间的区别是S和V值不一样,而H值是一样的。同时,这种对应关系是一种多对一的关系,也就是说,只要几种颜色的H值相同,则他们对应的是同一种纯色。

  纯色有什么特点呢?首先纯色也是一种颜色,因此也可以用RGB表示,同时还可以用HSV表示。通过前面的定义可知,用HSV表示的时候,S=1,V=1。我们先看前文中的转化公示:

  S=1-Min/Max

  V=Max/255

  注:前文中的公式RGB的分量用[0,1]表示,本文已经转化为[0,255],故有所差异

  若V=1,则Max=255

  若S=1,则Min=0

  由此可见,一个颜色是否是纯色的充要条件是三个颜色分量中,最大分量为255,最小分量为0。

  前面提到,每种颜色都和一种纯色相对应的关系。那么他们之间一定有一个快速计算的过程,实际上,前文中的计算过程虽明了但复杂了。

  已知纯色(R,G,B)和分量S,V,如何计算颜色(R’,G’,B’)

  通过推导,有下面的公式:

  R’=(R×S+255×(1-S))×V

  G’=(G×S+255×(1-S))×V

  B’=(B×S+255×(1-S))×V

 

  已知颜色(R’,G’,B’),如何计算纯色(R,G,B)

  通过推导,有下面公式:

    Max为三个分量的最大值,Min为三个分量的最小值

    若Max=Min,三个分量一样,此时表示灰度值,直接定义纯色(255,0,0),S=0,V=Max

    若Max≠Min,

    R=255×(R’-Min)/(Max-Min)

    G=255×(G’-Min)/(Max-Min)

    B=255×(B’-Min)/(Max-Min)

    此时计算出的三个分量必定一个是255,一个是0。

 

  同一个色相的颜色有着一定的相关性,而通过纯色计算得出相关的颜色,能加快计算速度,简化计算过程。


    本文转自万仓一黍博客园博客,原文链接http://www.cnblogs.com/grenet/archive/2009/12/14/1623457.html:,如需转载请自行联系原作者


相关文章
|
8天前
|
关系型数据库 MySQL
MySQL全局库表查询准确定位字段
information_schema.COLUMNS 详细信息查询
191 4
|
9月前
|
NoSQL MongoDB 数据库
MongoDB 创建集合
MongoDB 创建集合
370 0
|
11月前
|
存储 JavaScript 前端开发
PHP代码审计之PHP危险函数总结
PHP代码审计之PHP危险函数总结
183 0
|
JavaScript 关系型数据库 PHP
PHP项目学习——控件
主要是在项目学习中总结的一些东西 动态效果 flashbar滚动条,增加动态效果,直接嵌入html中 效果  打开一个新窗口 open() 方法用于打开一个新的浏览器窗口或查找一个已命名的窗口。
1335 0
|
机器学习/深度学习 算法 搜索推荐
【玩转数据系列十三】机器学习算法基于信用卡消费记录做信用评分
机器学习算法基于信用卡消费记录做信用评分 背景 如果你是做互联网金融的,那么一定听说过评分卡。评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应用于线性模型进行建模的一种方法。
13787 0
|
uml
面与卤的鹊桥相会——桥接模式
本文来自:崔成龙博客专栏。转载请注明出处:http://blog.csdn.net/xiaoxian8023     软考上午题终于考完了。三个赶考者都感觉不错。
1148 0
|
6天前
|
NoSQL Cloud Native Redis
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新
阿里云瑶池数据库团队后续将持续参与Valkey社区,如过往在Redis社区一样耕耘,为开源社区作出持续贡献。
Redis核心开发者的新征程:阿里云与Valkey社区的技术融合与创新