主要内容

理解颜色空间和颜色空间转换

图像处理工具箱™软件通常将颜色表示为红色、绿色和蓝色(RGB)数值。然而,除了RGB以外,还有其他模型可以用数字表示颜色。各种模型被称为颜色空间因为它们中的大多数可以映射到二维、三维或四维坐标系。

各种颜色空间之所以存在,是因为它们以使某些计算更方便的方式呈现颜色信息,或者是因为它们提供了一种更直观的识别颜色的方法。例如,RGB颜色空间将颜色定义为红色、绿色和蓝色混合在一起的百分比。其他颜色模型通过色相(颜色的深浅)、饱和度(灰色或纯色的数量)和亮度(强度,或整体亮度)来描述颜色。

这个工具箱支持通过数学转换将颜色数据从一个颜色空间转换到另一个颜色空间。

RGB

RGB颜色空间将图像表示为——- - - - - -n-by-3数字数组,其元素指定红色、绿色和蓝色通道的强度值。数值的范围取决于图像的数据类型。

  • 数组,RGB值范围从[0,1]。

  • uint8数组,RGB值的范围为[0255]。

  • uint16数组,RGB值的范围为[065535]。

工具箱支持RGB颜色空间万博1manbetx的变化。

RGB颜色空间 描述
线性RGB 线性RGB值是从摄像机传感器获得的原始数据。R、G和B的值与照亮传感器的光量成正比。对线性RGB值执行原始图像数据的预处理,例如白平衡、颜色平衡和色差补偿。
sRGB

sRGB值应用一个非线性函数,称为<一个href="//www.tianjin-qmedu.com/help/images/gamma-correction.html" class="a">伽马校正,为线性RGB值。图像经常显示在sRGB颜色空间中,因为它们看起来更明亮,颜色更容易区分。将线性RGB值转换为sRGB颜色空间的参数曲线为:

fu) = -f(-u),u< 0

fu) =cu, 0≤u<d

fu) =一个uɣ+bud

在哪里u用以下参数表示一个R、G或B颜色值:

一个= 1.055

b= -0.055

c= 12.92

d= 0.0031308

ɣ= 1/2.4

Adobe RGB (1998)

Adobe RGB (1998) RGB值使用简单的幂函数对线性RGB值进行gamma校正:

vuɣu≥0

