OpenCV實(shí)戰(zhàn)之OpenCV中的顏色空間
在本教程中,我們將了解計(jì)算機(jī)視覺(jué)中常用的色彩空間,并將其用于基于顏色分割。我們還將用C ++和Python共享演示代碼。
在進(jìn)行色彩分割時(shí)很多項(xiàng)目沒(méi)有考慮到不同光照條件的影響,會(huì)嚴(yán)重影響結(jié)果。在許多計(jì)算機(jī)視覺(jué)應(yīng)用中遇到這個(gè)問(wèn)題,涉及基于顏色的分割,如膚色檢測(cè),交通燈識(shí)別等。所以構(gòu)建一個(gè)強(qiáng)大的色彩檢測(cè)系統(tǒng)是很有必要的。
文章結(jié)構(gòu)如下:
1首何在OpenCV中讀取圖像并將其轉(zhuǎn)換為不同的顏色空間,并查看每個(gè)顏色空間的不同通道為我們提供的新信息。
2應(yīng)用一個(gè)簡(jiǎn)單的顏色分割算法。
1 不同的色彩空間
在本節(jié)中,我們將介紹計(jì)算機(jī)視覺(jué)中使用的一些重要的色彩空間。我們不會(huì)描述它們背后的理論,我們只需要知道如何使用。
OpenCV顏色空間轉(zhuǎn)換很簡(jiǎn)單,imread函數(shù)讀取圖像以BGR格式加載,cvtColor函數(shù)在不同的顏色空間之間進(jìn)行轉(zhuǎn)換。
下圖是不同的照明下的立方體圖像。第一張圖像是在陽(yáng)光明媚的室外條件下拍攝的,而第二張圖像是在室內(nèi)光線條件正常的情況下拍攝的。

1.1RGB顏色空間
RGB顏色空間具有以下屬性: 1. 它是一種加色空間,其中顏色通過(guò)紅色R,綠色G和藍(lán)色B的線性組合獲得。1. 物體光照會(huì)影響該顏色空間各個(gè)通道值,三個(gè)顏色通道是具有相關(guān)性的。 讓我們將上面圖像分成R,G和B分量并觀察它們以更深入地了解色彩空間。
從下圖可以看到如果你看藍(lán)色通道,可以看到在室內(nèi)光照條件下第二張圖像中的魔方藍(lán)色和白色部分看起來(lái)相似,但第一張圖像有明顯差異。這種不均勻性使得在該顏色空間中基于顏色的分割非常困難。此外,兩個(gè)圖像的值之間存在總體差異。因此RGB顏色空間存在顏色值分布不均勻以及色度和亮度混合在一起的問(wèn)題。

1.2 Lab色彩空間
類(lèi)似RGB空間,Lab也有三個(gè)圖像通道。
- L:亮度通道,表亮度。
- a:顏色通道a,表示從綠色到洋紅色的顏色。
- b:顏色通道b,表示從藍(lán)色到黃色的顏色。
Lab顏色空間與RGB顏色空間完全不同。在RGB顏色空間中,顏色信息被分成三個(gè)通道,但是相同的三個(gè)通道也包含亮度信息。另一方面,在Lab顏色空間中,L通道獨(dú)立于顏色信息并僅只含亮度信息。另外兩個(gè)通道編碼顏色。
Lab顏色空間還具有以下特性: 1. 感知上均勻的色彩空間近似于我們?nèi)绾胃兄省?. 獨(dú)立于設(shè)備(捕獲或顯示)。1. 廣泛用于Adobe Photoshop。1. 通過(guò)復(fù)數(shù)變換方程與RGB顏色空間相關(guān)。 OpenCV中讀取圖像,轉(zhuǎn)換為L(zhǎng)ab空間圖像結(jié)果如下圖所示:

