HSV色彩空間

2022-03-09 13:48:12 字數 3013 閱讀 8053

**原文 hsv色彩空間

hsv顏色模式是除了rgb顏色模式之外的另一種流行的顏色模式,rgb被廣泛運用於計算機中,而hsv則用在電視顯示方面。它更符合人們對顏色的描述(什麼顏色(h),深淺度如何(s),亮度如何(v))。其實在電視機上選單中的飽和度就是s,亮度就是v。

h:色相,色度,色彩,也就是我們平時說的顏色。如紅,黃,洋紅等。在hsv模型中,用度數描述,其中紅色對於0度,綠色對於120度,藍色對應240度。

s:飽和度,色彩的深淺度(0-100%) 

v:色調,純度,色彩的亮度(0-100%) 

為了便於理解,下文均稱h為色彩,s為深淺度,v為亮度。關於色相,色調,飽和度等概念的更深入解釋可參見《visual c++數字影象處理開發入門與程式設計實踐》左飛著 第三章

hsv色彩空間模型:

模型1                                    模型2

注:在模型2中:

h是色彩點在對應圓形切面上與紅色半徑(對於h=0度)所形成的圓心角。

v是色彩點所在圓形切面到圓錐頂點的距離。在頂面上v=1 頂點v=0

s是色彩點到所在圓形切面圓心的距離與該圓半徑的比例值,在圓錐表面上s=1,在圓心處s=0

關鍵點:

當s=1 v=1時,h所代表的任何顏色被稱為純色;

當s=0時,顏色最淺,最淺被描述為灰色(灰色也有亮度,黑色和白色也屬於灰色),灰色的亮度由v決定,此時h無意義;

當v=0時,顏色最暗,最暗被描述為黑色,因此此時h(無論什麼顏色最暗都為黑色)和s(無論什麼深淺的顏色最暗都為黑色)均無意義。

下面是當h=0度 即為紅色時,s和v組成的平面:

在這張圖中,s沿橫軸從左到右0-1增長 v沿縱軸由下到上0-1增長

可以看到,當s=0,即矩形左邊的豎線邊緣處,呈不同深淺的灰色

當v=0,即矩形下班的橫線邊緣處,呈黑色

當s=0   v=1時,此時顏色最亮,但也最淺。也就是矩形的左上角,呈白色。

當s=1(s=0) v=0時,顏色最深(最淺),但最暗,均體現為黑色

當s=1 v=1時,在矩形的右上角,就是純色的紅色,也就是我們常用的rgb(255, 0, 0)

在hsv中:

1.亮度v就是rgb值中最大的那個值進行歸一化。也就是說 v = max(r, g, b)/255.0f;

從這一點我們可以推出:

1.純色(s=1 v=1)的rgb值中必定至少有乙個255,因為純色v=1,即max(r, g,

b)=255。同時rgb值也不可能有3個255,因為3個255為白色,前面我們提到,白色為對於任何色彩h,v=1而s=0時的產物。而v=1

s=0並不是純色。

2.這個公式也側面說明了當v=0時,max(r, g, b)=0,也就是r=g=b=0,即為黑色。

2.深淺度s是rgb中最大值和最小值的差值與最大值的比值。設rgbmax=max(r,g,b) rgbmin=min(r,g,b) 那麼s = (rgbmax-rgbmin)/(float)rgbmax    

從這個公式我們可以推導:

1.純色(s=1 v=1)的rgb值中必定有乙個0,因為當s=1,rgbmax-rgbmin==rgbmax,即rgbmin=0。這也說明了白色(rgb(255,255,255)並不是純色)。

2.當s=0時,rgbmax-rgbmin==0,即r==g==b,此時顏色呈不同程度的灰色(由白到黑,亮度由v而定,因為v=rgbmax*100/255,v越高,rgbmax==r==g==b就越高,灰色越亮))。這也可以從上面給出的矩形圖看出。

3.色彩h的對應rgb值也可以出來了,純色的範圍為:rgb(255,0,×), rgb(255,×,0),rgb(0,255,×),rgb(×,255,0,rgb(×,0,255),rgb(0,×,255)。×代表(0,255)中的任意值。這六大部分組成乙個圈形色帶。具體轉換見下節。

再結合上面的矩形圖分析一下;

1.對於上面矩形中每一條橫線(h和v不變,s從左到右0-1),如果用顏色拾取器(如最後一節提供的示例colorpicker)觀察,可以發現,從右到左,在同一縱座標上,rgb的變化是從rgb(r,g,b)到rgb(max(r,g,b),max(r,g,b),max(r,g,b))逐漸逼近。最終在最左邊的點呈灰色(r=g=b),灰色的亮度由max(r,g,b)決定。

2.對於矩形中每一條豎線(h和s不變,v從下到上0-1),從上到下,rgb值的變化由rgb(r,g,b)逐漸趨近於rgb(0,0,0),最終變為黑色。這也為我們繪製如上的sv調色盤提供了思路。

參考《visual c++數字影象處理開發入門與程式設計實踐》左飛著 第三章例項 colorpicker

介面:

功能:可進行hsv和rgb的轉換

左方調色盤可對任意rgb顏色或h值進行s和v值的漸變調色

中下方的預覽框會對選取顏色進行實時顯示

可通過點選調色盤某處進行顏色選取

可在螢幕任意位置按a鍵捕獲當前滑鼠所在位置的顏色資訊並實時顯示顏色資訊

HSV色彩空間

hsv色彩空間從心裡學和視覺角度出發。提出人眼的色彩和知覺主要包含三要素 h 色調 s 飽和度 v 亮度 色調的取值範圍為 0,360 8位影象每個畫素點所能表示的灰度級為256個,所以需要對映 對映後色調值和對應顏色 0 紅色 30 黃色 60 綠色 90 青色 120 藍色 150 品紅色 一種...

原創 HSV和YCrCb色彩空間介紹

通常 情況下,彩色影象使用r g b三個通道表示,這種通過三基色可以到其它的各種顏色,但是具體是哪種顏色,我們就無從可知,如果我想知道 r,g,b 三元組具體什麼顏色呢?這時候可以用hsv顏色空間表示。hsv都是一種將rgb色彩模型中的點在原著座標體系中的表示法。這中表示法試圖做到比基於笛卡爾座標系...

Python製作視覺化HSV色彩空間閾值編輯器

coding utf 8 import cv2 import numpy as np 並通過滑塊調節hsv閾值,實時顯示 根據路徑讀取一張 cv2.imshow bgr image 顯示 hsv low np.array 0 0,0 hsv high np.array 0 0,0 下面幾個函式,寫得...