彩色图像处理基础

彩色图像处理基础

彩色基础

颜色的描述

物体本身的颜色是由光反射所产生的,这种反射是由物体的物理性质决定的,不同的物体由于光的吸收、发射光谱等因素的差异拥有了不一样的颜色。但人类对颜色的解释则更为复杂,这种解释主要来源于生活经验,我们通过视觉感知到的特征对光的颜色类别进行描述,往往还伴随着心理和生理因素的影响,难以定量分析,因此这里所讨论的颜色主要指由物体物理性质决定的颜色。

一般意义上的彩色光波长范围为$[400nm,700nm]$,描述彩色光源的物理量主要包括:

  • 辐射亮度:指从光源流出的总能量,单位为$W$;
  • 发光强度:指观察者从光源感知到的总能量,单位为$lm$;
  • 亮度:体现了发光强度的消色概念,是一个主观描述子,在后文的彩色模型中会详细讨论。

出于标准化描述的考虑,国际照明委员会(CIE)规定了三原色的波长:

需要强调的是,与“原色”本身的字面含义不同,规定三原色的目的仅仅是为了标准化描述,并不意味着以不同的发光强度混合这三种标准原色就能产生所有的可见颜色。

光的原色和颜料的原色定义不同,颜料的原色定义为减去或吸收光的一种原色,同时反射或投射其他两种原色,因此颜料的原色恰好对应于光的二次色,即深红色(红色+蓝色)、青色(绿色+蓝色)、黄色(红色+绿色),这两套原色体系的对比如图所示:

1280px-AdditiveColorMixing

光的原色

SubtractiveColorMixing

颜料的原色

我们可定义形成任意特殊颜色的红色量、绿色量和蓝色量为三色值,记作$X,Y,Z$,并定义三色系数为

由此可以通过三色系数来规定某种色彩。

色度与色度图

不同颜色之间的区分主要依靠人为引入的描述量亮度、色调和饱和度,这将会在下文的HSI模型中详细讨论,这里可以简单理解为:亮度作为主观描述子体现发光强度的消色概念;色调表示了观察者感知到的主导颜色;饱和度表示了与某种色调混合的白光量,体现了颜色的相对纯度。通常将色调和饱和度一起称为色度,由此一种颜色可以通过其亮度和色度来表征。

通过CIE色度图也可以对颜色进行规定。如下所示:

1280px-PlanckianLocus

这里的$x,y$即为上文所述的三色系数,表示红色和绿色所占的比例,对于任意点的$x,y$值可以计算出$z$(蓝色)值:

色度图的舌形边界给出了光谱中的纯色所在位置,它们是完全饱和的,其波长范围为$[380nm,780nm]$。除边界外位于色度图内部的点均表示混合色,特别地,图中白光对应的点称为等能量点,代表了三原色的等比例混合,其饱和度为0,标注在下图中。一个点越远离边界、越接近等能量点,其饱和度越低。

色度图中任意两点的连线段定义了不同的颜色变化,例如连接纯红色点和纯蓝色点的线段上所有点的颜色都是由纯红色和纯蓝色混合得到,根据颜色混合比例的不同可能更靠近红色端或更靠近蓝色端。这一结论可以推广到三个点的情况,即连接三个颜色点中的任意两点可以得到一个”颜色三角形“,这个三角形边界上及其内部的任何点对应的颜色都可以由三个顶点对应的颜色组合产生。由此我们可以得到RGB三原色所能产生的颜色范围:

CIExy1931_AdobeWGRGB

可以看到这个三角形并未覆盖整个色度图,这也再次验证了三原色的并非意味着可以通过对它们的不同比例混合产生所有的颜色。这一特殊的颜色范围称为彩色域,同时这也是今天高质量彩色打印设备的彩色域。

彩色模型

概述

彩色模型(又称彩色空间、彩色系统)为我们定义了颜色坐标系及其内部的子空间。通过这种定义,模型内部的每种颜色都可以用子空间内包含的一个点表示,从而通过一种标准的方式规定了颜色的表达。

如今大部分彩色模型都可以划分为为面向硬件和面向应用两类。常见的模型包括:

  • 面向硬件:RGB模型、CMY模型、CMYK模型,主要面向彩色显示器、彩色摄像机、彩色打印等;
  • 面向应用:HSI模型,主要面向人类对颜色的描述和解释。

