CV-色彩空間

色彩三要素

  • 色相:基色
  • 明度:明暗
  • 純度:飽和

其中明度和純度感官差異上有些區分不開,可以藉助如下定義

  • 純度:顏色中灰色含量的多少
  • 亮度:顏色中黑白佔比的多少
    在這裏插入圖片描述
    在這裏插入圖片描述

因爲明亮和飽和的顏色都會對眼睛有明顯的刺激,反正我是分不太清。

RGB

光學三原色:紅綠藍

顏料三原色:紅黃藍

雖然我們最常聽說的就是RGB,但我得強調一點,這只是最物理的表達方式,而非人最容易接受的方式。

在電視或液晶顯示上面,通常使用這種辦法,由於最物理,開發也最適合。

不過這種混雜生色,除了基色,加上黑白灰,其他顏色並不好掌握,至少對我來說是的。
在這裏插入圖片描述

RGB空間中,每個座標的本身代表一種基色,值的大小代表的是明度。

所以原點是無明的黑,最遠點是無暗的白。

可以發現一個關鍵點:RGB空間是沒有純度的度量的

同樣,對於組合色:RGB空間沒有色相的度量

其他的顏色就是空間中的座標點,三原色依據不同亮度進行的組合,總量共有
total=256×256×256=1677216=224 total = 256 \times 256 \times 256 =1677216 = 2^{24}


RGB空間當中,比較詬病的是

  • 沒有準確的色相的表述
  • 沒有準確的明度的表述
  • 色相和明度的混雜組合

對於照片,我只想單獨做色相或者純度,抑或是明度的修改,我得同時對三個通道進行修改。

不可能對單一屬性做直接的修改。

正是易實現,難表達,難修改

YUV

看過黑白電視或者素描的都知道,我們就算變成熊貓,就算只有黑白,其實問題也不大。

也就是說,對於色彩表示,明暗的表現力更甚顏色。限於技術,也是需求決定,明暗始終先行。

YUV的出現,也是基於現實因素。

當時正處於彩色電視發展的階段,如何去兼容黑白電視和彩色電視成了問題。

採用RGB進行傳輸的話,實現上確實簡單,但是存在兩個痛點

  • 必須同時傳輸三組分量,帶寬佔用消耗大
  • 黑白電視並不直接支持

如果讓人升級網絡,還要買彩電,受衆就只有土豪了吧。

但是如果維護兩種信號線路,不僅成本增加,對於單一產品,還得兩種編碼,更繁瑣了。

基於此,需要一種新的技術來做整合

  • 能夠單獨控制明暗
  • 而且能夠填充色彩
  • 最好可以分開傳輸

YUV正是這樣的技術,它着重於明度的控制,可以後續填充顏色,而且兩種信號並非綁定。

降低了帶寬消耗,對於黑白電視,只需要Y明度變化就可以做到兼容。

現在來說,明度控制依舊是它的優勢,不過缺點仍然存在

  • 沒有明確的色相控制
  • 沒有明確的飽和控制

YUV中,除了Y是獨立的亮度,UV兩個一般都是聯合使用的,仍然存在一定的交雜,色彩的控制並不單一。


