视频处理加速及应用实践:基于英特尔GPU
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 RGB和YUV色彩空间模型

通过对人眼构造的介绍,我们知道人眼通过感受三种颜色的刺激看到了丰富多彩的世界。这个理论在物理学上也得到了验证,一种颜色的光不仅可以由单一波长的光产生,也可以由两种或两种以上其他波长的光混合而成,这样就得到了三基色理论(也称三原色理论)。基本色指的是不能通过混合调配其他颜色而得到的色彩,而其他色彩可以混合三个基本色得到。所以从理论上来说,根据实际应用的需求,人们可以定义不同的基本色,同时配合不同的混合方法得到色彩的不同表达方式。例如,在混合方式上,就有加色法和减色法等。加色法又称为叠加型原色系,减色法又称为消减型原色系。不管是哪个色系,其他色彩都是通过三种基本色混合生成的,区别在于,当把加色系的三种基本色的饱和度(可以理解为色彩的纯度)均调至最大并且等量混合时,呈现的是白色,而减色系呈现的却是黑色。光线就属于加色系,例如常见的RGB色彩空间是加色系,而CMYK[青色、洋红色、黄色、黑色]色彩空间就是减色系。所以一道著名的面试题就是:当把RGB的各个分量都调至最大,并且等量混色时,例如在8比特采样下,每个分量值都是255,得到的是黑色还是白色?请读者自己考虑。

如何把三基色的色彩理论映射到真实的世界呢?这就需要引入色彩空间的概念了。空间通常表示物体间具有相对位置和相对方向的无限范围,为了准确地描述某个物体的位置,就需要定义一个参考点,然后定义一组数据来标识这个物体相对于参考点的位置。那么问题来了,需要多少组数据才能够准确地标识某个物体的相对位置呢?这就需要引入空间维度的概念。从数学上来说,维度这个概念可以简单地理解为在某空间中给定一个点,可以从这个点最多穿过多少条互相垂直的直线。举个例子,在一张平铺的白纸上点一个点,那么穿过这个点的互相垂直的直线最多有两条,所以空间维度是2,也称这个空间为二维空间。想要在这个二维空间上表示一个点的话,就需要引入一个参考点(也叫原点)以及一个二维正交直角坐标参考系,这样,在这张白纸上所有的点就有了唯一的一组数据(二维的)来表示它与原点的相对位置。相同的理论可以扩展到三维、四维以及多维空间上。

按照上面的描述,三基色的色彩体系就可以看作一个三维空间,每一种色彩都可以看作这个空间上的一个点,定义好空间的原点和三维正交直角坐标参考系以后,每一个点(也就是每一种颜色)都可以准确无误地标识出来。由于在一个被定义好的色彩空间里,每一种色彩都可以被数字化地准确表示出来,因此我们将这样的色彩空间叫作色彩模型。同时,因为人眼对色彩感知的局限性,在某个色彩模型中,色彩的范围并不像我们身处的空间一样是无限的,所以某个色彩模型在相应的空间中会出现一个有限的覆盖区域,这个区域叫作色域。由色域的定义可知,它是色彩的某个完全子集,每一种色彩的精度和强度都与具体坐标系的定义有关,它可以代表某个特定色彩空间的颜色范围、一个技术系统能够产生的颜色的总和,或者某个显示设备的颜色范围等。

既然不同的基向量对应不同的空间,那么伟大的科学家们就考虑创造一个标准化的色彩空间模型,在20世纪20年代后期,W. David Wright和John Guild等人基于人类视觉色彩系统的特性做了大量实验,最终得到了一个仅依赖人眼本身的色彩空间模型,并且由国际照明委员会(英语为International Commission on Illumination,法语为Commission Internationale de I’Eclairage,采用法语简称为CIE)发布为CIE 1931XYZ色彩空间,随后CIE又发布了基于RGB的CIE 1931 RGB色彩空间,如图1-1所示。CIE 1931 XYZ/RGB色彩空间以数字化方式来描述人的视觉感应,与某个具体设备无关,而且包含普通人眼可见的所有颜色,通常被认为是很多其他色彩空间模型定义的基础。除了定义坐标值和范围外,这个模型也定义了标准亮度值,使用字母D来标识,例如D65表示平均日光,相关色温约为6500K。

图1-1 RGB色彩空间

1.2.1 RGB色彩空间模型