- 從圖中可以清楚地看出,光照的變化主要影響l分量。1. 包含顏色信息的a和b分量,在光照的變化下沒(méi)有經(jīng)歷大的變化。1. 綠色,橙色和紅色(它們是a通道的主要顏色)的相應(yīng)值在b通道中沒(méi)有變化,同樣地,藍(lán)色和黃色(它們是b通道的主要顏色)在a通道中沒(méi)有變化。 ##
1.3 YCrCb顏色空間
YCrCb顏色空間源自RGB顏色空間,并具有以下三個(gè)成分。
- 通道Y:伽馬校正后從RGB獲得的亮度或亮度分量。
- 通道Cr:Cr=R-Y(紅色成分與亮度成分Y的距離)。
- 通道Cb:Cb=B-Y(藍(lán)色成分與亮度成分Y的距離)。
此顏色空間具有以下屬性。 1. 將亮度和色度分量分成不同的通道。1. 主要用于電視傳輸?shù)膲嚎s(Cr和Cb組件)。1. 取決于設(shè)備。 YCrCb顏色空間中分成其通道的兩個(gè)圖像如下所示:

對(duì)于照度變化,可以針對(duì)強(qiáng)度和顏色分量對(duì)LAB進(jìn)行類(lèi)似的觀察。與LAB相比,室外圖像中紅色和橙色之間的感知差異較小。白色在所有3個(gè)組件中發(fā)生了變化。
1.4 HSV顏色空間
HSV顏色空間具有以下三個(gè)成分:
H色調(diào),S飽和度,V明度。
HSV最大的特點(diǎn)是它只使用一個(gè)通道來(lái)描述顏色(H),這使得指定顏色變得非常直觀。但是HSV色彩取決于設(shè)備。
兩個(gè)圖像的H,S和V分量如下所示。
從下圖可以看到
H分量在兩個(gè)圖像中非常相似,這表明即使在光照變化下顏色信息也是完整的。
兩個(gè)圖像中的S分量也非常相似。
V分量表示亮度,因此它會(huì)因照明變化而發(fā)生變化。
紅色室外和室內(nèi)圖像的值之間存在巨大差異。這是因?yàn)镠值是以角度表示紅色表示起始角度。因此它可能會(huì)取角度 [300,360]和[0,60]之間的值。

2 如何使用這些顏色空間進(jìn)行分割
現(xiàn)在我們已經(jīng)了解了不同的顏色空間,讓我們首先嘗試使用它們來(lái)檢測(cè)魔方中的綠色。
2.1 獲取特定顏色的顏色值
找到每個(gè)顏色空間的綠色值的近似范圍。通過(guò)獲取每個(gè)像素的所有顏色空間的值,如下所示:

2.2 應(yīng)用分段閾值
該部分就不敘述了,詳情見(jiàn)參考,實(shí)際用處不大。只是應(yīng)用inRange函數(shù)選擇合適的閾值分割圖像而已。在實(shí)際中,通過(guò)顏色分割圖像一般效果很差。建議不要使用,了解下就行了。
到此這篇關(guān)于OpenCV實(shí)戰(zhàn)之OpenCV中的顏色空間的文章就介紹到這了,更多相關(guān)OpenCV顏色空間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中關(guān)于時(shí)間和日期函數(shù)的常用計(jì)算總結(jié)(time和datatime)
python中關(guān)于時(shí)間和日期函數(shù)有time和datatime使用介紹,需要的朋友可以參考下2013-03-03
Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問(wèn)題
這篇文章主要介紹了Celery批量異步調(diào)用任務(wù)一直等待結(jié)果問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Python模擬瀏覽器上傳文件腳本的方法(Multipart/form-data格式)
今天小編就為大家分享一篇Python模擬瀏覽器上傳文件腳本的方法(Multipart/form-data格式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
python時(shí)間與Unix時(shí)間戳相互轉(zhuǎn)換方法詳解
這篇文章主要介紹了python時(shí)間與Unix時(shí)間戳相互轉(zhuǎn)換方法詳解,需要的朋友可以參考下2020-02-02
python調(diào)用c++傳遞數(shù)組的實(shí)例
今天小編就為大家分享一篇python調(diào)用c++傳遞數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02

