在這一篇文章中,我們將會(huì)學(xué)習(xí)使用一下OpenCV中色彩空間的轉(zhuǎn)換函數(shù),我們這里說的色彩空間是說的使用多種顏色(通常指三種以上),來表示顏色的方法,像是我們平時(shí)所說的RGB,HSV,YUV,YCRCB,都是色彩空間模型。OpenCV也很方便的封裝了很多的色彩空間函數(shù)。下面我們一起來實(shí)踐一下(以下所有試驗(yàn)都根據(jù)下圖完成,我截取的Windows自帶的壁紙^_^)
一:RGB
RGB我們很熟悉,一幅圖像是由三個(gè)獨(dú)立的紅,藍(lán),綠通道構(gòu)成,每個(gè)值代表每個(gè)像素的每個(gè)分量的度量值,如果值越高也就越亮。
因?yàn)槿搜垡彩怯扇N感光細(xì)胞構(gòu)成,因此RGB我們是最熟悉的,比如在電競的時(shí)候,使用RGB燈可以刺激人的感官,提升成績。
上圖也就是RGB的實(shí)現(xiàn)方式。
二:灰度
灰度圖像我們的應(yīng)用也是非常廣泛,包括我們后續(xù)的如果做視頻追蹤也都是將彩色視頻逐幀轉(zhuǎn)換為灰度圖像再去定位,不過這是后話。
彩色轉(zhuǎn)換為灰度圖像的計(jì)算方法如下:
每個(gè)像素值只表示灰度信息這一單一信息
RGB[A]準(zhǔn)換成灰度:Y=0.299*R+0.587*G+0.114*B
灰度轉(zhuǎn)換為RGB[A]:R=Y,G=Y,B=Y,A=max(ChannelRange)
在OpenCV中我們可以使用cvtColor函數(shù)來實(shí)現(xiàn)轉(zhuǎn)換
結(jié)果如下:
三:HSV
HSV顏色空間輸入面向色度的顏色坐標(biāo)系統(tǒng)的一種。這種類型的顏色模型接近人類顏色感知的仿真模型。
HSV的三個(gè)通道表示色度(H給出的顏色光譜構(gòu)成的一種度量),飽和度(S給出主波長中的純光比例,這表明一種顏色距離相同亮度灰度的程度)和純度(V給出相對于白色光照強(qiáng)度的亮度),對應(yīng)于直覺上的色彩、明暗和色調(diào)。HSV廣泛應(yīng)用于色彩的比較.
關(guān)于HSV的計(jì)算可以參考以下的公式:
這里我們用OpenCV實(shí)現(xiàn):
得到的結(jié)果如下:
這樣來看,似乎什么信息都沒有,這里要注意一點(diǎn),因?yàn)樵诖a中顯示函數(shù)使用的是imshow(),這個(gè)函數(shù)是以RGB來顯示的,因此我們使用HSV肯定是不正確的,如果想顯示正確,必須要將其轉(zhuǎn)換成RGB空間,這個(gè)具體以后再詳細(xì)說一下。
四:YCRCB
該空間廣泛用于視頻和圖像壓縮,不能算作純粹的色彩空間,它是RGB顏色空間的一種解碼方式Y(jié)通道表示亮度,而Cr和Cb表示紅色差值(在RGB空間中R通道和Y的差值)和藍(lán)色差值(在RGB空間中B通道和Y的差值)各自的色度分量。
其變化的計(jì)算如下:
在OpenCV中,我們使用:
得到的結(jié)果如下:
總體來看,還是可以看得出相對于其他的色彩模型,還是能夠保留一定的色彩,但是因?yàn)閴嚎s的緣故,色彩空間還是差很多。
完整的代碼如下,希望大家可以多多動(dòng)手,親身嘗試一下。
import cv2 as cvimport numpy as np#色彩空間轉(zhuǎn)換函數(shù):RGB,HSV,YUV重要def color_space_demo(image): gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) cv.imshow("HSV",hsv) yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV) cv.imshow("YUV",yuv) Ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb) cv.imshow("YCRCB",Ycrcb) #imread函數(shù)用來讀取圖片src = cv.imread("D:/1.png")#namedWindow函數(shù)用來指定輸出圖片的尺寸和窗口大小,autosize是自動(dòng)大小cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)#imshow函數(shù)用來顯示圖像cv.imshow("input image",src)color_space_demo(src)#等待鍵盤觸發(fā),否則一直在此窗口等待cv.waitKey(0)#結(jié)束所有的窗口cv.destroyAllWindows()
責(zé)任編輯:xj
原文標(biāo)題:【CV學(xué)習(xí)筆記】色彩空間
文章出處:【微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
CV
+關(guān)注
關(guān)注
0文章
51瀏覽量
16792 -
OpenCV
+關(guān)注
關(guān)注
29文章
622瀏覽量
41089 -
HSV
+關(guān)注
關(guān)注
0文章
10瀏覽量
2586
原文標(biāo)題:【CV學(xué)習(xí)筆記】色彩空間
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論