在介绍完通用的色彩空间和色彩模型的概念之后,我们来重点介绍一下最直观、最常见的色彩空间模型——红绿蓝色彩模型(Red、Green、Blue Color Model),为了方便叙述,简称为RGB色彩模型。如图1-2所示,RGB色彩模型就是将RGB作为三原色来构建色彩空间模型,也就是说此空间上的任何一种颜色都可以通过将RGB三原色的色光以不同的比例相加而成。在数学上,参考三维立体空间的描述方式,并采用归一化的思想,RGB三基色分别作为正交直角坐标参考系的三个基准分量,幅值设定在[0,1]之间,也就是使用0到1之间的非负数作为此空间中各个点(色彩)的坐标值,分量的强度值沿坐标轴方向递增,由此可见,原点[0, 0, 0]表示黑色,各分量的最大值[1, 1, 1]表示白色,其他色彩都在这个范围内,这样,此空间中所有的色彩就有唯一的标识了。

图1-2 RGB色彩空间模型示意图

1.2.2 YUV色彩空间模型

介绍完RGB色彩空间模型之后,我们再来看一种在视频处理领域比RGB色彩空间模型应用得更加广泛的模型,这就是YUV色彩空间模型。YUV色彩空间模型中的三个分量分别用Y、U、V来标识,其含义并没有RGB那么直观。Y分量表示亮度(Luminance)信息,简称为Luma,也叫灰阶信息,另外两个分量U和V表示色度(Chrominance)信息,简称为Chroma,描述的是图像的颜色及饱和度。YUV色彩空间模型的神奇之处在于,如果一幅图像只包含Y分量的话,那么也能完整地展现图像的内容,只是没有了颜色,就好像一幅黑白画,一般称之为灰度图像,或者灰阶图像。而不像RGB色彩空间模型那样,每个分量表示一个基本色,只有把三个分量的值叠加在一起,才能表示一个全彩色的值,单独一个分量不能够单独使用。使用了YUV色彩空间模型,彩色电视机和黑白电视机的信号就可以完美地融合了。同时,根据前面对人眼视觉系统的描述可知,人眼对色彩分量不是太敏感,所以我们可以适当降低U分量和V分量的精度来达到压缩数据的目的,这也就是长期以来YUV色彩空间模型在视频编码标准中得到广泛使用的原因。

YUV色彩空间模型在实际应用中一般都采用YCbCr格式。YUV和YCbCr的Y分量的定义是一致的,Cb是Chroma Blue的缩写,描述的是RGB色彩空间模型的蓝色部分与RGB色彩空间模型的亮度值之间的差异;而Cr是Chroma Red的缩写,反映了RGB色彩空间模型的红色部分与RGB色彩空间模型的亮度值之间的差异。在YUV色彩空间模型的家族中,YCbCr色彩空间模型在数字电视和图像压缩方面都有着广泛的应用,以至于很多时候YUV就等同于YCbCr

除了传统的YCbCr色彩空间模型,还有YCgCo色彩空间模型,Y分量还是与YUV、YCbCr保持一致,差别仍然在色度分量上。Cg是Chroma Green的缩写,描述色度的绿色分量;Co是Chroma Orange的缩写,表示色度的橙色分量。相对于YCbCr色彩模型,YCgCo色彩空间模型的优势如下:可以近乎无损地与RGB色彩空间模型进行相互转换,算法简单而且复杂度非常低;同时可以避免与RGB色彩空间模型相互转换的舍入误差,有效减少了颜色失真;可以更好地去除颜色组件之间的相关性,进而提高压缩性能以及实现压缩完全无损的可逆性。所以,YCgCo色彩空间模型已经被很多视频处理组织所采样,例如H.264 /MPEG-4 AVC、HEVC和JPEG XR等。

1.2.3 YUV色彩模型与RGB色彩模型的转换

从RGB色彩模型到YUV色彩模型的转换公式如下:

上面的逆变换,也就是从YUV色彩模型到RGB色彩模型的转换公式如下:

从RGB色彩模型到YCbCr色彩模型的转换公式如下:

它的逆变换,也就是从YCbCr色彩模型到RGB色彩模型的转换公式如下:

从RGB色彩模型到YCgCo色彩模型的转换公式如下:

它的逆变换,也就是从YCgCo色彩模型到RGB色彩模型的转换公式如下:

从转换公式可以看出,从YCgCo色彩模型到RGB色彩模型的转换非常简单,对于计算机而言,只需要两个加法和两个减法,而且没有实数值系数。Y的值在0到1的范围内,而Cg和Co的值在-0.5到0.5的范围内,这与YUV色彩空间模型(如YCbCr)的典型值相同。例如,在RGB系统中将纯红色表示为(1, 0, 0),在YCgCo系统中将纯红色表示为。但是,由于变换矩阵的系数是简单的二进制分数,因此它比YCbCr转换更容易计算。