RGB轉到HSV和HSL公式
HSL 和 HSV 在數學上定義為在 RGB 空間中的顏色的 R, G 和 B 的座標的變換。
[編輯]從 RGB 到 HSL 或 HSV 的轉換
設 (r, g, b) 分別是一個顏色的紅、綠和藍座標,它們的值是在 0 到 1 之間的實數。設 max 等價於 r, g 和 b 中的最大者。設 min 等於這些值中的最小者。要找到在 HSL 空間中的 (h, s, l) 值,這裡的 h ∈ [0, 360)是角度的色相角,而 s, l ∈ [0,1] 是飽和度和亮度,計算為:
h 的值通常規範化到位於 0 到 360°之間。而 h = 0 用於 max = min 的(就是灰色)時候而不是留下 h
HSL 和 HSV 有同樣的色相定義,但是其他分量不同。HSV 顏色的 s 和 v 的值定義如下:
[編輯]從 HSL 到 RGB 的轉換
給定 HSL 空間中的 (h, s, l) 值定義的一個顏色,帶有 h 在指示色相角度的值域 [0, 360)中,分別表示飽和度和亮度的s 和 l 在值域 [0, 1] 中,相應在 RGB 空間中的 (r, g, b) 三原色,帶有分別對應於紅色、綠色和藍色的 r, g 和 b 也在值域 [0, 1] 中,它們可計算為:
首先,如果 s = 0,則結果的顏色是非彩色的、或灰色的。在這個特殊情況,r, g 和 b 都等於 l。注意 h 的值在這種情況下是未定義的。
當 s ≠ 0 的時候,可以使用下列過程:[1]
- (h 規範化到值域 [0,1)內)
對於每個顏色向量 Color = (ColorR, ColorG, ColorB)
= (r, g, b),
[編輯]從 HSV 到 RGB 的轉換
類似的,給定在 HSV 中 (h, s, v) 值定義的一個顏色,帶有如上的 h,和分別表示飽和度和明度的 s 和 v 變化於 0 到 1 之間,在 RGB 空間中對應的 (r, g, b) 三原色可以計算為:
對於每個顏色向量 (r, g, b),