openCV【實踐系列】8——OpenCV中的顏色空間

在本教程中忠售,我們將了解計算機視覺中經(jīng)常使用的色彩空間磨隘,并將其用于基于顏色的分割。我們還將用C ++和Python分享演示代碼。

RGB色彩空間

RGB顏色空間具有以下屬性

1. 它是一種加色空間碍彭,其中顏色通過紅色,綠色和藍色值的線性組合獲得悼潭。

2. 三個通道通過照射到表面的光量相關(guān)聯(lián)庇忌。

讓我們將這兩個圖像分成R,G和B分量并觀察它們以更深入地了解色彩空間舰褪。

圖1:RGB顏色空間的不同通道:藍(B)綠(G)紅(R)

如果你看一下藍色通道皆疹,可以看到在室內(nèi)光照條件下圖像中的藍色和白色部分看起來相似,但和室外的圖像有明顯區(qū)別占拍。這種不均勻性使得在該顏色空間中基于顏色的分割非常困難略就。此外,兩個圖像的值之間存在總體差異晃酒。下面我們總結(jié)了與RGB顏色空間相關(guān)的固有問題:

1. 顯著的感知不均勻性表牢。

2.色度(顏色相關(guān)信息)和亮度(強度相關(guān)信息)數(shù)據(jù)的混合。

LAB色彩空間

Lab顏色空間有三個組成部分贝次。

1.? ?? ???L -?亮度(強度)崔兴。

2.? ?? ???a -?顏色組成分布范圍是從綠色到洋紅色。

3.? ?? ???b -?顏色組成分布范圍是從藍色到黃色。

Lab顏色空間與RGB顏色空間完全不同敲茄。在RGB顏色空間中位谋,顏色信息被分成三個通道,而且相同的三個通道也編碼亮度信息堰燎。另一方面掏父,在Lab顏色空間中,L通道獨立于顏色信息并且只編碼亮度秆剪。另外兩個通道編碼顏色损同。

它具有以下屬性。

1. 感知上均勻的色彩空間近似于我們?nèi)绾胃兄省?/p>

2. 獨立于設(shè)備(捕獲或顯示)鸟款。

3. 廣泛用于Adobe Photoshop膏燃。

4. 通過復(fù)數(shù)變換方程與RGB顏色空間相關(guān)。

讓我們看一下Lab顏色空間中的兩個圖像分成三個通道何什。

brightLAB = cv2.cvtColor(bright, cv2.COLOR_BGR2LAB)

darkLAB = cv2.cvtColor(dark, cv2.COLOR_BGR2LAB)

圖2:LAB顏色空間中的亮度(L)和顏色分量(A,B)


1.?從圖2中可以清楚地看出组哩,光照的變化主要影響L分量。

2. 包含顏色信息的A和B組分沒有經(jīng)歷大的變化处渣。

3. 綠色伶贰,橙色和紅色(它們是A成分的極值)的相應(yīng)值在B組分中沒有變化,同樣地罐栈,藍色和黃色(它們是B成分的極值)的相應(yīng)值在A組分中也沒有變化黍衙。

YCrCb色彩空間

YCrCb顏色空間源自RGB顏色空間,并具有以下三個組分荠诬。

1.? ?? ???Y – 在伽馬校正后從RGB獲得的亮度或亮度分量琅翻。

2.? ?? ???Cr = R - Y(紅色分量離亮度有多遠)。

3.? ?? ???Cb = B - Y(藍色分量離亮度有多遠)柑贞。

此顏色空間具有以下屬性方椎。

1. 將亮度和色度分量分成不同的通道。

2. 主要用于電視傳輸?shù)膲嚎s(Cr和Cb組件)钧嘶。

3. 取決于設(shè)備棠众。

YCrCb顏色空間中分成其通道的兩個圖像如下所示

brightYCB = cv2.cvtColor(bright, cv2.COLOR_BGR2YCrCb)

darkYCB = cv2.cvtColor(dark, cv2.COLOR_BGR2YCrCb)

圖3:YCrCb顏色空間中的亮度(Y)和色度(Cr,Cb)分量

意見

1. 對于光照變化有决,可以針對強度和顏色分量對LAB進行類似的觀察闸拿。