下面将介绍常见的几个色彩模型。

RGB彩色模型

RGB彩色模型(又称三原色光模型或红绿蓝颜色模型,下称RGB模型),是一种加色模型,即将红(Red)、绿(Green)、蓝(Blue)三原色的色光以不同的比例相加,以合成产生各种色彩光。

RGB模型中的颜色坐标系是根据笛卡尔坐标系建立的,如图所示为RGB坐标系,其中的三个坐标轴分别代表RGB三种颜色的分量。

image-20221125150432499

假定所有的颜色值已经归一化,颜色表示中R,G,B的值都位于[0,1]内,我们可以得到一个如图所示的单位立方体,即RGB彩色立方体:

RGB_color_solid_cube

RGB模型中的颜色都是位于立方体内部或立方体上的点,可以定义为从坐标系原点向外延伸的向量。其中RGB的三原色位于单位立方体沿三根轴方向分布的三个顶点上:红色$(1,0,0)$,绿色$(0,1,0)$,蓝色$(0,0,1)$,它们混合形成的二次色则位于与之相邻的另外三个顶点上:黄色$(1,1,0)$,深红色$(1,0,1)$,青色$(0,1,1)$,此外还有两个特殊的颜色的位置是黑色$(0,0,0)$和白色$(1,1,1)$,它们的连线是立方体的一条体对角线,同时也是灰度级也沿着这条连线从黑色变为白色。

RGB模型中图像由三幅分量图像组成,实际应用中送入RGB显示器时将会合并三种原色对应的图像得到一幅彩色图像,一个三通道分解的实例如下:

xpixel图片修改

定义表示每个像素所用的比特数为像素深度,则如果我们有一幅RGB图像三个分量图像均为$x$比特图像,它的每个RGB像素的像素深度为$3x$比特。特别地,当像素深度达到24比特时称为全彩色图像

值得注意的是,对于确定了像素深度的图像,在未归一化前坐标轴的值域要做相应改变,例如对于8比特图像,值域为$[0,255]$,白色的坐标为$(255,255,255)$。

CMY与CMYK彩色模型

CMY模型

CMY彩色模型使用青色(Cyan)、深红色(Magenta)、黄色(Yellow)三种颜料原色构成彩色模型,将红色、绿色和蓝色作为二次色。下图是这一颜色模型的叠色示意:

顏色減法

其对应的坐标系和归一化后得到的彩色立方体如下:

cmyclrs1

CMY模型和RGB模型存在着简单的转换关系:

这里的转换关系公式应用于图像中的独立像素,并假设已经进行过归一化,下同。

由这一转换关系可以看出,$R$分量的增大会导致$C$分量的减小,极限情况下有$R=1,C=0$,这表明青色颜料不反射红光。同理我们也可以得到深红色颜料不反射绿光,黄色材料不反射蓝光等。

CMYK模型

CMYK模型,被普遍称为“印刷四分色模式”,是彩色印刷时采用的一种套色模式。它利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓“全彩印刷”的效果。使用的四种颜色简称为CMYK,如下图所示。其中CMY与上面介绍的CMY模型完全一致,不同之处在于引入黑色(K,全称Key plate)构成印刷四分色模式,因而得到了更广泛的应用。

CMYK_color_swatches

CMY到CMYK的转换关系为

CMYK到CMY的转换则为:

式中带$’$的量属于CMYK系统,不带$’$的量属于CMY系统。

HSI模型

定义

前面所述的RGB模型、CMY模型、CMYK模型彼此之间存在简单的转换关系,因此非常适合于硬件实现,同时也符合人眼对于相应原色的较强感知。但是这类颜色模型都存在类似的弊端。例如已知三种原色混合的百分比,我们不能直接给出颜色混合的结果;给定某一颜色,我们也无法给出单一的颜色组合或者区间来描述它,换言之,这类颜色模型在彩色图像生成方面是理想的,但在描述颜色方面存在劣势,会增大图像分析与处理的工作量,而接下来引入的HSI模型则解决了这一问题。

HSI颜色模型是美国色彩学家孟塞尔(H.A.Munseu)于1915年提出的,它反映了人的视觉系统感知彩色的方式,用H、S、I三参数描述颜色特性,这三个量是人们从现实图像世界抽象出来的概念,这套概念比RGB模型更符合人的视觉特性,因此HSI模型在描述人类实际解释的颜色方面有较大的优势。

  • 色调

