HSL與RGB轉換
a) RGB→HSL的演算法描述。
步驟1:把RGB值轉成【0,1】中數值。
步驟2:找出R,G和B中的最大值。
步驟3:設L=(maxcolor + mincolor)/2
步驟4:如果最大和最小的顏色值相同,即表示灰色,那麼S定義為0,而H未定義並在程式中通常寫成0。
步驟5:否則,測試L:
If L
If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)
步驟6: If R=maxcolor, H=(G-B)/(maxcolor-mincolor)
If G=maxcolor, H=2.0+(B-R)/(maxcolor-mincolor)
If B=maxcolor, H=4.0+(R-G)/(maxcolor-mincolor)
步驟7:從第6步的計算看,H分成0~6區域。RGB顏色空間是一個立方體而HSL顏色空間是兩個六角形錐體,其中的L是RGB立方體的主對角線。因此,RGB立方體的頂點:紅、黃、綠、青、藍和品紅就成為HSL六角形的頂點,而數值0~6就告訴我們H在哪個部分。H=H*60.0,如果H為負值,則加360。
HSL與RGB轉換
a) RGB→HSL的演算法描述。
步驟1:把RGB值轉成【0,1】中數值。
步驟2:找出R,G和B中的最大值。
步驟3:設L=(maxcolor + mincolor)/2
步驟4:如果最大和最小的顏色值相同,即表示灰色,那麼S定義為0,而H未定義並在程式中通常寫成0。
步驟5:否則,測試L:
If L
If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)
步驟6: If R=maxcolor, H=(G-B)/(maxcolor-mincolor)
If G=maxcolor, H=2.0+(B-R)/(maxcolor-mincolor)
If B=maxcolor, H=4.0+(R-G)/(maxcolor-mincolor)
步驟7:從第6步的計算看,H分成0~6區域。RGB顏色空間是一個立方體而HSL顏色空間是兩個六角形錐體,其中的L是RGB立方體的主對角線。因此,RGB立方體的頂點:紅、黃、綠、青、藍和品紅就成為HSL六角形的頂點,而數值0~6就告訴我們H在哪個部分。H=H*60.0,如果H為負值,則加360。