RGBYUV:{Y=0.299R+0.587G+0.144BU=0.147R0.289G+0.436BV=0.615R0.515G0.100B:[YUV]=[0.2990.5870.1440.1470.2890.4360.6150.5150.100][RGB]YUV=>RGB:{R=Y+0+1.14VG=Y0.39U0.58VB=Y+2.03U+0:[RGB]=[101.1410.390.5812.030][YUV] \begin{aligned} RGB \Rightarrow YUV&:\left\{ \begin{matrix} Y = &0.299R + 0.587G + 0.144B \\ U = &-0.147R - 0.289G + 0.436B \\ V = &0.615R - 0.515G - 0.100 B \end{matrix} \right. \\ \\ 齊次矩陣:\left[ \begin{matrix} Y \\ U \\ V \end{matrix} \right] &= \left[ \begin{matrix} 0.299 & 0.587 & 0.144 \\ -0.147 & -0.289 & 0.436 \\ 0.615 & 0.515 &-0.100 \end{matrix} \right] \left[ \begin{matrix} R \\ G \\ B \end{matrix} \right] \\ \\ YUV => RGB &:\left\{ \begin{matrix} R = &Y &+& 0 &+& 1.14V \\ G = &Y &-& 0.39U &-& 0.58V \\ B = &Y &+ &2.03U &+& 0 \end{matrix} \right. \\ \\ 齊次矩陣 :\left[ \begin{matrix} R \\ G \\ B \end{matrix} \right] &= \left[ \begin{matrix} 1 & 0 & 1.14 \\ 1 & -0.39 & -0.58 \\ 1 & 2.03 &0 \end{matrix} \right]\left[ \begin{matrix} Y \\ U \\ V \end{matrix} \right] \end{aligned}

如果指向調節明暗度,轉換成YUV是最好的選擇。

HSV

field words name
H Hue 色相
S Saturation 飽和度
V Value 明度

所以說,這是最貼近人感官體驗的顏色表示方法。

當想改變圖像變化的時候,這是最能夠按照人的習慣進行調整的色彩度量模式。

它的色彩空間是這樣的
在這裏插入圖片描述
上色以後
在這裏插入圖片描述

其中三個分量的單位分別是

attribute name description
H 色度 角度表示,h[0,360]h \in [0, 360]
S 飽和度 百分比表示,s[0,100](%)s \in [0, 100](\%)
V 亮度 v[0,max]v \in [0, max],最大值取決於計算機存儲

RGBHSVRGB \Rightarrow HSV
condition={max=max(R,G,B)min=min(R,G,B)h={0ifmax=min60×gbmaxmin+0ifmax=r&gb60×gbmaxmin+360ifmax=r&g<b60×brmaxmin+120ifmax=g60×rgmaxmin+240ifmax=bs={0ifmax=0maxminmax=1minmaxotherwisev=max \begin{aligned} condition &= \left\{ \begin{matrix} max = max(R, G, B) \\ min = min(R, G, B) \\ \end{matrix} \right. \\ h &= \left\{ \begin{matrix} 0^\circ &if& max =& min \\ 60^ \circ \times \frac{g-b}{max - min} + 0^\circ & if&max =& r \& g \ge b \\ 60^ \circ \times \frac{g-b}{max - min} + 360^\circ & if&max =& r \& g \lt b \\ 60^ \circ \times \frac{b-r}{max - min} + 120^\circ & if&max =& g \\ 60^ \circ \times \frac{r-g}{max - min} + 240^\circ & if&max =& b \\ \end{matrix} \right. \\ s &= \left\{ \begin{matrix} 0 & if \quad max &= 0 \\ \frac{max - min}{max} = 1- \frac{min}{max} & otherwise \end{matrix} \right. \\ v &= max \end{aligned}

HSVRGBHSV\Rightarrow RGB
hih60(mod6)f=h60hip=v×(1s)q=v×(1f×s)t=v times(1(1f)×s)(R,G,B)={(v,t,p)ifhi=0(q,v,p)ifhi=1(p,v,t)ifhi=2(p,q,v)ifhi=3(t,p,v)ifhi=4(v,p,q)ifhi=5 \begin{aligned} h_i &\equiv {\Large \lfloor}\frac{h}{60}{\Large \rfloor} (\bmod 6) \\ f &= \frac{h}{60} - h_i \\ p &= v \times (1 - s) \\ q &= v \times (1 - f \times s) \\ t &= v \ times (1 -(1 - f) \times s) \\ \\ (R, G, B) &= \left\{ \begin{matrix} (v, t, p) & if &h_i = 0 \\ (q, v, p) & if &h_i = 1 \\ (p, v, t) & if &h_i = 2 \\ (p, q, v) & if &h_i = 3 \\ (t, p, v) & if &h_i = 4 \\ (v, p, q) & if &h_i = 5 \\ \end{matrix} \right. \end{aligned}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章