色调定义颜色的频率,用H表示,这是一种描述纯色的属性,例如我们可以说某个彩色物体的色调是纯蓝色、亮黄色或者红色。

图示表示中,H用角度$(0-360^\circ)$表示它反映颜色最接近的光谱波长,如红色为$0^\circ$,绿色为$120^\circ$,蓝色为$240^\circ$。

image-20221125172626586

  • 饱和度

饱和度表示颜色的深浅程度,用S表示,是纯色被白光稀释的程度的度量,一种颜色的饱和度越高,它就越鲜艳;反之,一种颜色的饱和度越低,它就越接近于灰色。调节饱和度,我们可以得到图像上明显的差异效果:

Saturation_change_photoshop

如果用色环图示进行表示,则S代表色环的原点到彩色点的半径长度。例如在下图中,有向线段的外端点为纯色,其饱和度为1(100%),而线段根部(原点处),饱和度为0(0%)。

image-20221125173459533

  • 亮度

亮度是一个不可测量的主管描述子,一般用I表示,它体现了发光强度的消色概念,也是描述彩色感觉的关键参数之一。

与亮度相似的一个概念是明度,一般用V表示,用明度替换亮度即可得到与HSI模型类似的HSV模型。两者的联系是:一种纯色的明度等于白色的明度,而纯色的亮度等于中度灰的亮度,换言之,即明度值是相对1处而言,亮度值是相对0.5处而言。

不论颜色如何,明度分布范围为从最亮1(100%)到最暗0(0%):

image-20221126113125215

而亮度分布范围则是从最亮0.5(50%)到最暗0(0%)再到最亮0.5(50%):

image-20221126113114491

颜色模型需要满足唯一性,即模型内一确定点对应的颜色应唯一,同时外界一确定颜色对应的模型内点也应唯一。上文所述的H、S两者可以构成一个圆,I垂直于这个圆面,将他们表示在一个空间中可以得到一个圆柱,但该圆柱颜色空间不满足唯一性,因此并不适用于做颜色模型(例如当$I=0$时,HS将没有意义,圆柱的整个底面都是黑色)。

由此我们将圆柱的底部挤压为一个点,变成圆锥模型,这时就符合颜色模型定义了。故HSI色彩空间可以用一个圆锥空间模型来描述,如下图所示:

image-20221125171020679

色彩空间的圆锥模型相把色调、亮度和色饱和度的变化情形表现得很清楚,因此HSI色彩空间可以大大简化图像分析和处理的工作量。

与RGB模型的关系

RGB模型到HSI模型的转换关系为(假设RGB值已经归一化到区间$[0,1]$):

  • 色调分量H(单位:$\circ$):

其中

  • 饱和度分量S:
  • 亮度分量I:

HSI模型到RGB模型的转换关系为(假设HSI已归一化后H乘以$360^{\circ}$):

  • RG扇区$(0^\circ \leq H <120^\circ)$
  • GB扇区$(120^\circ \leq H <240^\circ)$

在这个扇区时,令

得到:

  • BR扇区$(240^\circ \leq H <360^\circ)$

在这个扇区时,令

得到:

这一转换关系也可以从RGB彩色立方体中获得,如图所示。

image-20221126095742252

将立方体旋转到如图所示位姿,黑色作为基点,白色作为顶点,两点连线构成了亮度轴,亮度沿亮度轴分布在[0,1]内。要获取任一点的亮度分量,只需要取包含该彩色点并与亮度轴垂直的平面,该平面与亮度轴的交点即为亮度分量;饱和度对应于该彩色点到亮度轴的距离;对于已知彩色点将其和黑色点、白色点连接构成颜色三角形,则由于三角形内部的点都由三个顶点对应颜色产生,而黑色和白色不改变色调,所以同一个三角形平面内的点色调均相同,因此色调对应于这一平面绕亮度轴旋转的角度。

YUV(YCbCr)模型

定义

YUV模型也使用三个分量来存储数据,对每个像素而言其存储结构为:

webp

三个分量具体的意义是:

  • Y:用于表示明亮度(Luminance或Luma),即灰度值,表示了图片的总体轮廓,常见的亮度图如下:

    v2-3943a5e8886f08863cf6ee7697c46fa0_r

  • U、V:用于表示色度(Chrominance或Chroma),描述色彩颜色和颜色饱和度,UV图如下:

