colorsys模块(RGB/HSV/HSL/YIQ)颜色模型简介
colorsys模塊
博主最近又進(jìn)入了無聊模式,沒事就翻Python標(biāo)準(zhǔn)庫(kù)讀源碼讀著玩。但是里面有幾個(gè)模塊確實(shí)規(guī)模比較大,所以坑挖了一半就停了…現(xiàn)在電腦桌面上一堆沒填完的坑。總之慢慢填吧…
今天發(fā)現(xiàn)了這么一個(gè)模塊,非常簡(jiǎn)單,也有些實(shí)用性(對(duì)于經(jīng)常用Python處理圖片的同學(xué)來說),所以在此介紹一下。
colorsys模塊提供了用于RGB和YIQ/HLS/HSV顏色模式的雙向轉(zhuǎn)換的接口。它提供了六個(gè)函數(shù),其中三個(gè)用于將RGB轉(zhuǎn)YIQ/HLS/HSV,另外三個(gè)用于將YIQ/HLS/HSV轉(zhuǎn)為RGB。
colorsys.rgb_to_yiq(r, g, b)
colorsys.rgb_to_hls(r, g, b)
colorsys.rgb_to_hsv(r, g, b)
colorsys.yiq_to_rgb(y, i, q)
colorsys.hls_to_rgb(h, l, s)
colorsys.hsv_to_rgb(h, s, v)
需要注意的是:除了I和Q之外的其他參數(shù)取值都是在[0, 1]范圍內(nèi)的浮點(diǎn)數(shù)。所以傳入RGB參數(shù)的時(shí)候還需要額外做一個(gè)除以255的操作。
>>> import colorsys>>> colorsys.rgb_to_hsv(30/255, 50/255, 160/255)(0.6410256410256411, 0.8125, 0.6274509803921569)- 1
- 2
- 3
具體的轉(zhuǎn)換算法在這就不介紹了,源碼里都有,也就100多行,有興趣閱讀源碼的同學(xué)可以在Python根目錄/Lib目錄下找到colorsys.py這個(gè)源文件。在這主要介紹一下模塊中涉及到的四種顏色模型。
RGB
RGB是一種相加色,也就是根據(jù)紅綠藍(lán)三種光的相互疊加來顯示不同的顏色,RGB三個(gè)字母分別代表紅色Red、綠色Green和藍(lán)色Blue。那些分辨率比較小的的顯示器用手機(jī)拍出照片后放大看,就可以看到由紅綠藍(lán)三種顏色的發(fā)光管共同組成的一個(gè)像素,像素的顏色就是由這三個(gè)發(fā)光管的亮度決定的。
HSV和HSV
HLS也就是人們常說的HSL,分別代表色相Hue,亮度Lightness和飽和度Saturation。HSV也就是HSB,用過Photoshop的同學(xué)應(yīng)該對(duì)HSB不陌生,它的三個(gè)字母分別代表色相Hue,飽和度Saturation和明度Value(Brightness)。
RGB在數(shù)學(xué)上可以用一個(gè)平面直角坐標(biāo)系來表示,三個(gè)坐標(biāo)軸分別代表紅綠藍(lán)三色的色值。但是用RGB來表示顏色時(shí),顏色的變化對(duì)于人類來說并不是很直觀,于是就產(chǎn)生了HSL和HSV。HSL和HSV通過對(duì)顏色信息的進(jìn)一步封裝,使其通過一種人類更加容易感知的形式來表示顏色變化。(色調(diào)的變化、亮度的變化、色彩純度的變化)
HSL和HSV通過對(duì)RGB顏色模型進(jìn)行變換,將原本的平面直角坐標(biāo)系轉(zhuǎn)換為一個(gè)圓柱坐標(biāo)系。HSL顏色模型的頂端是白色,底端是黑色,可以用一個(gè)雙六角錐體來表現(xiàn)。而HSV顏色模型可以用一個(gè)倒六角錐體來表示,錐體的頂點(diǎn)是黑色。下圖來自英文維基百科,展現(xiàn)了RGB是怎么轉(zhuǎn)換為HSL和HSV的:
注意:這兩個(gè)顏色模型中對(duì)于色相的定義是相同的,但各自對(duì)于飽和度的定義是不同的。
下面兩張同樣來自維基百科的圖片展示了這兩個(gè)模型的差異:
YIQ
YIQ顏色模型使用亮度Luminance和色度Chrominance來表示顏色。用一組坐標(biāo)來表示顏色的變化,Q表示了顏色色調(diào)由紫到綠的變化,I表示了顏色色調(diào)由橙到藍(lán)的變化。
關(guān)于YIQ的特點(diǎn),百度百科-顏色空間作了以下總結(jié):
YIQ顏色空間具有能將圖像中的亮度分量分離提取出來的優(yōu)點(diǎn),并且YIQ顏色空間與RGB顏色空間之間是線性變換的關(guān)系,計(jì)算量小,聚類特性也比較好,可以適應(yīng)光照強(qiáng)度不斷變化的場(chǎng)合,因此能夠有效地用于彩色圖像處理。
下圖來自英文維基百科:
總結(jié)
其實(shí)模塊和源碼倒沒有什么難的,難的是幾個(gè)顏色模型的概念,在bing和百度上找到的中文資料都非常有限。如果有讀者對(duì)這方面感興趣的,推薦你們讀一下下面鏈接里的參考資料,有條件的最好買圖像處理方面的專業(yè)書籍來看。
參考資料:
https://docs.python.org/3.6/library/colorsys.html
https://en.wikipedia.org/wiki/HSL_and_HSV
https://en.wikipedia.org/wiki/YIQ
總結(jié)
以上是生活随笔為你收集整理的colorsys模块(RGB/HSV/HSL/YIQ)颜色模型简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: keras中sample_weight的
- 下一篇: pyautogui在网页内写入excel