HSV(HSL)颜色空间及其应用
生活随笔
收集整理的這篇文章主要介紹了
HSV(HSL)颜色空间及其应用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
from:http://nkwavelet.blog.163.com/blog/static/22775603820147851726816/
【摘要】 本文首先闡述HSV 和 HSL顏色模式的基本特性,然后介紹RGB和HSV / HSL顏色空間互相轉(zhuǎn)換的算法,并給出算法核心代碼和效果圖,最后將HSV顏色空間應(yīng)用到圖像增強(qiáng),得到幾個(gè)增強(qiáng)之后的效果圖。 【參考資料】? 1.?顏色空間RGB與HSV(HSL)的轉(zhuǎn)換 2.?維基百科:HSL和HSV色彩空間 3.?HSV顏色空間
1. HSV和HSL顏色空間簡介 HSV(也叫做 HSB)和?HSL?是對RGB 色彩空間中點(diǎn)的兩種有關(guān)系的表示,它們嘗試描述比 RGB 更準(zhǔn)確的感知顏色聯(lián)系,并仍保持在計(jì)算上簡單。HSL 表示 hue(色相)、saturation(飽和度)、lightness(亮度),HSV 表示 hue、saturation、value(色調(diào)) 而 HSB 表示 hue、saturation、brightness(明度)。
? ? HSV和HSL顏色模式特點(diǎn) : ? ? a) ?HSV顏色空間的模型對應(yīng)于圓柱坐標(biāo)系中的一個(gè)圓錐形子集,圓錐的頂面對應(yīng)于V=1。它包含RGB模型中的 R=1,G=1,B=1三個(gè)面,所代表的顏色較亮。色彩H由繞V軸的旋轉(zhuǎn)角給定。紅色對應(yīng)于角度0°,綠色對應(yīng)于角度120°,藍(lán)色對應(yīng)于角度240°。在HSV顏色模型中,每一種顏色和它的補(bǔ)色相差180°。 b) ?飽和度S取值從0到1,所以圓錐頂面的半徑為1。HSV顏色模型所代表的顏色域是CIE色度圖的一個(gè)子集,這個(gè)模型中飽和度為百分之百的顏色,其純度一般小于百分之百。 c) ?在圓錐的頂點(diǎn)(即原點(diǎn))處,V=0,H和S無定義,代表黑色。圓錐的頂面中心處 S=0,V=1,H無定義,代表白色。從該點(diǎn)到原點(diǎn)代表亮度漸暗的灰色,即具有不同灰度的灰色。對于這些點(diǎn),S=0,H的值無定義。可以說,HSV模型中的V軸對應(yīng)于RGB顏色空間中的主對角線。在圓錐頂面的圓周上的顏色,V=1,S=1,這種顏色是純色。
HSV 顏色空間可以用一個(gè)圓錐空間模型來描述 。
? 2. ?RGB 到 HSL 或 HSV 的轉(zhuǎn)換 ? ? ? ?設(shè) (r, g, b) 分別是一個(gè)顏色的紅、綠和藍(lán)坐標(biāo),它們的值是在 0 到 1 之間的實(shí)數(shù)。設(shè) max 等價(jià)于 r, g 和 b 中的最大者。設(shè) min 等于這些值中的最小者。要找到在 HSL 空間中的 (h, s, l) 值,這里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈ [0,1] 是飽和度和亮度,計(jì)算為: ?h 的值通常規(guī)范化到位于 0 到 360°之間。而 h = 0 用于 max = min 的(就是灰色)時(shí)候而不是留下 h 未定義。 ?HSL 和 HSV 有同樣的色相定義,但是其他分量不同。HSV 顏色的 s 和 v 的值定義如下: 3.?HSL 到 RGB 的轉(zhuǎn)換 ? ? ?給定 HSL 空間中的 (h, s, l) 值定義的一個(gè)顏色,帶有 h 在指示色相角度的值域 [0, 360)中,分別表示飽和度和亮度的s 和 l 在值域 [0, 1] 中,相應(yīng)在 RGB 空間中的 (r, g, b) 三原色,帶有分別對應(yīng)于紅色、綠色和藍(lán)色的 r, g 和 b 也在值域 [0, 1] 中,它們可計(jì)算為: ? ? ? ?如果?s = 0,則此時(shí)顏色是非彩色的、或灰色的。在這種情況下,r, g 和 b 都等于 l。注意 此時(shí)h 的值是未定義的。 ? ? ? ?如果?s ≠ 0?,則可以使用下列過程:
4. ?HSV 到 RGB 的轉(zhuǎn)換 ? ? ?類似的,給定在 HSV 中 (h, s, v) 值定義的一個(gè)顏色,帶有如上的 h,和分別表示飽和度和明度的 s 和 v 變化于 0 到 1 之間,在 RGB 空間中對應(yīng)的 (r, g, b) 三原色可以計(jì)算為: ? ?? 對于每個(gè)顏色向量 (r, g, b), ? 5. HSL和HSV比較 ? ??HSL類似于HSV。對于一些人,HSL更好的反映了“飽和度”和“亮度”作為兩個(gè)獨(dú)立參數(shù)的直覺觀念,但是對于另一些人,它的飽和度定義是錯(cuò)誤的,因?yàn)榉浅H岷偷膸缀醢咨念伾贖SL可以被定義為是完全飽和的。對于HSV還是HSL更適合于人類用戶界面是有爭議的。 ? ??W3C的CSS3規(guī)定聲稱“HSL的優(yōu)點(diǎn)是它對稱于亮與暗(HSV就不是這樣)…”,這意味著: ? ? a) ?在HSL中,飽和度分量總是從完全飽和色變化到等價(jià)的灰色(在HSV中,在極大值V的時(shí)候,飽和度從全飽和色變化到白色,這可以被認(rèn)為是反直覺的)。 ? ? b) ?在HSL中,亮度跨越從黑色過選擇的色相到白色的完整范圍(在HSV中,V分量只走一半行程,從黑到選擇的色相)。 ? ? 6. ?RGB與HSV互轉(zhuǎn)代碼 ? ? ?此處我們用C語言實(shí)現(xiàn)RGB與HSV之間的互相轉(zhuǎn)換并給出效果圖。
7. HSV顏色空間小應(yīng)用 ? ? ?將RGB轉(zhuǎn)換到HSV空間,通過V變量可以調(diào)整圖像的亮度和對比度,以下是幾個(gè)效果圖: ? ? ?? ?? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(原始圖片) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(亮度V + 0.1)? ? ? ? ? ? ? ? ? ? ? ? (亮度V - 0.1)?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(對比度1.2) ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ( 對比度1.5) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (對比度1.5 + V0.2)
【摘要】 本文首先闡述HSV 和 HSL顏色模式的基本特性,然后介紹RGB和HSV / HSL顏色空間互相轉(zhuǎn)換的算法,并給出算法核心代碼和效果圖,最后將HSV顏色空間應(yīng)用到圖像增強(qiáng),得到幾個(gè)增強(qiáng)之后的效果圖。 【參考資料】? 1.?顏色空間RGB與HSV(HSL)的轉(zhuǎn)換 2.?維基百科:HSL和HSV色彩空間 3.?HSV顏色空間
1. HSV和HSL顏色空間簡介 HSV(也叫做 HSB)和?HSL?是對RGB 色彩空間中點(diǎn)的兩種有關(guān)系的表示,它們嘗試描述比 RGB 更準(zhǔn)確的感知顏色聯(lián)系,并仍保持在計(jì)算上簡單。HSL 表示 hue(色相)、saturation(飽和度)、lightness(亮度),HSV 表示 hue、saturation、value(色調(diào)) 而 HSB 表示 hue、saturation、brightness(明度)。
? ? HSV和HSL顏色模式特點(diǎn) : ? ? a) ?HSV顏色空間的模型對應(yīng)于圓柱坐標(biāo)系中的一個(gè)圓錐形子集,圓錐的頂面對應(yīng)于V=1。它包含RGB模型中的 R=1,G=1,B=1三個(gè)面,所代表的顏色較亮。色彩H由繞V軸的旋轉(zhuǎn)角給定。紅色對應(yīng)于角度0°,綠色對應(yīng)于角度120°,藍(lán)色對應(yīng)于角度240°。在HSV顏色模型中,每一種顏色和它的補(bǔ)色相差180°。 b) ?飽和度S取值從0到1,所以圓錐頂面的半徑為1。HSV顏色模型所代表的顏色域是CIE色度圖的一個(gè)子集,這個(gè)模型中飽和度為百分之百的顏色,其純度一般小于百分之百。 c) ?在圓錐的頂點(diǎn)(即原點(diǎn))處,V=0,H和S無定義,代表黑色。圓錐的頂面中心處 S=0,V=1,H無定義,代表白色。從該點(diǎn)到原點(diǎn)代表亮度漸暗的灰色,即具有不同灰度的灰色。對于這些點(diǎn),S=0,H的值無定義。可以說,HSV模型中的V軸對應(yīng)于RGB顏色空間中的主對角線。在圓錐頂面的圓周上的顏色,V=1,S=1,這種顏色是純色。
HSV 顏色空間可以用一個(gè)圓錐空間模型來描述 。
? 2. ?RGB 到 HSL 或 HSV 的轉(zhuǎn)換 ? ? ? ?設(shè) (r, g, b) 分別是一個(gè)顏色的紅、綠和藍(lán)坐標(biāo),它們的值是在 0 到 1 之間的實(shí)數(shù)。設(shè) max 等價(jià)于 r, g 和 b 中的最大者。設(shè) min 等于這些值中的最小者。要找到在 HSL 空間中的 (h, s, l) 值,這里的 h ∈ [0, 360)是角度的色相角,而 s, l ∈ [0,1] 是飽和度和亮度,計(jì)算為: ?h 的值通常規(guī)范化到位于 0 到 360°之間。而 h = 0 用于 max = min 的(就是灰色)時(shí)候而不是留下 h 未定義。 ?HSL 和 HSV 有同樣的色相定義,但是其他分量不同。HSV 顏色的 s 和 v 的值定義如下: 3.?HSL 到 RGB 的轉(zhuǎn)換 ? ? ?給定 HSL 空間中的 (h, s, l) 值定義的一個(gè)顏色,帶有 h 在指示色相角度的值域 [0, 360)中,分別表示飽和度和亮度的s 和 l 在值域 [0, 1] 中,相應(yīng)在 RGB 空間中的 (r, g, b) 三原色,帶有分別對應(yīng)于紅色、綠色和藍(lán)色的 r, g 和 b 也在值域 [0, 1] 中,它們可計(jì)算為: ? ? ? ?如果?s = 0,則此時(shí)顏色是非彩色的、或灰色的。在這種情況下,r, g 和 b 都等于 l。注意 此時(shí)h 的值是未定義的。 ? ? ? ?如果?s ≠ 0?,則可以使用下列過程:
4. ?HSV 到 RGB 的轉(zhuǎn)換 ? ? ?類似的,給定在 HSV 中 (h, s, v) 值定義的一個(gè)顏色,帶有如上的 h,和分別表示飽和度和明度的 s 和 v 變化于 0 到 1 之間,在 RGB 空間中對應(yīng)的 (r, g, b) 三原色可以計(jì)算為: ? ?? 對于每個(gè)顏色向量 (r, g, b), ? 5. HSL和HSV比較 ? ??HSL類似于HSV。對于一些人,HSL更好的反映了“飽和度”和“亮度”作為兩個(gè)獨(dú)立參數(shù)的直覺觀念,但是對于另一些人,它的飽和度定義是錯(cuò)誤的,因?yàn)榉浅H岷偷膸缀醢咨念伾贖SL可以被定義為是完全飽和的。對于HSV還是HSL更適合于人類用戶界面是有爭議的。 ? ??W3C的CSS3規(guī)定聲稱“HSL的優(yōu)點(diǎn)是它對稱于亮與暗(HSV就不是這樣)…”,這意味著: ? ? a) ?在HSL中,飽和度分量總是從完全飽和色變化到等價(jià)的灰色(在HSV中,在極大值V的時(shí)候,飽和度從全飽和色變化到白色,這可以被認(rèn)為是反直覺的)。 ? ? b) ?在HSL中,亮度跨越從黑色過選擇的色相到白色的完整范圍(在HSV中,V分量只走一半行程,從黑到選擇的色相)。 ? ? 6. ?RGB與HSV互轉(zhuǎn)代碼 ? ? ?此處我們用C語言實(shí)現(xiàn)RGB與HSV之間的互相轉(zhuǎn)換并給出效果圖。
7. HSV顏色空間小應(yīng)用 ? ? ?將RGB轉(zhuǎn)換到HSV空間,通過V變量可以調(diào)整圖像的亮度和對比度,以下是幾個(gè)效果圖: ? ? ?? ?? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(原始圖片) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(亮度V + 0.1)? ? ? ? ? ? ? ? ? ? ? ? (亮度V - 0.1)?? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??(對比度1.2) ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ( 對比度1.5) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (對比度1.5 + V0.2)
總結(jié)
以上是生活随笔為你收集整理的HSV(HSL)颜色空间及其应用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HSI颜色空间及其应用
- 下一篇: 近邻取样插值和其速度优化