原創 HSV和YCrCb色彩空間介紹

2021-09-01 11:35:53 字數 1914 閱讀 7291

通常

情況下,彩色影象使用r、g、b三個通道表示,這種通過三基色可以到其它的各種顏色,但是具體是哪種顏色,我們就無從可知,如果我想知道(r,g,b)三元組具體什麼顏色呢?這時候可以用hsv顏色空間表示。

hsv都是一種將rgb色彩模型中的點在原著座標體系中的表示法。這中表示法試圖做到比基於笛卡爾座標系的幾何結構rgb更加直觀。hsv即色相(hue),飽和度(saturation),明亮度(lightness),又稱為hsb,其中b即英語brightness。

sv二者都把顏色描述在圓柱座標系內的點,這個圓柱的中心軸取值為自底部的黑色到頂部的白色而在它們中間的是灰色,繞這個軸的角度對應於「色相」,到這個軸的距離對應於「飽和度」,而沿著這個軸的高度對應於「亮度」,「色調」或「明度」。

hsv在概念上可以被認為是顏色的倒圓錐體(黑點在下頂點,白色在上底面圓心)。

上圖中上半部分:3d模型截面。下半部分:將模型中三個引數的其中之一固定為常量,其它兩個引數的影象。

注意:

ycbcr有的時候會被寫作:ycbcr,是色彩空間的一種,通常會用於影片中的影像連續處理,或是數字攝影系統中。y為顏色的亮度(luma)成分、而cb和cr則為藍色和紅色的濃度偏移量成分。

上圖中四部分依次是彩色影象的原圖,彩色影像只有y成分的圖、只有cb成分的圖、和只有cr成分的圖。同時注意的是只有y成分的圖基本等同於彩色影象的灰度圖。

如何獲得影象的亮度?

方法一,將彩色度或轉化為灰度圖,這樣每個畫素值都是灰度值,也就是亮度值

方法二,將rgb三色圖轉化ycbcr彩色空間,第一通道(y成分)就是亮度值

mport os

import numpy as np

import cv2

import sys

im_path = sys.argv[1]

im = cv2.imread(im_path)

if im is none:

print im_path, " not exist"

sys.exit()

h, w = im.shape[:2]

num = h*w

im_ycrcb = cv2.cvtcolor(im, cv2.color_bgr2ycr_cb)

ycrcb_bright = 1.0*np.sum(im_ycrcb[:,:,0])/num

print 'ycrcb model bright value:', ycrcb_bright

im_gray = cv2.cvtcolor(im, cv2.color_bgr2gray)

gray_bright = np.sum(im_gray)*1.0/num

print 'gray model bright value:', gray_bright

im_hsv = cv2.cvtcolor(im, cv2.color_bgr2hsv)

hsv_bright = np.sum(im_hsv[:,:,2])*1.0/num

print 'hsv model bright value:', hsv_bright

輸出

ycrcb model bright value: 124.199016571

gray model bright value: 124.199016571

hsv model bright value: 179.870040894

可見hsv空間的明亮度值,和我們說的亮度值是有差異的。

HSV色彩空間

hsv色彩空間從心裡學和視覺角度出發。提出人眼的色彩和知覺主要包含三要素 h 色調 s 飽和度 v 亮度 色調的取值範圍為 0,360 8位影象每個畫素點所能表示的灰度級為256個,所以需要對映 對映後色調值和對應顏色 0 紅色 30 黃色 60 綠色 90 青色 120 藍色 150 品紅色 一種...

HSV色彩空間

原文 hsv色彩空間 hsv顏色模式是除了rgb顏色模式之外的另一種流行的顏色模式,rgb被廣泛運用於計算機中,而hsv則用在電視顯示方面。它更符合人們對顏色的描述 什麼顏色 h 深淺度如何 s 亮度如何 v 其實在電視機上選單中的飽和度就是s,亮度就是v。h 色相,色度,色彩,也就是我們平時說的顏...

Python製作視覺化HSV色彩空間閾值編輯器

coding utf 8 import cv2 import numpy as np 並通過滑塊調節hsv閾值,實時顯示 根據路徑讀取一張 cv2.imshow bgr image 顯示 hsv low np.array 0 0,0 hsv high np.array 0 0,0 下面幾個函式,寫得...