前言
在前面,我們只介紹了三種圖像的類型懒浮,分別位二值圖像飘弧、灰度圖像以及RGB圖像。但我們現(xiàn)在常用的圖像肯定是RGB圖像砚著,不過它只是色彩空間的一種類型次伶,在實(shí)際的圖像中,還有許多其他的色彩空間赖草,對于會PS的讀者來說肯定不會陌生学少。
比如GRAY色彩空間(灰度圖像),XYZ色彩空間秧骑,YCrCb色彩空間版确,HSV色彩空間,HLS色彩空間乎折,CIELab色彩空間绒疗,CIELuv色彩空間,Bayer色彩空間等骂澄。
每個(gè)圖像都有其擅長處理的內(nèi)容吓蘑,因此我們要掌握這些色彩空間圖像的轉(zhuǎn)換,以便后續(xù)更方便的處理圖像的問題坟冲。
GRAY色彩空間
GRAY就是我們前面介紹的灰度圖像磨镶,通常指8位灰度圖像,其具有256個(gè)灰度級健提,像素值范圍位[0,255]琳猫。
RGB轉(zhuǎn)換位GRAY的數(shù)學(xué)公式如下:
Gray=0.229R+0.587G+0.114*B
而圖像有GRAY色彩空間轉(zhuǎn)換為RGB色彩空間時(shí),最終所有通道的值都是相同的私痹,其處理方式如下:
R=Gray
G=Gray
B=Gray
XYZ色彩空間
XYZ色彩空間是由CIE(International Commission on Illumination)定義的脐嫂,是一種更便于計(jì)算的色彩空間统刮,它不像RGB轉(zhuǎn)換位GRAY,只能單向轉(zhuǎn)換账千,XYZ色彩空間與RGB轉(zhuǎn)換不會丟失任何值侥蒙。
將RGB色彩空間轉(zhuǎn)換為XYZ色彩空間,其轉(zhuǎn)換公式為:
將XYZ色彩空間轉(zhuǎn)換為RGB色彩空間匀奏,其轉(zhuǎn)換公式為:
YCrCb色彩空間
人眼視覺系統(tǒng)對顏色的敏感度要低于對亮度的敏感度鞭衩。在傳統(tǒng)的RGB色彩空間內(nèi),RGB三原色具有相同的重要性攒射,但是忽略了亮度的信息醋旦。所以,才有了YCrCb色彩空間会放。
在YCrCb色彩空間中,Y代表光源的亮度钉凌,色度信息保存在Cr和Cb中咧最,其中,Cr表示紅色分量信息御雕,Cb表示藍(lán)色分量信息矢沿。
亮度給出了顏色亮或暗的程度信息,該信息可以通過照明中強(qiáng)度成分的加權(quán)和來計(jì)算酸纲。在RGB光源中捣鲸,綠色分量的影響最大,藍(lán)色分量的影響最小闽坡。
從RGB色彩空間轉(zhuǎn)換YCrCb色彩空間的數(shù)學(xué)公式如下:
Y=0.229R+0.587G+0.114*B
Cr=(R-Y)*0.713+delta
Cb=(B-Y)*0.564+delta
其中delta的值為:
從YCrCb色彩空間轉(zhuǎn)RGB數(shù)學(xué)公式如下:
R=Y+1.403*(Cr-delta)
G=Y-0.714(Cr-delta)-0.344(Cb-delta)
B=Y+1.773*(Cb-delta)
HSV色彩空間
RGB是從硬件的角度提出的顏色模型栽惶,在與人眼匹配的過程中可能存在一定的差異。而HSV色彩空間是一種面向視覺感知的顏色模型疾嗅。HSV色彩空間是從心理學(xué)和視覺的角度出發(fā)外厂,指出人眼色彩知覺主要包含3個(gè)要素:色調(diào),飽和度代承,亮度汁蝶。
說到這里,相信用過PS的都應(yīng)該清楚HSV到底能干什么了吧论悴?不過掖棉,我們還是介紹一些這3個(gè)要素,畢竟本篇博文就是專門將色彩空間理論知識的膀估,不能有空缺幔亥。
色調(diào)(H):指光的顏色,色調(diào)與混合光譜中的主要光波長相關(guān)玖像,例如“赤橙黃綠青藍(lán)紫”分別表示不同的色調(diào)紫谷。如果從波長的角度考慮齐饮,不同的波長的光表現(xiàn)為不同的顏色,實(shí)際上它們體現(xiàn)的是色調(diào)的差異笤昨。
飽和度(S):指色彩的深淺層度祖驱,相對于純凈度,或一種顏色混合白光的數(shù)量瞒窒。純譜色是全飽和的捺僻,像深紅色(紅加白)和淡紫色(紫加白)這樣的彩色是欠飽和的,飽和度與所加白光的數(shù)量成反比崇裁。
亮度(V):反映的是人眼感受到的光的明暗程度匕坯,該指標(biāo)與物體的反射度有關(guān)。對于色彩來講拔稳,如果在其中摻入的白色越多葛峻,則其亮度越高;如果在其摻入的黑色越多巴比,則亮度越低术奖。
在具體的實(shí)現(xiàn)上,我們將物理空間的顏色分布在圓周上轻绞,不同的角度代表不同的顏色采记。因此,通過調(diào)整色調(diào)值政勃,我們就能選取不同的顏色唧龄,色調(diào)的取值范圍為[0,360]奸远。色調(diào)取值不同既棺,顏色也不同,具體如下表所示:
色調(diào)值(度) | 顏色 |
---|---|
0 | 紅色 |
60 | 黃色 |
120 | 綠色 |
180 | 青色 |
240 | 藍(lán)色 |
300 | 品紅色 |
飽和度的值為[0,1]然走,飽和度的值為0時(shí)援制,只有灰度,飽和度越大芍瑞,顏色值越豐富晨仑。至于亮度,其取值范圍也是[0,1]拆檬。
例如洪己,博主現(xiàn)在取色調(diào)=0,飽和度=1竟贯,亮度=1答捕,就可以提取色彩深紅色。
介紹完理論知識屑那,HSV與上面的色彩空間一樣拱镐,也需要與RGB進(jìn)行轉(zhuǎn)換艘款,不過,我們這里轉(zhuǎn)換之前沃琅,需要先將RGB色彩空間的值轉(zhuǎn)換到[0,1]之間哗咆,然后在進(jìn)行處理。具體處理如下:
V=max(R,G,B) 亮度
這里益眉,H的計(jì)算結(jié)果可能小于0晌柬,如果出現(xiàn)這種情況,則需要對H進(jìn)一步的處理計(jì)算郭脂。如下所示:
上述公式計(jì)算的結(jié)果肯定與前面說的色調(diào)年碘,亮度,飽和度的范圍一致展鸡。至于HSV轉(zhuǎn)RGB屿衅,感興趣的可以參考開發(fā)文檔。
HLS色彩空間
HLS與HSV色彩空間類似莹弊,都具有3要素傲诵。只是HLS色彩空間就L與V不同,其中HLS色彩空間的L(光亮度/明度)替換了亮度箱硕。
那么什么是光亮度/明度呢?
其實(shí)悟衩,光亮度/明度是用來控制色彩的明暗變換剧罩,它的取值范圍同樣也是[0,1]。我們在程序中座泳,可以通過光亮度/明度的大小來衡量有多少光線從物體表面反射出來惠昔。光亮度/明度對于眼睛感知顏色很重要,因?yàn)楫?dāng)一個(gè)具有色彩的物體處于光線太強(qiáng)或者太暗的地方時(shí)挑势,眼睛是無法準(zhǔn)確獲取物體顏色的镇防。
說實(shí)話,編輯公式有點(diǎn)費(fèi)勁潮饱,感興趣的自己查詢開發(fā)文檔来氧,后續(xù)在python中開發(fā),我們都是使用cv2.cvtColor()進(jìn)行轉(zhuǎn)換的香拉。使用起來啦扬,你只需要了解其到底做什么的,并不需要知道其內(nèi)部如何實(shí)現(xiàn)凫碌,但內(nèi)部實(shí)現(xiàn)扑毡,就是上面的這些數(shù)學(xué)公式。
CIELab*色彩空間
CIELab*色彩空間是均勻色彩空間模型盛险,它是面向視覺感知的顏色模型瞄摊。從視覺感知均勻的角度來講勋又,人所感知到的兩種顏色的區(qū)別程度,應(yīng)該與這兩種顏色在色彩空間中的距離成正比换帜。在某個(gè)色彩空間中如果人所觀察的兩種顏色的區(qū)別程度楔壤,與這兩種顏色在該色彩空間中對應(yīng)的點(diǎn)之間的歐式距離成正比,則稱該色彩空間為均勻色彩空間膜赃。
CIELab色彩空間中的L分量用于表示像素的亮度挺邀,取值范圍為[0,100],表示從純黑到純白跳座;a分量表示從紅色到綠色的范圍端铛,取值范圍為[-127,127];b*分量表示從黃色到藍(lán)色的范圍疲眷,取值范圍為[-127.127]禾蚕。
由于CIELab是在CIE的XYZ色彩空間上發(fā)展起來的,所以轉(zhuǎn)換的時(shí)候狂丝,需要先將RGB轉(zhuǎn)換為XYZ色彩空間换淆,然后在轉(zhuǎn)換為CIELab。具體的數(shù)學(xué)公式感興趣的查詢開發(fā)文檔几颜。
CIELuv*色彩空間
CIELuv色彩空間同CIELab色彩空間一樣倍试,是均勻的顏色模型。CIELuv*色彩空間與設(shè)備無關(guān)蛋哭,適用于顯示器顯示和根據(jù)加色原理進(jìn)行組合的場合县习,該模型中比較強(qiáng)調(diào)對紅色的表示,即對紅色的變化比較敏感谆趾,但對藍(lán)色的變化不太敏感躁愿。
同樣的,CIELuv色彩空間也需要先將RGB轉(zhuǎn)換為XYZ色彩空間沪蓬,然后在轉(zhuǎn)換為CIELuv彤钟,具體公式感興趣的可以查詢開發(fā)文檔。
Bayer色彩空間
Bayer色彩空間被廣泛的應(yīng)用在CCD和CMOS相機(jī)中跷叉。
色彩空間的理論知識逸雹,到這里基本就講解完成了,感興趣的可以自己擴(kuò)展最后幾個(gè)數(shù)學(xué)公式性芬。