v= (-uɣu< 0

ɣ= 1/2.19921875

HSV

HSV(色相、饱和度、值)颜色空间比RGB颜色空间更能反映人们对颜色的感受。例如,这种颜色空间经常被从色轮或调色板中选择颜色(如油漆或墨水颜色)的人使用。

属性 描述
H Hue,对应于颜色在色轮上的位置。H的取值范围是[0,1]。作为H增加时,颜色从红色过渡到橙色、黄色、绿色、青色、蓝色、品红,最后回到红色。0和1都表示红色。
年代 饱和度,这是色调或偏离中性的数量。年代的取值范围是[0,1]。作为年代增加时,颜色从不饱和(灰色阴影)到完全饱和(没有白色成分)不等。
V

值,该值是特定颜色中红、绿、蓝分量的最大值。V的取值范围是[0,1]。作为V增加,相应的颜色变得越来越亮。

插图的HSV颜色空间

请注意

MATLAB®图像处理工具箱软件不支持HSI颜色空间(色调、饱和度、强度)。但是,如果您想处理色调、饱和度和强度万博1manbetx方面的颜色数据,HSV颜色空间非常相似。另一种选择是使用LCH颜色空间(亮度、色度和色调),这是CIE L*a*b*颜色空间的极坐标变换-请参阅<一个href="//www.tianjin-qmedu.com/help/images/device-independent-color-spaces.html" class="a">与设备无关的色彩空间。

使用<一个href="//www.tianjin-qmedu.com/help/matlab/ref/rgb2hsv.html">rgb2hsv和<一个href="//www.tianjin-qmedu.com/help/matlab/ref/hsv2rgb.html">hsv2rgb函数在RGB和HSV颜色空间之间进行转换。

CIE 1976 XYZ和CIE 1976 L*a*b*

CIE 1976 XYZ和CIE 1976 L*a*b*是由国际照明委员会开发的与设备无关的颜色空间,以缩写CIE著称。这些颜色空间根据人眼三种锥细胞的典型敏感性对颜色进行建模。

XYZ颜色空间是CIE开发的原始模型。的Y通道表示颜色的亮度。的Z通道大约与图像中蓝色的数量有关,但值ZXYZ颜色空间中的B值与RGB颜色空间中的B值不相同。的X通道没有清晰的颜色比拟。但是,如果你把XYZ颜色空间看作是一个三维坐标系,那么X值沿垂直于Y(亮度)轴与Z轴。

L*a*b*颜色空间提供了一个比XYZ模型感知上更统一的颜色空间。颜色在L*a*b*颜色空间中可以存在于RGB之外色域(有效的RGB颜色集)。例如,当将L*a*b*值[100,100,100]转换为RGB颜色空间时,返回值为[1.7682,0.5746,0.1940],这不是一个有效的RGB颜色。有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/images/use-color-space-conversion-to-handle-out-of-gamut-colors.html" class="a">判断L*a*b*值是否在RGB色域。

属性 描述
L * 图像的亮度或亮度。值的范围是[0,100],其中0指定黑色,100指定白色。作为L *增加,颜色变得更明亮。
a* 图像中红色或绿色色调的数量。一个很大的积极的a*值对应红色/品红。一个大的负面a*值对应绿色。虽然没有单一的范围a*,取值范围通常为[-100,100]或[-128,127)。
b * 图像中黄色或蓝色色调的数量。一个很大的积极的b *值对应于黄色。大底片b *Value对应蓝色。虽然没有单一的范围b *,取值范围通常为[-100,100]或[-128,127)。

与设备无关的颜色空间包括照明光源的效果,称为参考白点。光源根据光源的色温给原始图像数据赋予颜色色调。例如,日出或日落时的阳光会给图像带来黄色色调,而正午前后的阳光则会给图像带来蓝色色调。

使用<一个href="//www.tianjin-qmedu.com/help/images/ref/rgb2xyz.html">rgb2xyz和<一个href="//www.tianjin-qmedu.com/help/images/ref/xyz2rgb.html">xyz2rgb函数来在RGB和XYZ颜色空间之间进行转换。使用<一个href="//www.tianjin-qmedu.com/help/images/ref/rgb2lab.html">rgb2lab和<一个href="//www.tianjin-qmedu.com/help/images/ref/lab2rgb.html">lab2rgb函数在RGB和L*a*b*颜色空间之间进行转换。

工具箱支持几个相关的颜色万博1manbetx空间规范,它们比XYZ更适合某些用途。有关更多信息,请参见<一个href="//www.tianjin-qmedu.com/help/images/device-independent-color-spaces.html" class="a">与设备无关的色彩空间。

YCbCr

YCbCr彩色空间被广泛应用于数字视频。在这种格式中,亮度信息存储为单个组件(Y)和色度信息存储为两个色差分量(CbCr).Cb和Cr分别表示参考值与蓝色或红色分量之间的差值。(YUV是另一种广泛用于数字视频的颜色空间,与YCbCr非常相似,但并不完全相同。)

属性 描述
Y 图像的亮度或亮度。颜色的亮度增加Y增加。
Cb 表示蓝色分量与参考值之间差异的色度值。
Cr 表示红色分量与参考值之间差异的色度值。

数值的范围取决于图像的数据类型。YCbCr不使用图像数据类型的全部范围,因此视频流可以包含额外的(非图像)信息。

  • 数组,Y范围是[16/255,235/255]和CbCr取值范围为[16/255,240/255]。

  • uint8数组,Y是在范围[16,235]和CbCr在范围内[16,240]。

  • uint16Y在[4112,60395]和CbCr在[4112,61680]范围内。

使用<一个href="//www.tianjin-qmedu.com/help/images/ref/rgb2ycbcr.html">rgb2ycbcr和<一个href="//www.tianjin-qmedu.com/help/images/ref/ycbcr2rgb.html">ycbcr2rgb用于在RGB和YCbCr颜色空间之间转换的函数。

YIQ

美国国家电视系统委员会(NTSC)定义了一种名为YIQ的颜色空间。这种颜色空间在美国的电视机中使用。这种颜色空间将灰度信息从彩色数据中分离出来,因此相同的信号可以用于彩色和黑白电视机。

属性 描述
Y 亮度,即图像的亮度。值的范围是[0,1],其中0指定黑色,1指定白色。颜色的亮度增加Y增加。
同相,大约是图像中蓝色或橙色色调的数量。在[-0.5959,0.5959]范围内,负数表示蓝色调,正数表示橙色调。作为增加,颜色的饱和度增加。
,大约是图像中绿色或紫色色调的数量。在[-0.5229,0.5229]范围内,负数表示绿色调,正数表示紫色调。作为增加,颜色的饱和度增加。

使用<一个href="//www.tianjin-qmedu.com/help/images/ref/rgb2ntsc.html">rgb2ntsc和<一个href="//www.tianjin-qmedu.com/help/images/ref/ntsc2rgb.html">ntsc2rgb用于在RGB和YIQ颜色空间之间转换的函数。

因为亮度是NTSC格式的组成部分之一,RGB到NTSC的转换对于分离图像中的灰度信息也很有用。事实上,工具箱起作用了<一个href="//www.tianjin-qmedu.com/help/matlab/ref/rgb2gray.html">rgb2gray和<一个href="//www.tianjin-qmedu.com/help/images/ref/ind2gray.html">ind2gray使用rgb2ntsc函数,从彩色图像中提取灰度信息。

相关话题