前一篇文章介紹了顏色的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。
同一個色相的顏色有著一定的相關性,而通過純色計算得出相關的顏色,能加快計算速度,簡化計算過程。