0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

顏色空間有哪些類別 如何在OpenCV中實(shí)現(xiàn)

jf_78858299 ? 來(lái)源:AI 公園 ? 作者:AI 公園 ? 2023-02-07 15:15 ? 次閱讀

對(duì)圖像的顏色空間做了一個(gè)概念性的介紹,并通過(guò)代碼的方式可視化了每種顏色空間的每個(gè)通道所表示的意義。

文章內(nèi)容包括:

  • 什么是顏色空間?
  • 顏色空間有哪些類別?
  • 如何在OpenCV中實(shí)現(xiàn)?

什么是顏色空間?

顏色是一種連續(xù)的現(xiàn)象,它意味著有無(wú)數(shù)種顏色。但是,人類的眼睛和感知能力是有限的。所以,為了識(shí)別這些顏色,我們需要一種媒介或這些顏色的表示,這種顏色的表示被稱為色彩空間。在技術(shù)術(shù)語(yǔ)中,一個(gè)顏色模型或顏色空間是一個(gè)特定的3-D坐標(biāo)系統(tǒng)以及該系統(tǒng)中的一個(gè)子空間,其中每一種顏色都由一個(gè)單點(diǎn)表示。

有哪些顏色空間的類型?

目前主要有五種類型的顏色模型。但是,我將只寫一些常見(jiàn)的(RGB、HSV和HSL)。

  1. RGB(Red Green Blue)
  2. HSL(Hue Saturation Lightness)
  3. HSV(Hue Saturation Value)
  4. YUV(Luminance, blue–luminance, red–luminance)
  5. CMYK(Cyan, Magenta, Yellow, Key)

RGB顏色空間:

RGB顏色空間是三維坐標(biāo)系中紅、綠、藍(lán)坐標(biāo)所表示的著名顏色空間之一。在更專業(yè)的術(shù)語(yǔ)中,RGB將顏色描述為由三個(gè)部分組成的元組。每個(gè)部分都可以取0到255之間的值,其中元組(0,0,0)表示黑色,元組(255,255,255)表示白色。元組的第0、第1和第2個(gè)部分分別表示紅、綠、藍(lán)的分量。

RGB顏色空間的Python實(shí)現(xiàn):

這里我們導(dǎo)入了必要的庫(kù),cv2用于顏色空間轉(zhuǎn)換,NumPy用于數(shù)組操作,Matplotlib用于顯示圖像,os用于訪問(wèn)圖像目錄,tqdm用于顯示加載欄。

hsl_img = cv2.cvtColor(X[0],cv2.COLOR_BGR2HLS)  #### CONVERTING BGR COLOR SPACE INTO HSL COLOR SPACE  ####
hsl_img_1 = hsl_img.copy()
hsl_img_2 = hsl_img.copy()
hsl_img_3 = hsl_img.copy()
hsl_img_1[:,:,1] = 0  #### HUE --> ZERO  ####
hsl_img_1[:,:,2] = 0
hsl_img_2[:,:,0] = 0  #### SATURATION --> ZERO ####
hsl_img_2[:,:,2] = 0
hsl_img_3[:,:,0] = 0  #### LIGHTNESS --> ZERO ####
hsl_img_3[:,:,1] = 0

設(shè)置兩個(gè)空列表Z和X,分別用于存儲(chǔ)帶有各自圖像的標(biāo)簽,然后指定圖像大小和路徑目錄。在這之后,我定義了兩個(gè)函數(shù),用于返回flower類型( assign_lable )和訪問(wèn)每個(gè)圖像、讀取和調(diào)整其大小( make_train_data )。

Z,X=[],[]
IMG_SIZE=150
FLOWER_SUNFLOWER_DIR='../input/flowers-recognition/flowers/flowers/sunflower'

def assign_label(img,flower_type):
    return flower_type

def make_train_data(flower_type,DIR):
    for img in tqdm(os.listdir(DIR)):
        label=assign_label(img,flower_type)
        path = os.path.join(DIR,img)
        img = cv2.imread(path,cv2.IMREAD_COLOR)
        img = cv2.resize(img, (IMG_SIZE,IMG_SIZE))#Resizing the image

