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色彩空間
類似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)行類似的觀察。與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)文章
Virtualenv 搭建 Py項(xiàng)目運(yùn)行環(huán)境的教程詳解
這篇文章主要介紹了Virtualenv 搭建 Py項(xiàng)目運(yùn)行環(huán)境的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python字符串轉(zhuǎn)換成浮點(diǎn)數(shù)函數(shù)分享
本文給大家分享的是一則使用Python實(shí)現(xiàn)字符串轉(zhuǎn)換成浮點(diǎn)數(shù)的代碼,主要是使用map和reduce方法來(lái)實(shí)現(xiàn),有需要的小伙伴可以參考下。2015-07-07詳解Python?Flask?API?示例演示(附cookies和session)
這篇文章主要為大家介紹了Python?Flask?API?示例演示(附cookies和session)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配
這篇文章主要為大家詳細(xì)介紹了python利用opencv實(shí)現(xiàn)SIFT特征提取與匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成)
下面小編就為大家分享一篇python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04python從入門到實(shí)踐之組合數(shù)據(jù)類型
這篇文章主要為大家介紹了python組合數(shù)據(jù)類型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01python取均勻不重復(fù)的隨機(jī)數(shù)方式
今天小編就為大家分享一篇python取均勻不重復(fù)的隨機(jī)數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11