程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 計算機中的顏色IV—純色、色相色

計算機中的顏色IV—純色、色相色

編輯:VB綜合教程
 

前一篇文章介紹了顏色的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。

  同一個色相的顏色有著一定的相關性,而通過純色計算得出相關的顏色,能加快計算速度,簡化計算過程。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved