色彩空间类型转换

RGB是一种比较常见的色彩空间类型,除此之外还有一些其他的色彩空间,比如常见的包括GRAY色彩空间(灰度图像)、XYZ色彩空间、YCrCb色彩空间、HSV色彩空间、HLS色彩空间、CIEL*a*b*色彩空间、CIEL*u*v*色彩空间、Bayer色彩空间等。每个色彩空间都有自己擅长的领域,因此,为了更方面的处理某个具体问题需要用到色彩空间的类型转换。

色彩空间类型转换是指,将一个色彩空间转换为另一个色彩空间。例如,在进行图像的特征提取、距离计算时,往往先将图像从RGB色彩空间转换灰度色彩空间。一些应用中,可能将色彩空间的图像转换为二值图像。

1. 色彩空间基础

常见的包括GRAY色彩空间(灰度图像)、XYZ色彩空间、YCrCb色彩空间、HSV色彩空间、HLS色彩空间、CIEL*a*b*色彩空间、CIEL*u*v*色彩空间、Bayer色彩空间等。

1) GRAY色彩空间

GRAY(灰度图像)通常是指八位灰度图,有256个灰度级【0,255】。当图像有RGB转换为GRAY时,其处理方式如下:

Gray = 0.299*R + 0.587*G + 0.114*B

上述是标准的转换方式,也是OpenCV中使用的转换方式,有时也可以采用简化形式:

Gray=\frac{R+G +B}{3}

当图像由GRAY色彩空间转换为RGB时,最终所有通道的值将是相同的,即R=G=B=Gray

2)XYZ色彩空间

XYZ色彩空间是由CIE定义的,是一种更便于计算的色彩空间,其转换方式为:

\begin{bmatrix}X\\ Y\\ Z\end{bmatrix}=\begin{bmatrix}0.412453 &0.357580  &0.180423 \\ 0.212671 &0.715160  &0.072169 \\ 0.019334 &0.119193  &0.950227 \end{bmatrix}.\begin{bmatrix}R\\ G\\ B\end{bmatrix}

将XYZ色彩空间转换为GRB色彩空间:

\begin{bmatrix}R\\ G\\ B\end{bmatrix}=\begin{bmatrix}3.240479 &-1.53715  &-0.498535 \\ -0.969256 &1.875991  &0.041556 \\ 0.055648 &-0.204043  &1.057311 \end{bmatrix}.\begin{bmatrix}X\\ Y\\ Z\end{bmatrix}

3)YCrCb色彩空间

人眼视觉系统(HVS, Human Visual System)对颜色的敏感程度要低于对亮度的敏感度。在传统的RGB色彩空间内,三原色具有相同的重要性,但忽略了亮度信息。

在YCrCb色彩空间中,Y代表亮度,色度信息保存在Cr和Cb中,其中,Cr表示红色分量信息,Cb表示蓝色分量信息。亮度给了颜色亮或者暗的程度信息,该信息可以通过照明中强度成分的加权和来计算。在RGB光源中,绿色分量的影响最大,蓝色分量的影响最小。

从RGB色彩空间到YCrCb的转换公式:

Y=0.299\cdot R + 0.587\cdot G + 0.114\cdot B\\Cr = (R - Y) \times 0.713 + delta\\Cb = (B-Y)\times 0.564 + delta

式中delta的值为:对于8位图象,delta为128;对于16位图像,delta=32768; 对于单精度图像,为0.5。

从YCrCb色彩空间到RGB色彩空间的转换公式:

R = Y + 1.403 \cdot (Cr - delta)\\B = Y - 0.714\cdot (Cr - delta) -0.344\cdot (Cb - delta)\\B = Y + 1.773\cdot (Cb - delta)

4)HSV色彩空间

RGB是从硬件的角度提出的颜色模型,在与人眼匹配的过程中可能存在一定差异,HSV是一种面向视觉感知的颜色模型。

HSV色彩空间从心理学和视觉的角度出发,指出人的色彩知觉主要包含三要素:色调(Hue,也叫色相)、饱和度(Saturation)、亮度(Value),色调指光的颜色,饱和度指色彩的深浅程度,亮度指人眼感受到的光的明暗程度。

色调:色调与混合光谱中主要光波长有关。

饱和度:指相对纯净度,或者一种颜色混合白光的数量。纯谱系是全饱和的,像深红色(红加白)和淡紫色(紫加白)这样的彩色是欠饱和的。如果颜色的饱和度很低,那么它计算所得的色调就不可靠。作为灰度图像显示时,较亮区域对应的颜色具有较高的饱和度。

亮度:反映的是人眼感受光的明暗程度。该指标与物体的反射度有关。对于色彩来讲,若在其中掺入的白色越多,则其亮度越高;掺入的黑色越多,则其亮度越低。

在具体实现上,我们将物理空间的颜色分布在圆周上,不同的角度代表不同的颜色。色调的取值范围为【0,360】,但为保证取值范围在【0,255】内,在OpenCV中对色调做了映射---除以2,从而将色调范围映射到了【0,180】。

饱和度为一比例值,范围【0,1】,饱和度为0时,只有灰色。亮度的取值范围也是【0,1】。当然,饱和度和亮度也被映射到了【0,255】

我们可以通过调用cv2.cvtColor()函数来实现色彩空间的转换。

5)HLS色彩空间

与HSV色彩空间类似,只是HLS用“光亮度/明度(lightness)”替换了亮度。取值范围也是【0,1】,用它来衡量有多少光线从物体表面反射出来。

6)CIEL*a*b*色彩空间

CIEL*a*b*色彩空间是均匀色彩空间模型,它是面向视觉感知的颜色模型。从视觉感知的角度讲,人所感知到的两种颜色的区别程度,应该与这两个颜色在色彩空间中的距离成正比,这个空间称为均匀色彩空间。

L*分量用来表示像素的亮度,取值范围【0,100】;

a*分量表示从红色到绿色的范围,取值范围【-127,127】;

b*分量表示从黄色到蓝色的范围,取值范围【-127,127】

7)CIEL*u*v*色彩空间

与CIEL*a*b*色彩空间一样,都属于均匀的颜色模型,适用于显示器显示和根据加色原理进行组合的场合。该模型对红色的变化比较敏感,对蓝色的变化不太敏感。

8)Bayer色彩空间

Bayer色彩空间被广泛的用于CCD和CMOS相机中。

2.类型转换函数

在OpenCV内,我们使用cv2.cvtcolor()函数实现色彩空间类型转换:

dst = cv2.cvtcolor(src, code [, dstcn])

参数src 表示原始输入图像。可以是8位无符号图像、16位无符号图像,或者单精度浮点数等;

参数code 是色彩空间转换码;

可选参数dstcn 是目标图像的通道数。如果参数默认为0,则通道数自动通过原始图像和code得到。

dst表示输出图像,与原始输入图像具有相同的数据类型和深度。

颜色空间的转换都用到了如下约定:

8位图像的取值范围是[0,255];

16位图像的取值范围是[0,65535];

浮点数图像值的范围是[0.0~1.0]。

3. 类型转换实例

import cv2

import numpyas np

imgs = cv2.imread('water.jpg')

gray_img = cv2.cvtColor(imgs,cv2.COLOR_RGB2GRAY)

# 由灰度色彩空间转换为GRB,三个通道的值是一样的,所以得到的仍然是灰度图像

rgb_img = cv2.cvtColor(gray_img,cv2.COLOR_GRAY2RGB)

cv2.imshow('RGB_student',imgs)

cv2.imshow('gray_student',gray_img)

cv2.imshow('RGB2_student',rgb_img)

wait_re = cv2.waitKey(0)

cv2.destroyAllWindows()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352