2. 與LAB相比,室外圖像中紅色和橙色之間的感知差異較小书幕。

3.? ?? ???White已經(jīng)在所有3個組件中發(fā)生了變化新荤。

HSV色彩空間

HSV色彩空間具有以下三個組成部分

1.? ?? ???H-色調(diào)(主波長)。

2.? ?? ???S-飽和度(顏色的純度/色調(diào))按咒。

3.? ?? ???V-值(強度)迟隅。

讓我們列舉一些屬性但骨。

1. 最好的是它只使用一個通道來描述顏色(H),這使得指定顏色變得非常直觀智袭。

2. 取決于設(shè)備奔缠。

兩個圖像的H,S和V分量如下所示吼野。

brightHSV = cv2.cvtColor(bright, cv2.COLOR_BGR2HSV)

darkHSV = cv2.cvtColor(dark, cv2.COLOR_BGR2HSV)

圖4:HSV顏色空間中的色調(diào)(H)校哎,飽和度(S)和值(V)分量

意見

1.? ?? ???H分量在兩個圖像中非常相似,這表明即使在光照變化下顏色信息也是完整的瞳步。

2.? ?? ???兩個圖像中的S分量也非常相似闷哆。

3.? ?? ???V分量捕獲落在其上的光量,因此它會因照明變化而發(fā)生變化单起。

4.?室外和室內(nèi)圖像的紅色值之間存在巨大差異抱怔。這是因為Hue表示為圓形,紅色表示起始角度嘀倒。因此屈留,它可能需要[300,360]和[0,60]之間的值。

如何使用這些顏色空間進行分割

最簡單的方法

現(xiàn)在我們已經(jīng)了解了不同的顏色空間测蘑,讓我們首先嘗試使用它們來檢測立方體中的綠色灌危。

第1步:獲取特定顏色的顏色值

找到每個顏色空間的綠色值的近似范圍。為此碳胳,我創(chuàng)建了一個交互式GUI勇蝙,您可以通過將鼠標懸停在圖像上來檢查每個像素的所有顏色空間的值,如下所示:

圖5:Demo顯示室外圖像的不同顏色空間中的像素及其值

第2步:應(yīng)用分段閾值

從圖像中提取具有接近綠色像素值的所有像素挨约。我們可以為每個顏色空間采用+/- 40的范圍味混,并檢查結(jié)果的樣子。我們將使用opencv函數(shù)inRange來查找綠色像素的掩模烫罩,然后使用bitwise_and操作來使用掩模從圖像中獲取綠色像素惜傲。

代碼如下:

bgr = [40,158,16]

thresh =40

minBGR = np.array([bgr[0] - thresh, bgr[1] - thresh, bgr[2] - thresh])

maxBGR = np.array([bgr[0] + thresh, bgr[1] + thresh, bgr[2] + thresh])

maskBGR = cv2.inRange(bright,minBGR,maxBGR)

resultBGR = cv2.bitwise_and(bright, bright, mask = maskBGR)

# 將1D數(shù)組轉(zhuǎn)換為3D,然后將其轉(zhuǎn)換為HSV贝攒,并獲取第一個元素

# 這將與上面的圖相同[65,229,158]

hsv = cv2.cvtColor( np.uint8([[bgr]] ), cv2.COLOR_BGR2HSV)[0][0]

minHSV = np.array([hsv[0] - thresh, hsv[1] - thresh, hsv[2] - thresh])

maxHSV = np.array([hsv[0] + thresh, hsv[1] + thresh, hsv[2] + thresh])

maskHSV = cv2.inRange(brightHSV, minHSV, maxHSV)

resultHSV = cv2.bitwise_and(brightHSV, brightHSV, mask = maskHSV)

# 將1D數(shù)組轉(zhuǎn)換為3D,然后將其轉(zhuǎn)換為YCrCb时甚,并獲取第一個元素

ycb = cv2.cvtColor( np.uint8([[bgr]] ), cv2.COLOR_BGR2YCrCb)[0][0]

minYCB = np.array([ycb[0] - thresh, ycb[1] - thresh, ycb[2] - thresh])

maxYCB = np.array([ycb[0] + thresh, ycb[1] + thresh, ycb[2] + thresh])

maskYCB = cv2.inRange(brightYCB, minYCB, maxYCB)