加載圖像,然后在OpenCV以BGR格式讀取圖像時(shí)將BGR顏色空間轉(zhuǎn)換為RGB顏色空間,但Maplotlib使用RGB格式來(lái)顯示圖像。這就是為什么我們需要轉(zhuǎn)換顏色空間后,讀取圖像為RGB。

然后對(duì)固定圖像進(jìn)行三份拷貝,并將每份拷貝的任何雙色通道設(shè)為零,分別用于訪問(wèn)紅、綠、藍(lán)通道。如果你讓第0個(gè)顏色通道都是0那么你只會(huì)得到藍(lán)色通道。

make_train_data('Sunflower',FLOWER_SUNFLOWER_DIR)  #####Loading Sunflower Data
fix_img = cv2.cvtColor(X[0],cv2.COLOR_BGR2RGB)    ###########CONVERTING BGR COLOR SPACE INTO RGB COLOR SPACE #########
new_img_1 = fix_img.copy() 
new_img_2 = fix_img.copy()
new_img_3 = fix_img.copy()
new_img_1[:,:,0] = 0 # making R channel zero    ####For BLUE channel#####
new_img_1[:,:,1] = 0 #making G channel zero
new_img_2[:,:,1] = 0####For RED color Channel####
new_img_2[:,:,2] = 0
new_img_3[:,:,0] = 0###For GREEN Channel####
new_img_3[:,:,2] = 0

顯示圖像:

f, axes = plt.subplots(1,3, figsize = (15,15))
list = [new_img_1,new_img_2,new_img_3]
i = 0
for ax in axes:
    ax.imshow(list[i])
    i+=1

圖片

HSL顏色空間:

HSL的一般含義是色調(diào)、飽和度和明度。你可以將HSL以圓柱體的形式可視化,如圖2(a)所示。圍繞圓柱體的是不同的顏色,比如綠色、黃色、紅色等等(我們真正想要的顏色)。飽和度是指顏色的多少,而明度是指顏色有多暗或多亮。正如你所看到的,圓柱體的頂部全是白色,底部全是黑色。

圖片

圖2:HSL顏色空間

HSL顏色空間的Python實(shí)現(xiàn):

使用OpenCV函數(shù)**cvtColor()**將BGR顏色空間轉(zhuǎn)換為HSL顏色空間,在這里我們需要傳遞圖像,以及從哪個(gè)顏色空間到哪個(gè)顏色空間我們想要改變圖像。然后再?gòu)?fù)制并使兩個(gè)顏色通道為零,以便分別顯示每個(gè)顏色通道。

hsl_img = cv2.cvtColor(X[0],cv2.COLOR_BGR2HLS)  #### CONVERTING BGR COLOR SPACE INTO HSL COLOR SPACE  ####
hsl_img_1 = hsl_img.copy()
hsl_img_2 = hsl_img.copy()
hsl_img_3 = hsl_img.copy()
hsl_img_1[:,:,1] = 0  #### HUE --> ZERO  ####
hsl_img_1[:,:,2] = 0
hsl_img_2[:,:,0] = 0  #### SATURATION --> ZERO ####
hsl_img_2[:,:,2] = 0
hsl_img_3[:,:,0] = 0  #### LIGHTNESS --> ZERO ####
hsl_img_3[:,:,1] = 0

現(xiàn)在顯示三個(gè)不同的顏色通道→

f, axes = plt.subplots(1,3, figsize = (15,15))
list = [hsl_img_1,hsl_img_2,hsl_img_3]
i = 0
for ax in axes:
    ax.imshow(list[i])
    i+=1

圖片

HSV顏色空間:

HSV這個(gè)名字來(lái)自于顏色模型的三個(gè)坐標(biāo),即色相、飽和度和值。它也是一個(gè)圓柱形的顏色模型,圓柱體的半徑表示飽和度,垂直軸表示值,角度表示色調(diào)。對(duì)于觀察者,色調(diào)是占主導(dǎo)地位的,飽和度是混合到色調(diào)中的白光的數(shù)量,value是chrome的強(qiáng)度,value較低顏色變得更加類似于黑色,value越高,顏色變得更加像顏色本身。通過(guò)改變這些參數(shù),我們可以生成不同的顏色。

圖片

圖3:HSV顏色空間

HSV顏色空間的Python實(shí)現(xiàn):

