這次主要的是實作顏色RGB轉換為空間的HSI,除了基礎的色調,裡面又分為HSB跟HSL。
HSB之中的B是Brightness,而L則是Lightness
除了原本RGB的平面色系,他們更加入了亮度、飽和度。成了一種圓柱體的調色盤
HSL之中的灰階不同於既定的RGB色塊來表示顏色,而是以黑白加上亮度來表示"明暗"
使用之灰階原圖:
此圖之HSL灰階通道:
而其中比較麻煩的則是偵測膚色區域的部分
首先要克服的部分是RGB轉到HSL的部分,先把公式刻出來
(此處從WIKI擷取)
設 (
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的值定義如下:


- 色盤轉換完畢之後,利用元件將色盤放到表單上然後切割區域就行了
- 由於平常使用的範例圖色塊太偏紅色,所以用比較鮮艷的圖片:
版面:
- 色塊獨立後:
可以稍微在把區塊調大一點或是乾脆改成偵測藍色才不會這麼驚悚....不過大致上就是這樣(?)