resultYCB = cv2.bitwise_and(brightYCB, brightYCB, mask = maskYCB)

# 將1D數(shù)組轉(zhuǎn)換為3D隘弊,然后將其轉(zhuǎn)換為LAB,并獲取第一個元素

lab = cv2.cvtColor( np.uint8([[bgr]] ), cv2.COLOR_BGR2LAB)[0][0]

minLAB = np.array([lab[0] - thresh, lab[1] - thresh, lab[2] - thresh])

maxLAB = np.array([lab[0] + thresh, lab[1] + thresh, lab[2] + thresh])

maskLAB = cv2.inRange(brightLAB, minLAB, maxLAB)

resultLAB = cv2.bitwise_and(brightLAB, brightLAB, mask = maskLAB)

cv2.imshow("Result BGR", resultBGR)

cv2.imshow("Result HSV", resultHSV)

cv2.imshow("Result YCB", resultYCB)

cv2.imshow("Output LAB", resultLAB)

圖6:RGB看起來不錯荒适,可能我們只是在這里浪費時間

因此梨熙,似乎RGB和LAB足以檢測顏色,我們不需要多想刀诬。讓我們看看更多的結(jié)果

圖7:對室內(nèi)圖像應(yīng)用相同的閾值無法檢測所有顏色空間中的綠色立方體

因此咽扇,相同的閾值對暗圖像不起作用。進行相同的實驗以檢測黃色會產(chǎn)生以下結(jié)果。

圖8:嘗試使用從明亮圖像獲得的相同技術(shù)和閾值(黃色)檢測黃色碎片质欲。HSV和YCrCb仍然表現(xiàn)不佳

可見閾值的設(shè)置對我們檢測顏色是多么的重要

色彩空間的其他有用應(yīng)用

1. 直方圖均衡通常在灰度圖像上完成树埠。但是,你可以通過將RGB圖像轉(zhuǎn)換為YCbCr并僅對Y通道進行直方圖均衡來執(zhí)行彩色圖像的均衡嘶伟。

2. 通過將圖像轉(zhuǎn)換為Lab顏色空間怎憋,在兩個圖像之間進行顏色轉(zhuǎn)換。

3. 智能手機相機應(yīng)用程序(如Google相機或Instagram)中的許多濾鏡都會利用這些色彩空間變換來創(chuàng)建這些炫酷效果九昧!

openCV【實踐系列】8——OpenCV中的顏色空間

https://bbs.easyaiforum.cn/thread-855-1-1.html

(出處: 易學(xué)智能)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绊袋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子铸鹰,更是在濱河造成了極大的恐慌癌别,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹋笼,死亡現(xiàn)場離奇詭異规个,居然都是意外死亡,警方通過查閱死者的電腦和手機姓建,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門诞仓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人速兔,你說我怎么就攤上這事墅拭。” “怎么了涣狗?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵谍婉,是天一觀的道長。 經(jīng)常有香客問我镀钓,道長穗熬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任丁溅,我火速辦了婚禮唤蔗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窟赏。我一直安慰自己妓柜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布涯穷。 她就那樣靜靜地躺著棍掐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拷况。 梳的紋絲不亂的頭發(fā)上作煌,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天掘殴,我揣著相機與錄音,去河邊找鬼粟誓。 笑死奏寨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的努酸。 我是一名探鬼主播服爷,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼获诈!你這毒婦竟也來了仍源?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤舔涎,失蹤者是張志新(化名)和其女友劉穎笼踩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亡嫌,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嚎于,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挟冠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片于购。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖知染,靈堂內(nèi)的尸體忽然破棺而出肋僧,到底是詐尸還是另有隱情,我是刑警寧澤控淡,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布嫌吠,位于F島的核電站,受9級特大地震影響掺炭,放射性物質(zhì)發(fā)生泄漏辫诅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一涧狮、第九天 我趴在偏房一處隱蔽的房頂上張望炕矮。 院中可真熱鬧,春花似錦勋篓、人聲如沸吧享。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钞它,卻和暖如春拜银,著一層夾襖步出監(jiān)牢的瞬間殊鞭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工尼桶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留操灿,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓泵督,卻偏偏與公主長得像趾盐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子小腊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349