使用cvtColor()函數(shù)將色彩空間轉(zhuǎn)換為HSV色彩空間。然后再?gòu)?fù)制并使兩個(gè)通道置為零,以便分別顯示每個(gè)通道。

hsv_img = cv2.cvtColor(X[0],cv2.COLOR_BGR2HSV)
hsv_img_1 = hsv_img.copy()
hsv_img_2 = hsv_img.copy()
hsv_img_3 = hsv_img.copy()
hsv_img_1[:,:,1] = 0#HUE --> ZERO
hsv_img_1[:,:,2] = 0
hsv_img_2[:,:,0] = 0#SATURATION --> ZERO
hsv_img_2[:,:,2] = 0
hsv_img_3[:,:,0] = 0#VALUE --> ZERO
hsv_img_3[:,:,1] = 0

單獨(dú)顯示每個(gè)顏色通道:

圖片

英文原文:https://medium.com/analytics-vidhya/image-processing-series-part1-colorspaces-836d2e3ca700

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4816

    瀏覽量

    68863
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41448
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4805

    瀏覽量

    84920
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    在這篇文章,我們將學(xué)習(xí)如何在OpenCV中使用基于深度學(xué)習(xí)的邊緣檢測(cè),它比目前流行的canny邊緣檢測(cè)器更精確。
    的頭像 發(fā)表于 05-19 09:52 ?2120次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>OpenCV</b>中使用基于深度學(xué)習(xí)的邊緣檢測(cè)?

    ELF 1技術(shù)貼|如何在Ubuntu編譯OpenCV庫(kù)

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過(guò)在主機(jī)上編譯并使用X86架構(gòu)
    的頭像 發(fā)表于 05-31 16:41 ?1191次閱讀
    ELF 1技術(shù)貼|如<b class='flag-5'>何在</b>Ubuntu<b class='flag-5'>中</b>編譯<b class='flag-5'>OpenCV</b>庫(kù)

    基于OPENCV的運(yùn)動(dòng)目標(biāo)跟蹤實(shí)現(xiàn)

    和大小,得到當(dāng)前幀目標(biāo)的尺寸和質(zhì)心位置。在介紹Intel公司的開源OpenCV計(jì)算機(jī)視覺(jué)庫(kù)的基礎(chǔ)上,采用CAMSHIFT跟蹤算法,實(shí)現(xiàn)運(yùn)動(dòng)目標(biāo)跟蹤,解決了跟蹤目標(biāo)發(fā)生存在旋轉(zhuǎn)或部分遮擋等復(fù)雜情況下的跟蹤
    發(fā)表于 12-23 14:21

    如何使用PythonOpenCV模塊檢測(cè)顏色

    在這篇文章,我們將看到如何使用 Python OpenCV 模塊檢測(cè)顏色,進(jìn)入這個(gè)領(lǐng)域的第一步就是安裝下面提到的模塊。pip install
    發(fā)表于 02-09 16:31

    Opencv調(diào)用bmcv_image_vpp_convert做縮放或者顏色空間轉(zhuǎn)換,得到的圖片不一致是為什么?

    Opencv 讀取圖片后,cvMat 轉(zhuǎn)為bmimage之 后, 調(diào)用 bmcv_image_vpp_convert 做縮放或者顏色空間轉(zhuǎn)換,得到的圖片不一致
    發(fā)表于 09-19 07:41

    OpenCV白平衡算法之灰度世界法_OpenCV實(shí)現(xiàn)馬賽克和毛玻璃濾鏡效果

    OpenCV白平衡算法之灰度世界法(消除RGB受光照影響) 在用OpenCV對(duì)圖像進(jìn)行處理時(shí),利用顏色定位是常常會(huì)接觸到的方法,但RGB受光照影響比較嚴(yán)重,轉(zhuǎn)換到HSV XYZ等空間
    發(fā)表于 01-17 09:34 ?6839次閱讀

    在Vivado如何實(shí)現(xiàn)OpenCV設(shè)計(jì)

    觀看視頻,了解OpenCV庫(kù)和其在一些典型應(yīng)用的使用,以及Zynq-7000 SoC的優(yōu)點(diǎn)和如何實(shí)現(xiàn)OpenCV設(shè)計(jì)。同時(shí)您還能學(xué)習(xí)到如何在
    的頭像 發(fā)表于 11-20 06:46 ?3961次閱讀

    OpenCV色彩空間的轉(zhuǎn)換函數(shù)

    在這一篇文章,我們將會(huì)學(xué)習(xí)使用一下OpenCV色彩空間的轉(zhuǎn)換函數(shù),我們這里說(shuō)的色彩空間是說(shuō)的使用多種
    的頭像 發(fā)表于 11-02 15:23 ?2645次閱讀

    圖像處理的顏色空間及其OpenCV實(shí)現(xiàn)

    對(duì)圖像的顏色空間做了一個(gè)概念性的介紹,并通過(guò)代碼的方式可視化了每種顏色空間的每個(gè)通道所表示的意義。 ? 文章內(nèi)容包括: 什么是顏色
    的頭像 發(fā)表于 12-25 11:36 ?1712次閱讀

    圖像的顏色空間及其OpenCV實(shí)現(xiàn)

    對(duì)圖像的顏色空間做了一個(gè)概念性的介紹,并通過(guò)代碼的方式可視化了每種顏色空間的每個(gè)通道所表示的意義。 ? 文章內(nèi)容包括: 什么是顏色
    的頭像 發(fā)表于 12-26 11:33 ?2053次閱讀
    圖像的<b class='flag-5'>顏色</b><b class='flag-5'>空間</b>及其<b class='flag-5'>OpenCV</b><b class='flag-5'>實(shí)現(xiàn)</b>

    OpenCV Webinar 2丨如何在OpenCV調(diào)用Tengine推理,實(shí)現(xiàn)開發(fā)效率翻倍

    這個(gè)月,OPEN AI LAB的合作伙伴OpenCV 20歲了!值此之際,OpenCV中國(guó)團(tuán)隊(duì)推出系列OpenCV Webinar,在全球范圍內(nèi)定期邀請(qǐng)OpenCV專家來(lái)作...
    發(fā)表于 01-26 19:48 ?3次下載
    <b class='flag-5'>OpenCV</b> Webinar 2丨如<b class='flag-5'>何在</b><b class='flag-5'>OpenCV</b><b class='flag-5'>中</b>調(diào)用Tengine推理,<b class='flag-5'>實(shí)現(xiàn)</b>開發(fā)效率翻倍

    何在OpenCV實(shí)現(xiàn)CUDA加速

    OpenCV4.x關(guān)于CUDA加速的內(nèi)容主要有兩個(gè)部分,第一部分是之前OpenCV支持的圖像處理與對(duì)象檢測(cè)傳統(tǒng)算法的CUDA加速;第二部分是OpenCV4.2版本之后開始支持的針對(duì)深
    的頭像 發(fā)表于 09-05 10:03 ?5095次閱讀

    Python OpenCV教程:特定顏色的檢測(cè)

    在這篇OpenCV Python文章,我想展示OpenCV的基本顏色檢測(cè)示例。 我們用顏色
    的頭像 發(fā)表于 07-03 10:30 ?1137次閱讀

    利用OpenCV進(jìn)行顏色檢測(cè)

    關(guān)于利用OpenCV進(jìn)行顏色分類,本文包含了HSV介紹及應(yīng)用、cv2.inRange及應(yīng)用、RGB與HSV通道的區(qū)別三個(gè)方面。
    的頭像 發(fā)表于 08-18 10:32 ?1235次閱讀
    利用<b class='flag-5'>OpenCV</b>進(jìn)行<b class='flag-5'>顏色</b>檢測(cè)

    在核桃派上實(shí)現(xiàn)USB攝像頭的OpenCV顏色檢測(cè)

    在前幾周的文章已經(jīng)介紹過(guò)如何在核桃派上用OpenCV讀取圖像并顯示到pyqt5的窗口上,這里在上一篇文章的基礎(chǔ)上,給開發(fā)板加入顏色檢測(cè)功能,嘗試將圖像中所有藍(lán)色的東西都用一個(gè)框標(biāo)記出
    的頭像 發(fā)表于 01-20 17:50 ?971次閱讀
    在核桃派上<b class='flag-5'>實(shí)現(xiàn)</b>USB攝像頭的<b class='flag-5'>OpenCV</b><b class='flag-5'>顏色</b>檢測(cè)