v2-6f30f523322f7817d3f17f429e81e49b_720w

下面举一个例子,图中上方第一张图片为YUV图片的原图,下面的图片分别为只有Y分量、只有U分量、只有V分量数据的图片。可以看到只有Y分量的图片能够看清楚图片的轮廓,但图片是黑白的。

800px-Barns_grand_tetons_YCbCr_separation

(这里其实是对U,V分量的灰度图进行了伪上色过程,具体参考的就是上面的UV图或者下面的crcb图,如我们现在要画U分量的图,就固定V分量的值然后画一条平行于U轴的直线,按这个直线的色彩分布进行伪上色)

此外还需指出,与YUV模型意义相近的一个常用模型叫做YCbCr。 YCbCr是YUV模型的具体实现,YCbCr是在世界数字组织视频标准研制过程中作为ITU - R BT1601建议的一部分,它其实是YUV经过缩放和偏移的翻版。其中Y与YUV中的Y含义一致,为亮度分量;Cb,Cr同样都指色彩,Cb指蓝色色度分量,而Cr指红色色度分量,其色度图如下:

1280px-YCbCr-CbCr_Scaled_Y50

YUV模型的主要优点包括:

  1. 便于压缩编码;
  2. 数据量相较于其他颜色模型更小;
  3. 能够兼容老式黑白电视。

其中第三个优点已经可以看出,因为Y分量单独显示是其实就是黑白图像,因此YUV要想兼容黑白电视只需要去除UV相关的数据就可以了。其他优点将在后面的介绍中体现。

与RGB模型的关系

YUV与RGB之间的转换需要按照相应标准进行,常见的标准有ITU-R BT.601(标清)、ITU-R BT.709(高清)、ITU-R BT.2020(超高清),除标准之外还要区分不同的颜色范围,下面仅示例一种标准下的转换公式。

RGB到YUV的转换,就是将图像所有像素点的R、G、B分量转换到Y、U、V分量的过程:

YUV到RGB的转换类似:

这种转换的实际应用价值是:将图像显示器中以RGB模型来显示的图像转换到YUV模型,便于传输图像数据,还能够节省带宽。

采样

一般的视频采集芯片输出的码流是YUV数据流的形式,视频处理也通常是在原始YUV码流上进行编码和解析,因此了解YUV模型的采样和存储结构对图像行业从业者有着重要意义。YUV码流的存储格式与其采样的方式密切相关,这里将首先简要介绍YUV主流的采样方式,包括YUV444YUV422YUV420,不同类型之间的主要区别是使用了不同的方式进行U、V分量的采样。

  • YUV444

YUV444中每个Y分量分别对应一个U分量和一个V分量。

下面的图示中,Y用×表示,UV用○表示:

1240

  • YUV422

YUV422中每2个Y分量共用一个U分量和一个V分量。

1240-166997380331210

  • YUV420

YUV420中每4个Y分量共用一个U分量和一个V分量。

auto-orient

通过计算可以得到,在存储一张$2\times 2$像素的图片时:YUV444需要$12\times8$bit,YUV422需要$8\times 8$bit,而YUV420则只需要$6\times 8$bit。可以看到YUV444存储的数据量与RGB相同,但YUV422和YUV420却只需要存储RGB的数据量的$\frac{2}{3}$和$\frac{1}{2}$,这也是YUV模型的重要优势之一。

存储

YUV有packed和planar两种存储方式。其中packed格式是先连续存储所有的Y分量,然后依次交叉存储U、V分量;planar格式也会先连续存储所有的Y分量,然后先连续存储U(或V)分量的数据,再连续存储V(或U)分量的数据。

每种YUV类型都会有多种存储方式,常用的有YUV422和YUV420两种,读者可自行查阅相关存储结构细节,这里不做过多展开。

参考文献

《数字图像处理》(第四版).冈萨雷斯著.

三原色光模式- 维基百科,自由的百科全书

CMYK color model - Wikipedia

颜色- 维基百科,自由的百科全书


彩色图像处理基础
http://example.com/2022/12/17/彩色图像处理基础/
作者
Thunderbolt
发布于
2022年12月17日
许可协议