OpenCV實戰(zhàn)之OpenCV中的顏色空間
在本教程中,我們將了解計算機視覺中常用的色彩空間,并將其用于基于顏色分割。我們還將用C ++和Python共享演示代碼。
在進行色彩分割時很多項目沒有考慮到不同光照條件的影響,會嚴重影響結(jié)果。在許多計算機視覺應用中遇到這個問題,涉及基于顏色的分割,如膚色檢測,交通燈識別等。所以構(gòu)建一個強大的色彩檢測系統(tǒng)是很有必要的。
文章結(jié)構(gòu)如下:
1首何在OpenCV中讀取圖像并將其轉(zhuǎn)換為不同的顏色空間,并查看每個顏色空間的不同通道為我們提供的新信息。
2應用一個簡單的顏色分割算法。
1 不同的色彩空間
在本節(jié)中,我們將介紹計算機視覺中使用的一些重要的色彩空間。我們不會描述它們背后的理論,我們只需要知道如何使用。
OpenCV顏色空間轉(zhuǎn)換很簡單,imread函數(shù)讀取圖像以BGR格式加載,cvtColor函數(shù)在不同的顏色空間之間進行轉(zhuǎn)換。
下圖是不同的照明下的立方體圖像。第一張圖像是在陽光明媚的室外條件下拍攝的,而第二張圖像是在室內(nèi)光線條件正常的情況下拍攝的。
1.1RGB顏色空間
RGB顏色空間具有以下屬性: 1. 它是一種加色空間,其中顏色通過紅色R,綠色G和藍色B的線性組合獲得。1. 物體光照會影響該顏色空間各個通道值,三個顏色通道是具有相關(guān)性的。 讓我們將上面圖像分成R,G和B分量并觀察它們以更深入地了解色彩空間。
從下圖可以看到如果你看藍色通道,可以看到在室內(nèi)光照條件下第二張圖像中的魔方藍色和白色部分看起來相似,但第一張圖像有明顯差異。這種不均勻性使得在該顏色空間中基于顏色的分割非常困難。此外,兩個圖像的值之間存在總體差異。因此RGB顏色空間存在顏色值分布不均勻以及色度和亮度混合在一起的問題。
1.2 Lab色彩空間
類似RGB空間,Lab也有三個圖像通道。
- L:亮度通道,表亮度。
- a:顏色通道a,表示從綠色到洋紅色的顏色。
- b:顏色通道b,表示從藍色到黃色的顏色。
Lab顏色空間與RGB顏色空間完全不同。在RGB顏色空間中,顏色信息被分成三個通道,但是相同的三個通道也包含亮度信息。另一方面,在Lab顏色空間中,L通道獨立于顏色信息并僅只含亮度信息。另外兩個通道編碼顏色。
Lab顏色空間還具有以下特性: 1. 感知上均勻的色彩空間近似于我們?nèi)绾胃兄省?. 獨立于設(shè)備(捕獲或顯示)。1. 廣泛用于Adobe Photoshop。1. 通過復數(shù)變換方程與RGB顏色空間相關(guān)。 OpenCV中讀取圖像,轉(zhuǎn)換為Lab空間圖像結(jié)果如下圖所示:
- 從圖中可以清楚地看出,光照的變化主要影響l分量。1. 包含顏色信息的a和b分量,在光照的變化下沒有經(jīng)歷大的變化。1. 綠色,橙色和紅色(它們是a通道的主要顏色)的相應值在b通道中沒有變化,同樣地,藍色和黃色(它們是b通道的主要顏色)在a通道中沒有變化。 ##
1.3 YCrCb顏色空間
YCrCb顏色空間源自RGB顏色空間,并具有以下三個成分。
- 通道Y:伽馬校正后從RGB獲得的亮度或亮度分量。
- 通道Cr:Cr=R-Y(紅色成分與亮度成分Y的距離)。
- 通道Cb:Cb=B-Y(藍色成分與亮度成分Y的距離)。
此顏色空間具有以下屬性。 1. 將亮度和色度分量分成不同的通道。1. 主要用于電視傳輸?shù)膲嚎s(Cr和Cb組件)。1. 取決于設(shè)備。 YCrCb顏色空間中分成其通道的兩個圖像如下所示:
對于照度變化,可以針對強度和顏色分量對LAB進行類似的觀察。與LAB相比,室外圖像中紅色和橙色之間的感知差異較小。白色在所有3個組件中發(fā)生了變化。
1.4 HSV顏色空間
HSV顏色空間具有以下三個成分:
H色調(diào),S飽和度,V明度。
HSV最大的特點是它只使用一個通道來描述顏色(H),這使得指定顏色變得非常直觀。但是HSV色彩取決于設(shè)備。
兩個圖像的H,S和V分量如下所示。
從下圖可以看到
H分量在兩個圖像中非常相似,這表明即使在光照變化下顏色信息也是完整的。
兩個圖像中的S分量也非常相似。
V分量表示亮度,因此它會因照明變化而發(fā)生變化。
紅色室外和室內(nèi)圖像的值之間存在巨大差異。這是因為H值是以角度表示紅色表示起始角度。因此它可能會取角度 [300,360]和[0,60]之間的值。
2 如何使用這些顏色空間進行分割
現(xiàn)在我們已經(jīng)了解了不同的顏色空間,讓我們首先嘗試使用它們來檢測魔方中的綠色。
2.1 獲取特定顏色的顏色值
找到每個顏色空間的綠色值的近似范圍。通過獲取每個像素的所有顏色空間的值,如下所示:
2.2 應用分段閾值
該部分就不敘述了,詳情見參考,實際用處不大。只是應用inRange函數(shù)選擇合適的閾值分割圖像而已。在實際中,通過顏色分割圖像一般效果很差。建議不要使用,了解下就行了。
到此這篇關(guān)于OpenCV實戰(zhàn)之OpenCV中的顏色空間的文章就介紹到這了,更多相關(guān)OpenCV顏色空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Virtualenv 搭建 Py項目運行環(huán)境的教程詳解
這篇文章主要介紹了Virtualenv 搭建 Py項目運行環(huán)境的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06Python字符串轉(zhuǎn)換成浮點數(shù)函數(shù)分享
本文給大家分享的是一則使用Python實現(xiàn)字符串轉(zhuǎn)換成浮點數(shù)的代碼,主要是使用map和reduce方法來實現(xiàn),有需要的小伙伴可以參考下。2015-07-07詳解Python?Flask?API?示例演示(附cookies和session)
這篇文章主要為大家介紹了Python?Flask?API?示例演示(附cookies和session)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03python利用opencv實現(xiàn)SIFT特征提取與匹配
這篇文章主要為大家詳細介紹了python利用opencv實現(xiàn)SIFT特征提取與匹配,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成)
下面小編就為大家分享一篇python:pandas合并csv文件的方法(圖書數(shù)據(jù)集成),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-04-04