第 6 章 彩色图像处理(Color Image Processing)
目录
6.2 色彩模型(色彩空间或色彩系统)(Color models)
6.2.1 RGB色彩模型(The RGB color models)
6.2.2 CMY和CMYK色彩模型(The CMY and CMYK color models)
6.2.3 HSI色彩模型(The HSI color models)
6.2.3.1 从RGB 到HIS的颜色转换(Converting Colors from RGB to HSI)
6.2.3.2 从HIS 到RGB的颜色转换(Converting Colors from HIS to RGB)
6.2.4 一种设备无关的色彩模型(A device independent color model)
6.3 伪彩图像处理(Pseudocolor image processing)
6.3.1 强度分片和色彩编码(Intensity slicing and color coding)
6.3.2 强度到色彩的转换(Intensity to color transformations)
6.4 全彩图像处理基础(Basics of full-color image processing)
6.5 色彩转换(Color transformations)
6.5.4 色调和色彩校正(Tone and color corrections)
6.5.5 彩色图像的直方图处理(Histogram processing of color images)
6.6 彩色图像平滑和锐化(Color image smoothing and sharpening)
6.6.1 彩色图像平滑(Color image smoothing)
6.6.2 彩色图像锐化(Color image sharping)
6.7 在图像分割中使用颜色信息(Using color in image segmentation)
6.7.1 在HSI色彩空间中的图像平滑(Segmentation in HIS color space)
6.7.2 RGB空间中的图像分割(Segmentation in RGB space)
6.7.3 色彩边缘检测(Color edge detection)
6.8 彩色图像中的噪声(Noise in color images)
6.9 彩色图像的压缩(Color image compression)
导读(Preview)
在图像处理中使用彩色主要基于两个因素。首先,颜色是一种强大的描述符,通常可以简化场景中物体的识别和提取。第二,人类可以辨别数千种颜色,而只能辨别大约二十几种灰度阴影。后一个因素在人工图像分析中尤为重要。彩色图像处理分为两个主要领域:伪彩色(pseudo-color)处理和全彩色(full-color)处理。在第一类中,问题在于将颜色分配给特定的灰度强度或强度范围。在第二类中,图像通常使用全彩色传感器(例如数码相机或彩色扫描仪)获取。直到几年前,大多数数字彩色图像处理都是在伪彩色或降彩色级别进行的。然而,由于彩色传感器和处理硬件的价格变得合理,全彩色图像处理技术现在已广泛应用于各种领域。在接下来的讨论中,我们将看到前几章介绍的一些灰度处理方法也适用于彩色图像。
6.1 色彩基础(Color fundamentals)
尽管人脑感知和解释颜色的过程是一种尚未完全理解的生理心理现象,但颜色的物理本质可以通过基于实验和理论结果的形式化方法来表达。
1666年,Issac Newton爵士发现,当一束阳光穿过玻璃棱镜时,射出的光不再是白光,而是由一系列连续的颜色组成的光谱,从一端的紫色到另一端的红色。如图6.1所示,光谱可以大致分为六个区域:紫色、蓝色、绿色、黄色、橙色和红色。如果以全彩显示(参见图6.2),光谱中的每一种颜色都不会突然中断;相反,每一种颜色都会平滑地过渡到下一种颜色。
基本上,人类和其他一些动物感知到的物体颜色是由物体反射光的性质决定的。如图 6.2 所示,可见光由电磁波谱中相对狭窄的频率范围组成。如果物体反射的光在所有可见波长范围内都保持平衡,那么观察者会看到它是白色的。然而,如果物体在可见光谱的有限范围内优先反射光,则会呈现出某种颜色。例如,绿色物体主要反射波长在 500 至 570 纳米范围内的光,同时吸收其他波长的大部分能量。
光的特性是色彩科学的核心。如果光是无色的(不含任何颜色),那么它唯一的属性就是强度或亮度。20世纪30年代以前拍摄的电影胶片上呈现的就是这种无色光。正如第二章中所定义并在此后多次使用的那样,“灰度”(或强度)一词指的是一种标量强度测量值,其范围从黑色到灰色,最终到白色。

------------------------------图 6.1:白光穿过棱镜后形成的颜色光谱。(图片由通用电气公司照明事业部提供。)---------------------------------------------------------------

------------------------------图 6.2:构成电磁波谱可见光范围的波长。(图片由通用电气公司照明事业部提供。)-----------------------------------------------
可见光(Chromatic light)波长范围约为 400 至 700 纳米,涵盖电磁波谱的一部分。描述彩色光源特性的三个基本量是:辐射亮度或辐射率(radiance)、光度或发光率(luminance)和亮度(brightness)。辐射亮度是指光源发出的总能量,通常以瓦特(watts) (W) 为单位度量。光度以流明(lumens) (lm) 为单位度量,是衡量观察者从光源感知到的能量的度量。例如,在远红外光谱区域工作的光源可能具有显著的能量(辐射率),但观察者几乎无法感知到它;其光度几乎为零。最后,亮度是一个主观的描述符,实际上无法度量。它体现了非彩色强度概念,是描述颜色感觉的关键因素之一。
正如第2.1节所述,视锥细胞是眼睛中负责颜色视觉的感光细胞。详细的实验证据表明,人眼中的600万到700万个视锥细胞可以分为三大类,分别对应于红色、绿色和蓝色。大约65%的视锥细胞对红光敏感,33%对绿光敏感,只有约2%对蓝光敏感。然而,蓝光视锥细胞的灵敏度最高。图6.3显示了实验测得的平均曲线,详细描述了眼睛中红、绿、蓝三种视锥细胞对光的吸收情况。由于这些吸收特性,人眼看到的颜色是所谓的原色(primary colors)(红色(Red)、绿色(Green)和蓝色(Blue))的不同组合。

-----------------------------图 6.3:人眼中的红色、绿色和蓝色视锥细胞对光的吸收率随波长变化的函数关系图。-----------------------------------------------------
为了实现标准化,国际照明委员会(CIE,Commission Internationale de l’Éclairage )于 1931 年为三种原色指定了以下特定波长值:蓝色 = 435.8 nm,绿色 = 546.1 nm,红色 = 700 nm。该标准是在 1965 年获得图 6.3 所示结果之前制定的。因此,CIE 标准与实验数据仅近似吻合。需要注意的是,为了标准化而定义三个特定的原色波长并不意味着这三个固定的 RGB 分量单独作用就能生成所有光谱颜色。人们普遍误解“原色”一词的含义,认为这三种标准原色以不同的强度比例混合可以产生所有可见颜色。正如你稍后将会看到的,这种解释并不正确,除非波长也可以变化,在这种情况下,我们就不会再有三个固定的原色了。
原色可以混合生成光的次级色——品红色(红色加蓝色)、青色(绿色加蓝色)和黄色(红色加绿色)。以适当的强度混合三种原色,或将次级色与其对应的原色混合,即可产生白光。图 6.4(a) 展示了这一结果,图中也显示了三种原色及其组合生成次级色的过程。
区分光的原色和颜料或染料的原色非常重要。在后者中,原色定义为能够吸收或减去一种光原色,并反射或透射其他两种光原色的颜色。因此,颜料的原色是品红色、青色和黄色,而次级色是红色、绿色和蓝色。这些颜色如图 6.4(b) 所示。三种颜料原色的适当组合,或次级色与其对应的原色的组合,会产生黑色。

----------------------------图 6.4:光和颜料的原色和间色。(图片由通用电气公司照明事业部提供。)------------------------------------------
彩色电视接收是光色加色原理的一个例子。直到20世纪90年代,阴极射线管(CRT)彩色电视机的屏幕内部都由大量三角形排列的电子敏感荧光粉点组成。当受到激发时,每一个三色点阵中的每一个点都会发出一种原色光。管内的电子枪会调节发出红色光的荧光粉点的强度,产生与电视摄像机捕捉到的“红色能量”相对应的脉冲。每一个三色点阵中的绿色和蓝色荧光粉点也以同样的方式被调节。在电视接收器上观看时,每一个三色点阵发出的三种原色光会被人眼中的感光锥体接收并“叠加”在一起,最终被感知为一幅全彩图像。每秒钟三种颜色连续变化30次,从而在屏幕上形成连续图像的视觉效果。
20世纪90年代末,CRT显示器开始被平板数字技术取代,例如液晶显示器(LCD)和等离子显示器。尽管这些技术与CRT显示器在原理上存在根本区别,但它们都遵循相同的原理,即都需要三个子像素(红色、绿色和蓝色)来生成一个彩色像素。LCD利用偏振光的特性来阻挡或透射光线穿过液晶屏幕,而在主动矩阵显示技术中,薄膜晶体管(TFT)用于为屏幕上的每一个像素提供合适的信号。光滤波器用于在每一个像素三原色单元位置产生三种原色光。在等离子显示器中,像素是涂有荧光粉的微小气体单元,用于产生三种原色之一。单个单元的寻址方式与LCD类似。这种单个像素三原色单元坐标寻址能力是数字显示器的基础。
通常用于区分不同颜色的特征是亮度(brightness)、色调(hue)和饱和度(saturation)。正如本节前面所述,亮度体现了非彩色强度概念。色调是与光波混合物中主波长相关的属性。色调代表观察者感知到的主色。因此,当我们称一个物体为红色、橙色或黄色时,我们指的是它的色调。饱和度是指相对纯度或与色调混合的白光的量。纯光谱色是完全饱和的。像粉红色(红色和白色)和薰衣草色(紫色和白色)这样的颜色饱和度较低,饱和度与添加的白光量成反比。
色调和饱和度共同构成色度(chromaticity),因此,颜色可以用其亮度(brightness)和色度(chromaticity)来表征。形成任何特定颜色所需的红色、绿色和蓝色的量称为三刺激值(tristimulus),分别用 X , Y 和 Z 表示。颜色则由其三色系数来指定,定义为:
(6-1)
(6-2)
和
(6-3)
从这些公式我们可以看出
(6-4)
对于可见光谱中的任何波长,产生与该波长对应的颜色所需的三个三刺激值可以直接从根据大量实验结果编制的曲线或表格中获得(Poynton [1996, 2012])。
另一种指定颜色的方法是使用CIE色度图(参见图6.5),该图显示了颜色成分与x (红色)和y (绿色)的关系。对于任何x和y值,相应的z(蓝色)值可以根据公式(6-4)计算得出,因为z = 1 - (x + y)。例如,图6.5中标示为绿色的点,其绿色成分约为62%,红色成分约为25%。根据公式(6-4),蓝色成分约为13%。
舌形色度图边界周围标示了各种光谱颜色的位置——从380纳米的紫色到780纳米的红色。这些是图6.2所示光谱中的纯色。任何不在边界上但在图内的点都代表纯光谱颜色的某种混合。图6.5所示的等能量点对应于三种原色的等比例混合;它代表CIE标准白光。色度图边界上的任何点都具有完全饱和度。当一个点离开边界并接近等能量点时,颜色中会添加更多的白光,饱和度也会降低。在等能量点处,饱和度为零。
色度图对于颜色混合非常有用,因为图中连接任意两点的直线段代表了通过加法混合这两种颜色可以获得的所有不同颜色变化。例如,考虑图 6.5 中从红色点到绿色点绘制的直线。如果红色光比绿色光多,则代表新颜色的点将位于该线段上,但会更靠近红色点而不是绿色点。类似地,从等能量点到图表边界上任意一点绘制的直线将代表该特定光谱颜色的所有色调。
将此过程扩展到三种颜色也很简单。为了确定在色度图中,由任意三种给定颜色可以得到的颜色范围,我们只需将这三个颜色点连接起来。结果是一个三角形,三角形内部或边界上的任何颜色都可以通过这三个顶点颜色的不同组合来生成。以任意三种固定颜色为顶点的三角形无法包含图 6.5 中的整个颜色区域。这一观察结果以图形方式印证了我们之前提出的观点:并非所有颜色都可以通过三种单一的固定原色获得,因为三种颜色只能构成一个三角形。

------------图 6.5:CIE色度图。(图片由通用电气公司照明事业部提供。)-----------
图 6.6 中的三角形显示了 RGB 显示器能够产生的代表性颜色范围(称为色域(color gamut))。三角形内的阴影区域表示当今高质量彩色打印设备的色域。彩色打印色域的边界是不规则的,因为彩色打印是加色和减色混合的结合,这个过程比在显示器上显示颜色要难控制得多,而显示器显示颜色是基于三种高度可控的光原色的叠加。

----------------------------------图 6.6:彩色显示器(三角形)和彩色打印设备(阴影区域)的典型色域示意图。------------------------------
6.2 色彩模型(色彩空间或色彩系统)(Color models)
色彩模型(也称为色彩空间(color space)或色彩系统(color system))的目的是以某种标准方式方便地指定颜色。本质上,色彩模型是对以下两项的规范:(1) 一个坐标系统,以及 (2) 该坐标系内的一个子空间,使得模型中的每一种色彩都由该子空间中的一个点来表示。
目前使用的大多数颜色模型要么面向硬件(例如彩色显示器和打印机),要么面向应用,以颜色处理为目标(例如创建用于动画的彩色图形)。在数字图像处理领域,实际应用中最常用的硬件导向型模型包括用于彩色显示器和各种彩色摄像机的 RGB(红、绿、蓝)模型;用于彩色打印的 CMY(青色(cyan)、品红色(magenta)、黄色)和 CMYK(青色、品红色、黄色、黑色)模型;以及 HIS(色相(hue)、饱和度(saturation)、强度(intensity))模型,该模型与人类描述和解释颜色的方式非常吻合。HSI 模型还有一个优点,它可以将图像中的颜色信息和灰度信息分离,因此适用于本书中介绍的许多灰度处理技术。目前使用的颜色模型种类繁多,这反映了色彩科学是一个涵盖众多应用领域的广阔领域。虽然有些模型本身很有趣且实用,但为了专注于当前的任务,我们将重点介绍一些在图像处理中具有代表性的模型。掌握本章内容后,你将能够轻松理解目前使用的其他色彩模型。
6.2.1 RGB色彩模型(The RGB color models)
在RGB模型中,每一种颜色都由其主要光谱成分——红色、绿色和蓝色组成。该模型基于笛卡尔坐标系。我们感兴趣的颜色子空间是图6.7所示的立方体,其中RGB原色位于三个顶点;次级色青色、品红色和黄色位于另外三个顶点;黑色位于原点;白色位于距离原点最远的顶点。在该模型中,灰度(RGB值相等的点)沿着连接黑色和白色两点的直线延伸。该模型中的不同颜色是位于立方体上或内部的点,并由从原点延伸的向量定义。为方便起见,假设所有颜色值都已归一化,因此图6.7中的立方体是单位立方体。也就是说,在该表示中,R、G和B的所有值都假定在[0, 1]范围内。请注意,RGB原色可以解释为从立方体原点发出的单位向量。

-----------------------------图 6.7:RGB颜色立方体的示意图。沿主对角线上的点具有不同的灰色值,从原点的黑色到点(1, 1, 1)处的白色。--------------------------
RGB颜色模型表示的图像由三个分量图像组成,每一个分量图像对应一种原色。正如第6.1节所述,当这些图像输入到RGB显示器时,它们会在屏幕上组合生成一个复合彩色图像。用于表示RGB空间中每一个像素的位数称为像素深度(pixel depth)。考虑一个RGB图像,其中红色、绿色和蓝色图像都是8位图像。在这种情况下,每一个RGB彩色像素(即由三个值(R, G, B)组成的元组)的深度为24位( 3个图像平面乘以每一个平面的位数)。“全彩图像(full-color)”一词通常用于表示24位RGB彩色图像。24位RGB图像中可能的颜色总数为 。图6.8显示了与图6.7中的图对应的24位RGB颜色立方体。另请注意,对于数字图像,立方体中的值范围会缩放到图像中位数所能表示的数值范围。如果像上面那样,原色图像是8位图像,则立方体沿每一个轴的范围变为[0, 255]。例如,白色在立方体中的位置为[255, 255, 255]。

-----------------------------图 6.8:一个24位RGB颜色立方体。---------------
例子 6.1 生成RGB颜色立方体及其三个隐藏平面的横截面。
图 6.8 中的立方体是一个实体,由前一段提到的 种颜色组成。一种观察这些颜色的有效方法是生成色彩平面(立方体的面或横截面)。具体做法是固定三种颜色中的某一种,让另外两种颜色变化。例如,穿过立方体中心且平行于图 6.8 中 GB 平面的横截面是平面 (127, G, B),其中 G 和 B 的取值范围为 0, 1, 2, ..., 255 。图 6.9(a) 显示,将三个单独的颜色分量图像输入到彩色显示器即可生成该横截面的图像。在分量图像中,0 代表黑色,255 代表白色。请注意,输入到显示器的每一个分量图像都是灰度图像。显示器负责组合这些图像的强度,从而生成 RGB 图像。图 6.9(b) 显示了以类似方式生成的图 6.8 中立方体的三个隐藏表面平面。
获取彩色图像的过程如图 6.9(a) 所示,但方向相反。彩色图像可以通过使用三个分别对红色、绿色和蓝色敏感的滤光片(filters)来获取。当我们使用配备其中一个滤光片的单色相机拍摄彩色场景时,得到的是一幅单色图像(monochrome),其强度与该滤光片的响应成正比。重复此过程,分别使用每一个滤光片进行拍摄,即可获得三幅单色图像,它们分别是彩色场景的 RGB 分量图像。实际上,RGB 彩色图像传感器通常将此过程集成到一个设备中。显然,如图 6.9(a) 所示显示这三幅 RGB 分量图像,即可得到原始彩色场景的 RGB 彩色图像。

--------------------------------图 6.9:(a) 横截面颜色平面 (127, G, B) 的 RGB 图像。(b) 图 6.8 所示颜色立方体中的三个隐藏表面平面。-------------------------
6.2.2 CMY和CMYK色彩模型(The CMY and CMYK color models)
如第 6.1 节所述,青色、品红色和黄色是光的次级色(secondary color),或者也可以说是颜料的原色。例如,当用白光照射涂有青色颜料的表面时,表面不会反射红光。也就是说,青色会从反射的白光中吸收红光,而白光本身是由等量的红光、绿光和蓝光组成的。
大多数在纸张上沉积彩色颜料的设备,例如彩色打印机和复印机,都需要输入 CMY 数据,或者在内部执行 RGB 到 CMY 的转换。这种转换是通过简单的运算实现的:
(6-5)
这里假设所有 RGB 颜色值都已归一化到 [0, 1] 范围内。公式 (6-5) 表明,从涂有纯青色的表面反射的光不包含红色(即公式中的 C = 1 – R )。类似地,纯品红色不反射绿色,纯黄色不反射蓝色。公式 (6-5) 还表明,可以通过从 1 中减去各个 CMY 值,轻松地从一组 CMY 值中获得 RGB 值。
根据图 6.4 所示,等量的青色、品红色和黄色三种原色颜料混合应该产生黑色。但在实际应用中,由于青色、品红色和黄色油墨通常并非纯色,因此将这些颜色混合印刷黑色时,往往会产生一种浑浊的棕色。为了获得真正的黑色(黑色是印刷中最主要的颜色),需要添加第四种颜色——黑色,用字母 K 表示,由此产生了 CMYK 颜色模型。添加的黑色量恰好是产生真正黑色所需的比例。因此,当出版商谈到“四色印刷”时,他们指的是三种 CMY 颜色,再加上一定比例的黑色。
对于从 CMY 到 CMYK 的转换,我们首先令
(6-6)
若 K = 1 ,那么我们就得到了纯黑色,没有任何颜色成分,由此可知:
(6-7) C = 0
(6-8) M = 0
(6-9) Y = 0
否则,
(6-10) C = (C – K ) /( 1 - K)
(6-11) M = (M – K )/( 1 - K)
(6-12) Y = ( Y – K )/( 1 – K )
其中所有值均假定在 [0, 1] 的范围内。从 CMYK 转换回 CMY 的公式如下:
(6-13) C = C * ( 1 – K ) + K
(6-14) M = M * ( 1 – K ) + K
(6-15) Y = Y * ( 1 – Y ) + K
正如本节开头所述,前面公式中的所有运算都是逐像素进行的。由于我们可以使用公式 (6-5) 在 CMY 和 RGB 颜色空间之间进行双向转换,因此我们可以使用该公式作为“桥梁”,在 RGB 和 CMYK 颜色空间之间进行转换,反之亦然。
需要注意的是,前面介绍的所有 RGB、CMY 和 CMYK 之间的转换都基于上述关系。这些颜色模型之间还有许多其他的转换方法,因此不能混用不同的方法,否则无法获得有意义的结果。此外,除非对设备进行校准(参见本节后面关于设备无关颜色模型的讨论),否则显示器上看到的颜色在打印出来后通常会大不相同。从一种颜色模型转换到另一种颜色模型时,通常也会出现类似的情况。然而,本章的重点并非颜色保真度;我们更感兴趣的是如何利用颜色模型的特性来简化图像处理任务,例如区域检测。
6.2.3 HSI色彩模型(The HSI color models)
正如我们所见,在 RGB、CMY 和 CMYK 模型中创建颜色以及在这些模型之间进行转换都非常简单。这些颜色系统非常适合硬件实现。此外,RGB 系统与人眼对红、绿、蓝三种原色高度敏感这一事实完美契合。然而,RGB、CMY 和其他类似的颜色模型并不适合用人类易于理解的方式来描述颜色。例如,人们不会通过给出构成汽车颜色的每一种原色的百分比来描述汽车的颜色。此外,我们也不会将彩色图像视为由三个原色图像组合而成的一个图像。
当人类观察彩色物体时,我们会用色调(hue)、饱和度(saturation)和亮度(brightness)来描述它。回顾第 6.1 节的讨论可知,色调是描述纯色的颜色属性(例如纯黄色、橙色或红色),而饱和度则衡量纯色被白光稀释的程度。亮度是一种主观描述符,实际上无法测量。它体现了非彩色图像的强度概念,是描述颜色感觉的关键因素之一。我们知道,强度(灰度)(intensity)是非彩色图像最有效的描述符。这个量是可测量的,并且易于理解。我们即将介绍的 HSI(色调、饱和度、强度)颜色模型将彩色图像中的强度分量与携带颜色信息的部分(色调和饱和度)分离开来。因此,HSI 模型是一种有用的工具,可用于开发基于对人类来说自然直观的颜色描述的图像处理算法,毕竟,这些算法的开发者和用户都是人类。我们可以总结说,RGB 模型非常适合图像颜色生成(例如彩色相机拍摄图像或在显示器屏幕上显示图像),但它在颜色描述方面的应用则受到很大限制。以下内容将提供一种有效的方法来实现这一点。
从示例 6.1 中我们知道,RGB 彩色图像由三个灰度强度图像(分别代表红色、绿色和蓝色)组成,因此我们可以从 RGB 图像中提取强度也就不足为奇了。如果我们以图 6.7 中的颜色立方体为例,将其黑色顶点 (0, 0, 0) 置于下方,白色顶点 (1, 1, 1) 置于正上方 [参见图 6.10(a)],这一点就显而易见了。正如我们在讨论图 6.7 时所指出的,强度(灰度)标度(scale)位于连接这两个顶点的直线上。在图 6.10(a) 和 (b) 中,连接黑色和白色顶点的直线(强度轴)是垂直的。因此,如果我们想要确定图 6.10 中任何颜色点的强度分量,我们只需定义一个包含该颜色点且同时垂直于强度轴的平面即可。该平面与强度轴的交点将给出强度值在 [0, 1] 范围内的点。稍加思考就会发现,颜色的饱和度(纯度)随着与强度轴的距离的增加而增加。事实上,强度轴上所有点的饱和度都为零,因为这条轴上的所有点都是灰色的。

-------------------图 6.10:RGB 和 HSI 颜色模型之间的概念关系。---------------
色相也可以从 RGB 值确定。为了理解这一点,请看图 6.10(b),它显示了一个由三个点(黑色、白色和青色)定义的平面。黑色和白色点位于该平面内的事实表明,强度轴也位于该平面内。此外,我们还可以看到,由强度轴和立方体边界定义的平面区域内的所有点都具有相同的色相(在本例中为青色)。我们可以回顾第 6.1 节的内容得出相同的结论:由三种颜色生成的所有颜色都位于由这三种颜色定义的三角形内。如果其中两个点是黑色和白色,而第三个点是某种颜色点,那么三角形上的所有点都将具有相同的色相,因为黑色和白色分量不会改变色相(当然,该三角形中点的强度和饱和度会有所不同)。通过围绕垂直强度轴旋转阴影平面,我们可以获得不同的色相。基于这些概念,我们得出结论:构成 HSI 空间所需的色相、饱和度和强度值可以从 RGB 颜色立方体中获得。也就是说,我们可以通过推导出描述上述推理过程的公式,将任何 RGB 点转换为 HSI 颜色空间中的相应点。
图 6.10 中立方体排列及其对应的 HSI 颜色空间的关键在于,HSI 空间由垂直的亮度轴和垂直于该轴的平面上的颜色点轨迹表示。随着平面沿亮度轴上下移动,每一个平面与立方体表面相交形成的边界呈现三角形或六边形。如图 6.11(a) 所示,从灰度轴正上方观察立方体,可以更直观地理解这一点。我们可以看到,原色之间相隔 120°。二次色与原色相隔 60°,这意味着二次色之间也相隔 120°。图 6.11(b) 显示了相同的六边形形状和一个任意颜色点(用圆点表示)。该点的色相由相对于某个参考点的角度确定。通常(但不总是),与红色轴成 0° 角表示色相为 0,色相值从此处开始逆时针方向增加。饱和度(到垂直轴的距离)是从原点到该点的向量的长度。请注意,原点定义为颜色平面与垂直亮度轴的交点。HSI 颜色空间的重要组成部分是垂直亮度轴、到颜色点的向量长度以及该向量与红色轴形成的夹角。因此,如图 6.11(c) 和 (d) 所示,HSI 平面通常可以用前面讨论的六边形、三角形甚至圆形来表示。选择哪种形状并不重要,因为可以通过几何变换将其中任何一种形状转换为其他两种形状。图 6.12 显示了基于颜色三角形和圆形的 HSI 模型。

------------------------------图 6.11:HSI 颜色模型中的色相和饱和度。圆点代表任意颜色点。与红色轴的夹角表示色相。向量的长度表示饱和度。这些平面上所有颜色的亮度由平面在垂直亮度轴上的位置决定。-------------------------------------------

------------------------------图 6.12:HSI 颜色模型基于 (a) 三角形和 (b) 圆形颜色平面。这些三角形和圆形均垂直于垂直强度轴。-----------------------------------
6.2.3.1 从RGB 到HIS的颜色转换(Converting Colors from RGB to HSI)
已知一张RGB颜色格式的图像,可以使用以下公式计算每一个RGB像素的H分量:
(6-16)
且(注:为了避免当 R = G = B 时出现除以零的情况(此时 u 将等于 90°),最好在该表达式的分母中添加一个很小的数值。请注意,当所有 RGB 分量相等时,公式 (6-18) 给出 S = 0。此外,公式 (6-20) 至 (6-30) 将 HSI 转换回 RGB 时,会得到 R = G = B = I,这与预期一致,因为当 R = G = B 时,我们处理的是灰度图像。)
(6-17)
饱和分量为
(6-18)
最后,强度分量可以通过以下公式获得:
(6-19)
这些公式假设 RGB 值已归一化到 [0, 1] 范围内,并且角度 θ 是相对于 HSI 空间的红色轴测量的,如图 6.11 所示。色相(hue)可以通过将公式 (6-16) 计算出的所有值除以 360° 来归一化到 [0, 1] 范围内。如果给定的 RGB值在 [0, 1] 区间内,则其他两个 HSI 分量本身就已在该范围内。
公式 (6-16) 至 (6-19) 中的结果可以从图 6.10 和图 6.11 的几何关系推导得出。推导过程较为繁琐,对本文的讨论没有太大帮助。你可以在本书网站的“教辅(tutorials)”部分找到这些公式(以及后续用于 HSI 到 RGB 转换的公式)的证明。
6.2.3.2 从HIS 到RGB的颜色转换(Converting Colors from HIS to RGB)
给定 HSI 值在区间 [0, 1] 内,我们现在想要求得相应范围内的 RGB 值。适用的公式取决于 H 的值。我们关注三个区域,分别对应于原色分离的 120° 区间(参见图 6.11)。首先,我们将 H 乘以 360°,将色相值恢复到其原始范围 [0°, 360°]。
RG 扇区( RG sector )( 0°≤ H < 120°):当 H 在这个扇形区域的时候,则 RGB 分量的计算公式为
(6-20)
(6-21)
和
(6-22)
GB 扇区 (sector)( 120°≤ H < 240° ): 当 H 位于这个扇区时,我们首先从其中减去 120°:
(6-23)
则,RGB 分量是
(6-24)
(6-25)
及
(6-26)
GB 扇区 (sector)( 240°≤ H ≤ 360° ): 最后,若 H 位于这个扇区时,我们从其中减去 240°:
(6-27)
则,RGB 分量是
(6-28)
(6-29)
以及
(6-30)
在接下来的章节中,我们将讨论这些公式的几种应用。
例子 6.2 :与RGB颜色立方体图像对应的HSI值。
图 6.13 显示了图 6.8 中 RGB 值的色相、饱和度和强度图像。图 6.13(a) 是色相图像。其最显著的特征是沿立方体正面(红色平面) 45°线上的值存在不连续性。为了理解这种不连续性的原因,请参考图 6.8,从立方体的红色顶点到白色顶点画一条线,并在该线的中间选择一个点。从该点开始,沿着立方体向右画一条路径,直到回到起点。这条路径上遇到的主要颜色依次是黄色、绿色、青色、蓝色、品红色,最后回到红色。根据图 6.11,沿这条路径的色相值应该从 0°增加到 360°(即从最低值增加到最高值)。图 6.13(a) 正好显示了这一点,因为在灰度图中,最低值表示为黑色,最高值表示为白色。实际上,色相图像最初被归一化到 [0, 1] 的范围,然后缩放到 8 位;也就是说,我们将其转换为 [0, 255] 的范围进行显示。
我们将值域限制在 [0, 1] 范围内,然后缩放到 8 位;也就是说,我们将其转换为 [0, 255] 的范围,以便显示。图 6.13(b) 中的饱和度图像显示,越靠近 RGB 立方体的白色顶点,像素值越暗,这表明颜色越接近白色,饱和度越低。最后,图 6.13(c) 所示的强度图像中的每一个像素都是图 6.8 中对应像素的 RGB 值的平均值。

---------------------------------图 6.13:图 6.8 中图像的 HSI 分量:(a) 色调图像,(b) 饱和度图像,(c) 亮度图像。---------------------------------------------
6.2.3.3 操作HSI分量图像(Manipulating HSI Component Images)
在接下来的讨论中,我们将介绍一些用于处理 HSI 分量图像的简单技术。这将帮助你熟悉这些分量,并加深你对 HSI 颜色模型的理解。图 6.14(a) 显示了一幅由 RGB 原色和二次色组成的图像。图 6.14(b) 到 (d) 显示了使用公式 (6-16) 到 (6-19) 生成的该图像的 H、S 和 I 分量。回想一下本节前面部分的讨论,图 6.14(b) 中的灰度值对应于角度;因此,例如,由于红色对应于 0°,图 6.14(a) 中的红色区域被映射到色相图像中的黑色区域。类似地,图 6.14(c) 中的灰度值对应于饱和度(它们被缩放到 [0, 255] 范围以便显示),而图 6.14(d) 中的灰度值则表示平均强度。

-----------------------------图 6.14:(a) RGB图像及其对应的HSI图像的组成部分:(b) 色调,(c) 饱和度,和 (d) 亮度。-------------------------------------------
为了改变RGB图像中任何区域的颜色,我们可以改变图6.14(b)所示色相图像中相应区域的数值。然后,我们使用公式(6-20)到(6-30)中描述的方法,将新的H图像与未改变的S和I图像一起转换回RGB格式。要改变任何区域的颜色饱和度(纯度),我们遵循相同的步骤,只是这次是在HSI空间的饱和度图像中进行更改。改变任何区域的平均亮度也适用类似的原理。当然,这些更改可以同时进行。例如,图6.15(a)是通过将图6.14(b)中对应于蓝色和绿色区域的像素值更改为0而获得的。在图6.15(b)中,我们将图6.14(c)中分量图像S中青色区域的饱和度降低了一半。在图6.15(c)中,我们将图6.14(d)所示亮度图像中中心白色区域的亮度降低了一半。将修改后的HSI图像转换回RGB格式的结果如图6.15(d)所示。正如预期的那样,我们在这幅图中看到所有圆的外围部分现在都变成了红色;青色区域的纯度降低了,中心区域变成了灰色而不是白色。虽然这些结果很简单,但它们清楚地说明了HSI颜色模型的强大之处,它可以独立控制色相、饱和度和强度。这些都是人们在描述颜色时非常熟悉的量。

----------------------------图 6.15:(a)-(c) 修改后的 HSI 分量图像。(d) 生成的 RGB 图像。(原始 HSI 图像请参见图 6.14。) ------------------------------------
6.2.4 一种设备无关的色彩模型(A device independent color model)
正如前文所述,人类能够感知到广泛的颜色和色调范围。然而,不同个体对颜色的感知存在差异。不仅如此,除非显示器和打印机等设备经过适当校准,否则它们显示的颜色也会存在显著差异。
大多数台式电脑都可以进行颜色转换。结合数码相机、平板扫描仪和喷墨打印机,它们可以将个人电脑变成数字(冲洗胶片的)暗房(darkroom)。此外,市面上还有一些商用设备,它们结合光谱仪测量和软件来生成颜色配置文件,然后可以将这些配置文件加载到显示器和打印机上,以校准它们的颜色响应。
本节探讨的图像转换效果最终以打印输出为准。由于这些转换是在显示器上开发、优化和评估的,因此必须确保所使用的显示器与最终输出设备之间保持高度的色彩一致性。实现这一目标的最佳方法是使用与设备无关的颜色模型,该模型可以将显示器、输出设备以及任何其他使用设备的色域(color gamuts)(参见第 6.1 节)关联起来。这种方法的成功与否取决于用于将每一个设备映射到该模型的颜色配置文件以及模型本身的质量。许多颜色管理系统 (CMS) 选择的颜色模型是 CIE L*a*b* 模型,也称为 CIELAB(CIE [1978],Robertson [1977])。
L* a* b* 颜色分量的计算公式为
(6-31)
(6-32)
和
(6-33)
其中,
(6-34)
而 ,
,
是参考白色三刺激值——这些值通常是指在CIE标准D65照明下完美反射漫射体的白色(在图6.5的CIE色度图中,其定义为 x = 0.3127和 y = 0.3290 ) 。L*a*b* 颜色空间是比色空间(即,感知上匹配的颜色被编码为相同的值),感知均匀(即,不同色调之间的颜色差异被均匀感知——参见MacAdams的经典论文[1942]),并且与设备无关。虽然L*a*b* 颜色不能直接显示(需要转换为其他颜色空间),但L*a*b* 色域涵盖了整个可见光谱,并且可以准确地表示任何显示器、打印机或输入设备的颜色。与HSI系统一样,L*a*b* 系统能够很好地分离强度(由亮度L* 表示)和颜色(由a* 表示红色减去绿色,b* 表示绿色减去蓝色),因此它在图像处理(色调和对比度编辑)和图像压缩应用中都非常有用。研究表明,L*a*b* 系统中亮度信息与颜色信息的分离程度高于任何其他颜色系统(参见Kasson和Plouffe [1972])。校准成像系统的主要优点是,它们允许以交互式和独立的方式校正色调和颜色不平衡——即通过两个连续的操作。在解决颜色不规则问题(例如颜色过饱和或欠饱和)之前,首先要校正图像的色调范围问题。图像的色调范围,也称为其色调类型,是指其颜色强度的总体分布。高调图像的大部分信息集中在高(或亮)强度区域;低调图像的颜色主要位于低强度区域;中调图像介于两者之间。与单色图像一样,通常希望将彩色图像的强度均匀分布在高光和阴影之间。在第6.4节中,我们将给出一些示例,展示用于校正色调和颜色不平衡的各种颜色变换。
6.3 伪彩图像处理(Pseudocolor image processing)
伪彩色(有时也称为假彩色)图像处理是指根据特定标准将颜色分配给灰度值。使用“伪彩色”或“假彩色”一词是为了区分将颜色分配给非彩色图像的过程与处理真彩色图像的过程,后者将在第 6.4 节开始讨论。伪彩色的主要用途是帮助人类观察和解释图像或图像序列中的灰度事件。正如本章开头所述,使用彩色的主要原因之一是人类可以分辨数千种颜色色调和强度,而只能分辨不到二十几种灰度。
6.3.1 强度分片和色彩编码(Intensity slicing and color coding)
强度(intensity)(有时也称为密度(density))分片和色彩编码技术是数字图像伪彩色处理中最简单、最早期的例子。如果将图像视为一个三维函数[参见图 2.18(a)],则该方法可以视为在与图像坐标平面平行的位置放置平面;每一个平面都会在交点处“切割”该函数。图 6.16 显示了一个示例,其中使用平面 将图像强度函数分割成两个等级。
如果在图 6.16 所示的平面两侧分别赋予不同的颜色,那么强度值高于该平面的任何像素都将用一种颜色编码,而强度值低于该平面的任何像素则用另一种颜色编码。位于平面上的像素可以任意指定为两种颜色中的一种,或者也可以赋予第三种颜色,以突出显示该强度等级上的所有像素。最终得到的是一幅双色(或三色)图像,可以通过沿强度轴上下移动分片平面来控制其相对外观。
总的来说,多色色彩技术可以概括如下:令 [ 0 , L – 1 ] 表示灰度等级,令 表示黑色[ f ( x , y) = 0 ] ,而等级
表示白色 [ f ( x , y) = L – 1 ] 。假设垂直于强度轴的 P 个平面定义为
。则假设 0 < P < L – 1 。这 P 个平面将灰度等级分割成 P + 1 个区间
。在每一个象素位置 ( x , y ) 处赋予的色彩是根据公式
(6-35) 若 , 令
而作出的,其中, 是与第 k 个强度区间
相关的色彩,由 l = k – 1 和 l = k 处的平面所定义。
图 6.16 并非可视化上述方法的唯一方式。图 6.17 展示了一种等效的方法。根据图中所示的映射关系,低于 等级 的图像强度值赋予一种色彩,而高于该等级的强度值则赋予另一种色彩。当使用更多划分级别时,映射函数将呈现阶梯状。

-------------------------图 6.16:强度分片技术的图形化解释。------------------

---------------------图 6.17:强度分片技术的另一种表示方法-------------------
例 6.3:强度分片和色彩编码。
图 6.18 展示了强度切片的一种简单而实用的应用。图 6.18(a) 是 Picker 甲状腺体模(一种放射性测试图案)的灰度图像,图 6.18(b) 是将该图像进行强度分片并分成八种颜色后的结果。灰度图像中看起来强度恒定的区域实际上变化很大,如切片图像中不同的颜色所示。例如,左叶在灰度图像中呈现暗灰色,很难分辨出强度的变化。相比之下,彩色图像清晰地显示了八个不同的强度均匀区域,每一个区域对应一种颜色。通过改变颜色数量和强度间隔的范围,可以快速确定灰度图像中强度变化的特征。在像本例所示的这种情况中,这种方法尤其有效,因为感兴趣的对象具有均匀的纹理,但其强度变化很难通过肉眼进行分析。这个例子也印证了第 6.1 节中关于人眼对不同颜色色调具有卓越辨别能力的论述。

-------------------------------图 6.18:图 6.18 (a) Picker 甲状腺模型灰度图像。(b) 使用八种颜色进行强度分片处理后的结果。(由橡树岭国家实验室的 J. L. Blankenship 博士提供。)------------------------------------------------------
在前面的简单示例中,我们将灰度级划分为不同的区间,并为每一个区间分配不同的颜色,而没有考虑图像中灰度级的实际意义。在这种情况下,我们的目的仅仅是查看构成图像的不同灰度级。当灰度级的划分基于图像的物理特性时,强度分片的作用就变得更加有意义和实用。例如,图 6.19(a) 显示了一张焊缝的 X 射线图像(宽阔的水平暗区),其中包含一些裂纹和气孔(图像中间水平延伸的亮条纹)。当焊缝中存在气孔或裂纹时,穿过物体的 X 射线会使物体另一侧的成像传感器饱和。因此,在来自此类系统的 8 位图像中,强度值为 255 自动意味着焊缝存在问题。如果使用人工目视分析来检查焊缝(这在今天仍然是一种常见的做法),那么一种简单的颜色编码方法,即为 255 级分配一种颜色,为所有其他强度级别分配另一种颜色,可以大大简化检查员的工作。图 6.19(b) 显示了结果。无需解释即可得出结论:如果图像以图 6.19(b) 的形式显示,而不是以图 6.19(a) 的形式显示,那么人为错误率将会降低。换句话说,如果已知要查找的强度值或强度值范围,那么强度切片是一种简单而强大的可视化辅助工具,尤其是在需要例行检查大量图像的情况下。

-------------------------------图 6.19:(a) 焊缝的X射线图像。(b) 颜色编码结果。(原始图像由X-TEK Systems,Ltd. 提供)-----------------------------------------
例 6.4:使用色彩来突出显示降雨量水平。
降雨量测量,尤其是在地球热带地区,对于各种环境相关应用都至关重要。使用地面传感器进行精确测量既困难又昂贵,而获取总降雨量数据则更加困难,因为相当一部分降水发生在海洋上空。一种远程获取降雨量数据的方法是使用卫星。热带降雨测量任务(TRMM)卫星配备了多种传感器,其中包括三种专门用于探测降雨的传感器:降水雷达、微波成像仪和可见光及红外扫描仪(参见第 1.3 节和第 2.3 节关于图像传感模式的介绍)。
对各种雨量传感器(rain sensors)的数据进行处理后,可以估算出传感器监测区域在给定时间段内的平均降雨量。根据这些估算值,可以轻松生成灰度图像,图像的强度值与降雨量直接对应,每一个像素代表一个实际的地面区域,其大小取决于传感器的分辨率。图 6.20(a) 显示了这样一幅强度图像,图中卫星监测的区域是图片中间突出显示的水平条带(这些是热带地区)。在这个特定的例子中,降雨量值是三年期间的月平均值(以英寸为单位)。
目视检查这张图片中的降雨模式既困难又容易出错。然而,假设我们使用图 6.20(b) 所示的颜色对强度等级进行编码,范围从 0 到 255。在这种强度等级模式下,每一个等级对应色带中的一种颜色。偏蓝的颜色表示降雨量较低,而偏红的颜色则表示降雨量较高。请注意,当降雨量大于 20 英寸时,颜色会达到纯红色。图 6.20(c) 显示了使用上述颜色映射对灰度图像进行颜色编码后的结果。如图所示,以及图 6.20(d) 的放大区域所示,结果更容易理解。除了提供全球覆盖范围外,这种类型的数据还可以使气象学家比以往任何时候都更精确地校准地面降雨监测系统。

-------------------------------图 6.20:(a) 灰度图像,其中(所示水平条带中的)亮度对应于月平均降水量。(b) 亮度值对应的颜色。(c) 彩色编码图像。(d) 南美洲区域放大图。(图片由美国国家航空航天局提供。)----------------------------------------
6.3.2 强度到色彩的转换(Intensity to color transformations)
其他类型的变换更为通用,因此能够比前一节讨论的简单分段技术实现更广泛的伪彩色增强效果。图 6.21 展示了一种特别有效的方法。这种方法的基本思想是对输入像素的强度进行三次独立的变换。然后,将这三个变换结果分别输入到彩色显示器的红色、绿色和蓝色通道。这种方法可以生成一个合成图像,其颜色内容由变换函数的特性决定。

----------------------------图 6.21:伪彩色图像处理的功能框图。图像 ,
和
分别输入到 RGB 彩色显示器的红色、绿色和蓝色输入端。-----------------------
上一节讨论的强度分片方法是本节所述技术的特例。在该方法中,使用强度级别的分段线性函数(参见图 6.17)来生成颜色。在另一方面,本节讨论的方法可以基于平滑的非线性函数,这使得该技术具有相当大的灵活性。
例 6.5:使用伪彩色技术突出显示X射线图像中的爆炸物。
图 6.22(a) 显示了两幅从机场 X 光扫描系统获取的行李黑白图像。左图包含普通物品。右图包含相同的物品,以及一块模拟塑料炸药。本例旨在说明如何利用强度到颜色转换来辅助检测炸药。

-----------------------图 6.22: 图 6.23 展示了利用灰度到颜色转换进行伪彩色增强。(原始图像由西屋公司(Westinghouse)的 Mike Hurwitz 博士提供。)-------------------
图 6.23 显示了所使用的变换函数。这些正弦函数在峰值附近区域值相对稳定,而在波谷附近区域值变化迅速。改变每一个正弦函数的相位和频率可以突出显示(以颜色表示)灰度范围。例如,如果所有三个变换函数具有相同的相位和频率,则输出将是灰度图像。三个变换函数之间相位的微小变化对强度值对应于正弦函数峰值的像素影响很小,尤其是在正弦函数波形较宽(频率较低)的情况下。由于三个正弦函数之间的相位差导致振幅存在显著差异,因此强度值位于正弦函数陡峭部分的像素会被赋予更强的颜色。
图 6.22(b) 中的图像是使用图 6.23(a) 中的变换函数获得的,该图显示了分别对应于爆炸物、衣物袋和背景的灰度级范围。请注意,爆炸物和背景的强度级别差异很大,但由于正弦波的周期性,它们都被编码为大致相同的颜色。图 6.22(c) 中的图像是使用图 6.23(b) 中的变换函数获得的。在这种情况下,爆炸物和衣物袋的强度范围通过类似的变换进行映射,因此获得了基本相同的颜色分配。值得注意的是,这种映射允许观察者“透过”爆炸物看到后面的物体。背景的映射与图 6.22(b) 中使用的映射大致相同,因此两个伪彩图像的颜色分配几乎相同。

-------------------图 6.23: 图 6.22 中用于生成伪彩图像的变换函数。-------------
图 6.21 所示的方法基于单幅灰度图像。通常,人们更感兴趣的是将多幅灰度图像组合成一幅彩色合成图像,如图 6.24 所示。这种方法的一个常见应用是多光谱图像处理,其中不同的传感器会生成各自的灰度图像,每幅图像对应不同的光谱波段(参见下面的示例 6.6)。图 6.24 中所示的其他处理技术包括色彩平衡和空间滤波等,这些将在本章后面进行讨论。结合对每一个波段物理特性的背景知识,上述彩色编码方法能够有效地辅助人类对复杂多光谱图像进行视觉分析。

------------------------------图 6.24: 一种使用多个灰度图像的伪彩编码方法。输入为灰度图像,输出为RGB合成图像的三个分量。------------------------------------
例 6.6:多光谱图像的色彩编码。
图 6.25(a) 至 (d) 显示了华盛顿特区地区的四幅卫星图像,其中包括Potomac河(Potomac River)的一部分。前三幅图像分别位于可见光红光 (R)、绿光 (G) 和蓝光 (B) 波段,第四幅图像位于近红外 (IR) 波段(参见表 1.1 和图 1.10)。最后一个波段对场景中的生物量含量敏感,我们希望利用这一特性创建一幅合成 RGB 彩色图像,使植被更加突出,而场景中的其他部分则以更柔和的色调显示。
图 6.25(e) 是一幅 RGB 合成图像,其中红色通道被红外图像取代。如图所示,植被呈现亮红色,而场景中其他在近红外波段响应较弱的成分则呈现浅蓝绿色。图 6.25(f) 是一幅类似的图像,但绿色通道被红外图像取代。在这幅图中,植被呈现亮绿色,而场景中其他成分则呈现紫色调,表明它们的主要成分位于红色和蓝色波段。尽管最后两幅图像没有引入任何新的物理信息,但一旦我们知道图像的主要组成部分是植被密集区域的像素,这些图像就更容易进行视觉解释。

------------------------------图 6.25:(a)–(d) 华盛顿特区地区 LANDSAT 多光谱图像的红色 (R)、绿色 (G)、蓝色 (B) 和近红外 (IR) 分量图像。(e) 使用 IR、G 和 B 分量图像合成的 RGB 彩色图像。( f ) 使用 R、IR 和 B 分量图像合成的 RGB 彩色图像。(原始多光谱图像由美国国家航空航天局 (NASA) 提供。)-------------------
刚才介绍的处理方法利用多光谱图像中单个波段的物理特性来突出感兴趣的区域。同样的方法也可以帮助我们可视化复杂图像中人眼无法直接感知的事件。图 6.26 就是一个很好的例子。这些图像是木星卫星木卫一的图像,通过组合伽利略号探测器拍摄的多个传感器图像(其中一些图像位于人眼不可见的波段)并使用伪彩色技术显示。然而,通过了解可能影响传感器响应的物理和化学过程,可以将这些传感器图像组合成有意义的伪彩色图像。一种组合传感器图像数据的方法是根据它们显示的地表化学成分差异或地表反射太阳光方式的变化。例如,在图 6.26(b) 的伪彩色图像中,亮红色表示从木卫一上的活火山喷出的新物质,周围的黄色物质是较老的硫沉积物。与单独分析各个组成图像相比,这张图像能够更清晰地传达这些特征。

------------------------------图 6.26:(a) 木星卫星木卫一的伪彩图像。(b) 特写镜头。(图片由美国宇航局提供。)-------------------------------------------------
6.4 全彩图像处理基础(Basics of full-color image processing)
在本节中,我们将开始研究全彩图像的处理方法。后续章节中介绍的技术将展示如何处理全彩图像以完成各种图像处理任务。全彩图像处理方法主要分为两大类。第一类方法是分别处理每一个灰度分量图像,然后将处理后的分量图像组合成一个复合彩色图像。第二类方法是直接处理彩色像素。由于全彩图像至少包含三个分量,因此彩色像素可以表示为向量。例如,在 RGB 系统中,每一个颜色点都可以被视为一个从原点延伸到该点在 RGB 坐标系中的向量(参见图 6.7)。
设 c 表示 RGB 颜色空间中的任意向量:
(6-36)
该公式表明,c 的分量是图像中某一点的颜色图像的 RGB 分量。我们通过使用以下符号来考虑图像中像素颜色是空间坐标 ( x , y ) 的函数这一事实:
(6-37)
对于一幅大小为 M × N 有地幅图像,存在 MN 个这样的 c( x , y )(对于 x = 0 ,1 ,… ,M – 1 和 y = 0 ,1 ,… ,N – 1 ) 。
公式 (6-37) 描述了一个向量,其分量是空间变量 x 和 y 。这常常会引起混淆,但我们可以通过关注我们感兴趣的是空间过程来避免这种混淆。也就是说,我们感兴趣的是以 x 和 y 为变量的图像处理技术。像素现在是彩色像素这一事实引入了一个新的因素,最简单的处理方法是使用标准的灰度图像处理方法分别处理每一个颜色分量图像。然而,单独处理每一个颜色分量的结果并不总是等同于在颜色向量空间中直接处理,在这种情况下,我们必须使用直接处理颜色点元素的方法。当这些点具有两个以上的分量时,我们称之为体素(voxels)。当含义明确是指由多个二维图像组成的图像时,我们交替使用向量、点和体素这些术语。
为了使基于分量图像的处理和基于向量的处理等效,必须满足两个条件:首先,该处理必须适用于向量和标量;其次,对向量的每一个分量(即每一个体素)的操作必须独立于其他分量。例如,图 6.27 展示了灰度图像和全彩图像的空间邻域处理。假设该处理是邻域平均。在图 6.27(a) 中,平均操作是通过对二维邻域中所有像素的强度求和,然后将结果除以邻域中的像素总数来完成的。在图 6.27(b) 中,平均操作是通过对三维邻域中的所有体素求和,然后将结果除以邻域中的体素总数来完成的。平均体素的三个分量中的每一个都是以该位置为中心的单个图像邻域中像素的总和。但是,如果对每一个图像的像素独立进行平均,然后将三个值相加,也可以得到相同的结果。因此,空间邻域平均可以基于分量图像进行,也可以直接在 RGB 图像体素上进行。结果是相同的。在以下各节中,我们将介绍适用于基于分量图像方法的处理方法,以及不适用于该方法的处理方法。

--------------------------图 6.27:灰度图像和 RGB 彩色图像的空间邻域。请注意,在图(b)中,一对空间坐标( x, y )对应于所有三幅图像中的同一空间位置。--------------------
6.5 色彩转换(Color transformations)
本节描述的技术统称为色彩变换,它们处理的是在单一颜色模型下彩色图像的各个分量,而不是像第 6.2 节那样在不同颜色模型之间进行色彩转换。
6.5.1 变换公式(Formulation)
与第三章的强度变换技术类似,我们使用通用表达式
(6-38)
对多光谱图像的颜色变换进行建模,其中, n 是分量图像的总数, 是输入分量图像的强度值,
是输出分量图像中相应的空间强度,而
是在
上操作以产生输出
的变换集或色彩映射函数集。公式 (6-38)分别应用于输入图像的每一个元素。例如,在 RGB彩色图像的情况下, n = 3 ,
是输入图像中某一点处的强度值,而
是输出图像中某一点处的变换像素。下标i 也出现在 T 上,这意味着原则上我们可以对于每一个输入分量图像应用不同的变换。
例如,图 6.28 的第一行显示了一个简单场景的全彩色 CMYK 图像,第二行显示了它的四个分量图像,所有图像都已归一化到 [0, 1] 的范围。我们可以看到,草莓主要由大量的洋红色和黄色组成,因为对应于这两个 CMYK 分量的图像最亮。黑色使用量很少,通常仅限于咖啡和草莓碗中的阴影部分。第四行显示了使用公式 (6-13) 到 (6-15) 从 CMYK 图像获得的等效 RGB 图像。在这里,我们看到草莓含有大量的红色,而绿色和蓝色含量很少(尽管并非完全没有)。我们使用公式 (6-5) 从 RGB 图像获得了第三行的 CMY 图像。请注意,这些 CMY 图像与它们上面一行的 CMY 图像略有不同。这是因为这两个系统中的 CMY 图像由于其中一个系统使用了 K 分量而有所不同。图 6.28 的最后一行显示了使用公式 (6-16) 到 (6-19) 从 RGB 图像获得的 HSI 分量。正如预期的那样,强度 (I) 分量是全彩色原始图像的灰度版本。饱和度图像 (S) 也符合预期。草莓的颜色相对纯净;因此,它们显示出比图像中其他任何元素都更高的饱和度值(被白光稀释的程度最低)。最后,我们注意到解释色相 (H) 分量图像的值存在一些困难。问题在于 (1) HSI 模型在 0° 和 360° 相遇处存在不连续性 [参见图 6.13(a)],以及 (2) 当饱和度为 0 时(即对于白色、黑色和纯灰色),色相是未定义的。模型的这种不连续性在草莓周围最为明显,草莓的灰度值接近黑色 (0) 和白色 (1)。结果是,为了表示单一颜色——红色,出现了意想不到的对比度极高的灰度值混合。

(译注:Cyan——青色,Magenta——品红(洋红),Hue——色相(色调),Saturation——饱和度,Intensity——强度 )
-------------------------------图 6.28:一张全彩图像及其各种颜色空间分量。(原图像由 MedData Interactive 提供。)-----------------------------------------------
我们可以将公式 (6-38) 应用于图 6.28 中的任何颜色空间分量图像。理论上,任何变换都可以在任何色彩模型中执行。然而,在实践中,某些操作更适合特定的色彩模型。对于给定的变换,在决定使用哪种颜色空间来实现它时,必须考虑不同颜色表示之间转换的影响。例如,假设我们希望将图 6.28 第一行中的全彩图像的强度乘以一个常数 k,其中 k 的取值范围为 [0, 1]。在 HSI 颜色空间中,我们只需要修改强度分量图像即可:
(6-39)
且我们令 和
。根据我们之前的讨论,请注意我们使用了两种不同的转换函数:
和
是常量变换,而
是常量变换。
在 RGB 颜色空间中,我们需要对所有三个分量应用相同的常数变换:
(6-40)
在RGB颜色空间中,我们需要对所有三个分量应用相同的常数变换:
CMY色彩空间需要一组类似的线性变换(参见问题 6.16):
(6-41)
类似地,改变 CMYK 图像强度所需的变换公式为
(6-42)
这个公式表明,要改变 CMYK 图像的亮度,我们只需要改变第四个分量( K )。
图 6.29(b) 显示了将公式 (6-39) 至 (6-42) 中的变换应用于图 6.28 所示的全彩色图像的结果,其中 k = 0.7。映射函数本身以图形方式显示在图 6.29(c) 至 (h) 中。请注意,CMYK 的映射函数由两部分组成,HSI 的函数也是如此;其中一个变换处理一个分量,另一个变换处理其余分量。尽管我们使用了几种不同的变换,但所有变换最终都实现了通过一个常量值来改变一个色彩强度的效果。

-----------------------------图 6.29:使用色彩变换调整图像强度。(a) 原图像。(b)将图像强度降低30%后的结果(即令 k = 0.7 )。(c) 所需的RGB映射函数。(d)- (e)所需的CMYK映射函数。( f )所需的CMY映射函数。( g )- ( h )所需的HSI映射函数。(原始图像由 MedData Interactive 提供。)----------------------------------------
值得注意的是,公式 (6-39) 至 (6-42) 中定义的每一种变换都仅依赖于其颜色空间中的一个分量。例如,公式 (6-40) 中的红色输出分量 与绿色
和蓝色
输入无关;它仅取决于红色
输入。这类变换是最简单且最常用的颜色处理工具之一。正如我们在讨论开头所述,它们可以基于每一个颜色分量进行处理。在本节的其余部分,我们将研究几种此类变换,并讨论一种分量变换函数依赖于输入图像所有颜色分量的情况,因此无法基于单个颜色分量进行处理。
6.5.2 色彩互补(Color complements)
图 6.30 所示的色环(color circle)(也称为色轮(color wheel))源于 Issac Newton爵士,他在 17 世纪通过连接光谱两端创建了色环的最初形式。色环是一种视觉表示,它根据色彩之间的色度关系(chromatic)排列颜色。色环的形成方式是将原色彼此等距排列。然后,将间色放置在原色之间,也呈等距排列。最终结果是,色环上彼此正对的颜色互为补色。我们对补色感兴趣的原因在于它们类似于我们在第 3.2 节中研究的灰度底片(grayscale negatives)。与灰度图像类似,补色有助于增强彩色图像暗区域中嵌入的细节——尤其是在这些区域面积较大的情况下。以下示例将阐述其中一些概念。

(译注:Cyan——青色,Magenta——品红(洋红) )
------------------------------图 6.30:色环上的补色------------------------
例 6.7:计算彩图补色。
图 6.31(a) 和 (c) 分别显示了图 6.28 中的全彩色图像及其补色图像。用于计算补色的 RGB 变换如图 6.31(b) 所示。这些变换与第 3.2 节中定义的灰度底片变换相同。请注意,补色图像类似于传统的彩色胶片底片。原图像中的红色被补色图像中的青色取代。当原图像为黑色时,补色图像为白色,依此类推。可以使用图 6.30 的色轮预测补色图像中的每一种色调(hues),并且计算补色图像所涉及的每一个 RGB 分量变换都仅是相应输入颜色分量的函数。
与图 6.29 中的强度变换不同,本例中使用的 RGB 补色变换函数没有直接对应的 HSI 等效变换。证明补色的饱和度分量不能仅由输入图像的饱和度分量计算得出,这部分内容留作习题(参见习题 6.19)。图 6.31(d) 显示了使用图 6.31(b) 中的色调、饱和度和强度变换得到的补色近似结果。输入图像的饱和度分量保持不变;正是由于饱和度分量的差异,导致图 6.31(c) 和 (d) 之间存在视觉上的差异。

-----------------------------图 6.31: 颜色互补变换。(a)原图像。(b)互补变换函数。(c)基于RGB映射函数的图像(a)的互补图像。(d) 使用HSI变换近似得到的RGB互补图像。--------------------------------------------------------------------
6.5.3 色彩分片(Color slicing)
突出显示图像中的特定颜色范围对于将物体与其周围环境分离非常有用。基本思路是:(1) 显示感兴趣的颜色,使其从背景中脱颖而出;或 (2) 将由这些颜色定义的区域用作掩模进行进一步处理。最直接的方法是扩展第 3.2 节中的强度分片技术。然而,由于彩色像素是 n 维量,因此所得的颜色变换函数比图 3.11 中的灰度变换函数更为复杂。事实上,所需的变换比迄今为止考虑的颜色分量变换更为复杂。这是因为所有实际的颜色分片方法都要求每一个像素的变换后的颜色分量是所有 n 个原像素颜色分量的函数。
对彩色图像进行“分片”的最简单方法之一是将超出特定范围的色彩映射为不显眼的中间色。如果感兴趣的色彩被一个宽度为 W 的立方体(或对于 n > 3 的情况,为超立方体)所包围,并且该立方体的中心位于一个其分量为 的典型(例如平均)色彩处,必要的变换集计算公式为
(6-43)
这些变换通过将所有其他颜色强制转换为参考颜色空间的中间点(这是一个任意选择的中性点),从而突出显示原型周围的颜色。例如,对于 RGB 颜色空间,合适的中间点是中灰色或颜色 (0.5, 0.5, 0.5)。
如果使用球体来指定感兴趣的颜色,则公式 (6-43) 变为
(6-44)
在公式中, 是闭球(或 n > 3 时的超球面)的半径,且
的其中心的分量(即原型色彩)。公式 (6-43) 和 (6-44) 的其他有用变体包括使用多个色彩原型,以及降低感兴趣区域之外的颜色强度,而不是将它们设置为中性常数。
例 6.8:色彩分片。
公式 (6-43) 和 (6-44) 可用于将图 6.29(a) 中的草莓与其萼片、果蒂、果碗和其他背景元素分离开来。图 6.32(a) 和 (b) 显示了使用这两种变换后的结果。在每种情况下,都从最显眼的草莓中选择了一个原型红色,其 RGB 颜色坐标为 (0.6863, 0.1608, 0.1922)。选择参数 W 和 的目的是使高亮区域不会扩展到图像的其他部分。实际使用的值 W = 0.2549 和
是通过交互方式确定的。值得注意的是,公式 (6-44) 的基于球体的变换效果略好,因为它包含了更多草莓的红色区域。半径为 0.1765 的球体不能完全包含边长为 0.2549 的立方体,但它也不小到可以被该立方体完全包含。在第 6.7 节以及后面的第 10 章中,你将学习更多使用颜色和其他多光谱信息从背景中提取对象的更高级技术。

-----------------------------图 6.32: 颜色分片变换用于检测:(a) 位于宽度为 W = 0.2549 的 RGB 立方体(中心点为 (0.6863, 0.1608, 0.1922))内的红色像素;(b) 位于半径为 0.1765 的 RGB 球体(中心点与上述立方体相同)内的红色像素。位于立方体和球体之外的像素被替换为颜色 (0.5, 0.5, 0.5)。-------------------------------------
6.5.4 色调和色彩校正(Tone and color corrections)
在解决色彩不规则问题(例如颜色过饱和或欠饱和)之前,需要先校正图像的色调范围问题。一幅图像的色调范围,也称为其主调类型(key type),是指其色彩强度的总体分布。高调图像(high-key)的大部分信息集中在高(或亮)强度区域;低调图像(low-key)的颜色主要集中在低强度区域;而中调图像(middle-key)则介于两者之间。与灰度图像类似,通常希望将彩色图像的强度均匀分布在高亮和阴影区域之间。以下示例展示了用于校正色调和颜色不平衡的各种颜色变换方法。
例 6.9:色调变换。
用于调整图像色调的变换通常是交互式选择的。其目的是通过实验性地调整图像的亮度和对比度,以在合适的强度范围内呈现出最多的细节。颜色本身不会改变。在 RGB 和 CMY(K) 颜色空间中,这意味着使用相同的变换函数对除 K 之外的所有颜色分量进行映射(参见图 6.29);而在 HSI 颜色空间中,如前所述,只有强度分量会修改。
图 6.33 显示了用于校正三种常见色调失衡(图像平淡,过亮和过暗)的典型 RGB 变换。图中第一行的 S 形曲线非常适合增强对比度 [参见图 3.2(a)]。其中心点固定,以便可以分别提亮和压暗高光和阴影区域。(该曲线的反函数可用于校正对比度过高的情况。)图中第二行和第三行的变换用于校正过亮和过暗的图像,类似于图 3.6 中的幂律变换。尽管颜色分量是离散的,实际的变换函数也是离散的,但变换函数本身显示和处理为连续量——通常由分段线性或更高阶(用于更平滑的映射)多项式构成。请注意,图 6.33 中图像的关键特征是显而易见的;也可以使用图像颜色分量的直方图来确定这些特征。

------------------图 6.33:对平淡、明亮(高调)和暗淡(低调)的彩色图像进行色调校正。同时调整红色,绿色和蓝色分量并不总是能显著改变图像的色调。----------------------
例 6.10:色彩平衡。
在校正图像的色调特征后,才会处理任何颜色失衡问题。虽然可以通过使用分光光度计分析图像中已知色彩来直接确定色彩失衡,但如果图像中存在白色区域(其中 RGB 或 CMY(K) 分量应该相等),则可以进行准确的视觉评估。如图 6.34 所示,肤色是进行视觉色彩评估的绝佳对象,因为人类对正确的肤色非常敏感。鲜艳的色彩,例如亮红色物体,在视觉色彩评估方面价值不大。
有多种方法可以校正色彩失衡。调整图像的颜色分量时,重要的是要意识到每一个操作都会影响其整体颜色平衡。也就是说,一种颜色的感知会受到周围颜色的影响。图 6.30 中的色轮可以用来预测一个颜色分量如何影响其他颜色分量。例如,根据色轮,可以通过减少图像中相反(或互补)颜色的量来增加任何颜色的比例。同样,也可以通过增加两个相邻颜色的比例或减少与互补色相邻的两种颜色的比例来增加该颜色的比例。例如,假设 RGB 图像中洋红色过多。可以通过以下两种方法减少洋红色:(1) 去除红色和蓝色,或 (2) 添加绿色。
图 6.34 显示了用于校正简单 CMYK 输出不平衡的转换。请注意,图中所示的转换是校正图像所需的函数;而生成相关色彩不平衡的图像则使用了这些函数的逆函数。这些图像共同构成了一个类似于暗室环境中颜色环状测试图的图像集,可作为识别彩色打印问题的参考工具。例如,过多的红色可能是由于品红色过多(如图左下角所示)或青色过少(如图第二行最右侧所示)造成的。

-------------------------图 6.34:对CMYK图像进行色彩平衡--------------------
6.5.5 彩色图像的直方图处理(Histogram processing of color images)
与上一节的交互式增强方法不同,第 3.3 节的灰度直方图处理变换可以自动应用于彩色图像。回顾一下,直方图均衡化会自动确定一种变换,旨在生成具有均匀强度值直方图的图像。我们在第 3.3 节中展示了直方图处理在处理低调、高调和中调图像方面非常有效(例如,参见图 3.20)。正如你可能猜到的,单独对彩色图像的各个分量图像进行直方图均衡化通常是不明智的。这会导致颜色失真。更合理的方法是均匀分布颜色强度,同时保持颜色本身(例如色调)不变。以下示例表明,HSI 颜色空间非常适合这种方法。
例 6.11:在 HSI 颜色空间中进行直方图均衡化。
图 6.35(a) 显示了一个装有调味瓶和调味罐的调味架的彩色图像,其亮度分量覆盖了所有可能的(归一化)值范围 [0, 1]。从处理前的亮度分量直方图可以看出 [参见图 6.35(b)],图像包含大量暗色像素,导致中值亮度降至 0.36。在不改变色调和饱和度的情况下对亮度分量进行直方图均衡化处理后,得到了图 6.35(c) 所示的图像。请注意,整体图像明显更亮,并且现在可以看到调味架的多个细节以及放置调味架的木桌的纹理。图 6.35(b) 显示了新图像的亮度直方图,以及用于均衡亮度分量的亮度变换函数 [参见公式 (3-15)]。
虽然强度均衡化没有改变图像的色相和饱和度值,但它确实影响了整体色彩感知。特别值得注意的是,调味瓶中的油和醋(vinegar)的颜色鲜艳度有所下降。图 6.35(d) 显示了通过增加图像的饱和度分量(在直方图均衡化之后,使用图 6.35(b) 中的变换)来部分校正这一问题的结果。这种调整在处理 HSI 颜色空间中的强度分量时很常见,因为强度的变化通常会影响图像中颜色的相对外观。

-------图 6.35:在 HSI 颜色空间中进行直方图均衡化(随后进行饱和度调整)。-------
6.6 彩色图像平滑和锐化(Color image smoothing and sharpening)
在上一节中,我们讨论了不考虑相邻像素的情况下对彩色图像的每一个像素进行变换。在此基础上,下一步是根据周围像素的特征来修改像素值。在本节中,我们将以彩色图像平滑和锐化为例,阐述这种邻域处理的基本原理。
6.6.1 彩色图像平滑(Color image smoothing)
参考图 6.27(a) 以及第 3.4 节和第 3.5 节的讨论,灰度图像平滑可以看作是一种空间滤波操作,其中滤波核的系数具有相同的值。当滤波核在待平滑图像上滑动时,每一个像素都会被其周围由滤波核覆盖的像素的平均值所取代。如图 6.27(b) 所示,这一概念可以很容易地扩展到全彩色图像的处理。主要区别在于,我们处理的不再是标量强度值,而是公式 (6-37) 所示的分量向量。
令 表示一幅 RGB 彩色图像中定义一个中心位于 ( x ,y ) 处的一个领域的坐标集。RGB分量向量在这个领域中的平均值是
(6-45)
从公式 (6-37)和向量加属性可推出,
(6-46)
我们将该向量的各个分量视为:通过使用传统的灰度邻域处理方法独立平滑原 RGB 图像的每一个颜色平面所获得的标量图像。因此,我们得出结论,可以通过对每一个颜色平面分别进行邻域平均来完成平滑处理。其结果与使用 RGB 颜色向量进行平均处理的结果相同。
例 6.12:通过邻域平均法对彩色图像进行平滑处理。
考虑图 6.36(a) 所示的 RGB 彩色图像。其三个分量图像分别如图 6.36(b) 至 (d) 所示。图 6.37(a) 至 (c) 显示了该图像的 HSI 分量。基于前一段的讨论,我们使用 5 × 5 平均滤波器对图 6.36 中的 RGB 图像的每一个分量图像分别进行平滑处理。然后,我们将这些单独平滑后的图像组合起来,形成图 6.38(a) 所示的平滑后的全彩色 RGB 图像。请注意,该图像呈现的效果与我们在第 3.5 节示例中进行的空间平滑操作的结果一致。

-------------图 6.36:(b) 红色分量图像。(c) 绿色分量。(d) 蓝色分量。----------

----------------------------图 6.37:图 6.36(a) 所示 RGB 彩色图像的 HSI 分量。(a)色调。(b)饱和度。(c)亮度----------------------------------------------------
在第 6.2 节中,我们提到 HSI 色彩模型的一个重要优点是它可以将强度信息和颜色信息分离。这使得它适用于许多灰度图像处理技术,并表明仅对图 6.37 中 HSI 表示的强度分量进行平滑处理可能更有效。为了说明这种方法的优点和/或结果,我们接下来仅对强度分量进行平滑处理(保持色调和饱和度分量不变),并将处理后的结果转换为 RGB 图像进行显示。平滑后的彩色图像如图 6.38(b) 所示。请注意,它与图 6.38(a) 相似,但正如您从图 6.38(c) 中的差值图像中可以看到的,这两个平滑图像并不完全相同。这是因为在图 6.38(a) 中,每一个像素的颜色是其邻域像素的平均颜色。在另一方面,在图 6.38(b) 中,由于仅对强度分量图像进行了平滑处理,每一个像素的色调和饱和度没有受到影响,因此像素颜色没有改变。由此可知,随着卷积核尺寸的增大,两种平滑方法之间的差异会更加明显。

-----------------------图 6.38:使用 5 × 5 平均滤波器进行图像平滑处理。(a) 对每一个 RGB 分量图像进行处理后的结果。(b) 对 HSI 图像的亮度分量进行处理并转换为 RGB 后的结果。(c) 两种结果之间的差异。--------------------------------------
6.6.2 彩色图像锐化(Color image sharping)
使用 5 × 5 平均核进行图像平滑。(a) 处理每一个 RGB 分量图像的结果。(b) 处理 HSI 图像的强度分量并转换为 RGB 的结果。(c) 两种结果之间的差异。其分量等于输入向量各个标量分量的Laplace 算子。在 RGB 颜色系统中,公式 (6-37) 中向量 c 的 Laplace 算子为
(6-47)
正如前一节所述,这意味着我们可以通过分别计算每一个分量图像的Laplace算子来计算全彩图像的Laplace算子。
例 6.13:使用Laplace算子进行图像锐化。
图 6.39(a) 是使用公式 (3-54) 和图 3.45(c) 中的卷积核计算图 6.36 中 RGB 分量图像的Laplace算子得到的。将这些结果组合起来即可生成锐化后的全彩图像。图 6.39(b) 显示了基于图 6.37 中 HSI 分量的类似锐化图像。该结果是通过将亮度分量的Laplace算子与未改变的色调和饱和度分量组合而生成的。图 6.39(c) 显示了 RGB 和 HSI 锐化图像之间的差异。造成这两幅图像差异的原因与示例 6.12 中所述相同。

-------------------------------图 6.39:使用Laplace算子进行图像锐化。(a) 对每一个 RGB 通道进行处理后的结果。(b) 对 HSI 强度分量进行处理并转换为 RGB 后的结果。(c) 两种结果之间的差异。-------------------------------------------------
6.7 在图像分割中使用颜色信息(Using color in image segmentation)
图像分割是将图像分割成不同区域的过程。尽管图像分割是第10章和第11章的主题,但为了保持内容的连贯性,我们在此简要介绍一下颜色分割。相信你能够轻松理解接下来的讨论。
6.7.1 在HSI色彩空间中的图像平滑(Segmentation in HIS color space)
如果我们希望基于颜色对图像进行分割,并且还想在各个平面上分别进行处理,那么自然会首先想到 HSI 色彩空间,因为颜色可以在色调图像中方便地表示。通常,饱和度图像用作掩模图像,以便进一步隔离色调图像中的感兴趣区域。强度图像较少用于彩色图像的分割,因为它不包含颜色信息。以下示例是如何在 HSI 色彩空间中执行图像分割的典型案例。
例 6.14:在HSI 色彩空间中分割一幅彩色图像。
假设我们感兴趣的是分割图 6.40(a) 中左下角的红色区域。图 6.40(b) 至 (d) 分别是其 HSI 分量图像。通过比较图 6.40(a) 和 (b) 可以看出,我们感兴趣的区域具有较高的色相(hue)值,表明这些颜色偏向于红色中的蓝紫色调(参见图 6.11)。图 6.40(e) 显示的是通过对饱和度图像进行阈值处理生成的二值掩模,阈值设置为该图像最大值的 10%。任何大于阈值的像素值都设置为 1(白色),其余像素值都设置为 0(黑色)。
图 6.40( f ) 是掩模与色调图像的乘积,图 6.40( g ) 是乘积图像的直方图(请注意,灰度值范围为 [0, 1])。从直方图中可以看出,高值(即我们感兴趣的值)集中在灰度值的最高端,接近 1.0。对乘积图像进行阈值为 0.9 的阈值处理后,得到了图 6.40(h) 所示的二值图像。该图像中白色像素的空间位置标识了原图像中具有我们感兴趣的红色色调的像素点。这种分割方法远非完美,因为原图像中有些像素点我们肯定会认为是红色的,但这种分割方法并没有识别出它们。然而,通过实验可以确定,图 6.40(h) 中显示的白色区域是该方法在识别原图像红色分量方面所能达到的最佳结果。下一节讨论的分割方法能够获得更好的结果。

-----------------------------图 6.40:HSI空间中的图像分割。(a)原图像。(b)色调。(c) 饱和度。(d) 亮度。(e) 二值饱和度掩模(黑色 = 0 )。( f ) (b)和(e)的乘积。( g ) ( f )的直方图。( h ) 从( a )中分割出的红色分量。--------------------------------
6.7.2 RGB空间中的图像分割(Segmentation in RGB space)
尽管在HSI颜色空间中处理更直观,因为颜色以更易于理解的方式表示,但在图像分割领域,使用RGB颜色向量通常可以获得更好的结果(参见图6.7)。这种方法很简单。假设目标是在RGB图像中分割出特定颜色范围内的物体。给定一组代表目标颜色的样本颜色点,我们可以估计出我们想要分割的“平均”颜色。我们将这个平均颜色表示为RGB向量a 。分割的目标是将给定图像中的每一个RGB像素分类,判断其颜色是否在指定的范围内。为了进行这种比较,需要一个相似性度量。最简单的度量之一是Euclid距离。令z表示RGB空间中的任意一点。若它们之间的距离小于一个具体的阈值 ,则我们称 z 相似于 a 。
z 和 a 之间的 Euclid 距离计算公式为
(6-48)
其中,下标 R , G , B 分别表示向量 a 和 z 的 RGB 分量。使得 的点迹是一个半径为
的实心球体,如图 6.41(a) 所示。球体内部的点满足指定的颜色标准;球体外部的点则不满足。用例如黑色和白色分别对这两组点进行编码,即可生成二值分割图像。
公式 (6-48)的一个有用的推广是一个距离度量, 其计算公式为
(6-49)
其中 C 是协方差矩阵(covariance matrix)(参见第 11.5 节),该矩阵由我们选择的代表所需分割颜色范围的样本构成。使得 的点迹描述了一个实心三维椭圆形球体[图 6.41(b)],此球体的一个重要特性是其主轴方向与数据分布的最大方向一致。当 C = I ( 3×3 恒等矩阵) 时,公式 (6-49) 简化为公式 (6-48) 。分割方法如前一段所述。
由于距离是正值且单调递增,我们可以使用距离的平方代替距离本身,从而避免平方根计算。然而,即使不计算平方根,对于实际尺寸的图像来说,实现公式 (6-48) 或 (6-49) 的计算成本仍然很高。一种折衷方案是使用边界框,如图 6.41(c) 所示。在这种方法中,边界框以点 a 为中心,其沿每一个颜色轴的尺寸与样本沿该轴的标准差成比例。我们使用样本数据计算标准差,这些标准差是该方法用于分割的参数。给定任意颜色点,我们通过确定它是否位于边界框的表面或内部来进行分割,这与使用距离公式的方法类似。然而,与球形或椭圆形围域(enclosure)相比,确定颜色点是否在边界框内部或外部的计算要简单得多。需要注意的是,上述讨论是第 6.5 节介绍的色彩分片方法的推广。

----------------图 6.41:用于RGB向量分割的包围数据区域的三种方法-------------
例 6.15:在RGB颜色空间中进行颜色分割。
图 6.42(a) 所示的矩形区域包含我们希望从彩色图像中分割出来的红色样本。这与我们在示例 6.14 中使用色相解决的问题相同,但现在我们使用 RGB 颜色向量来解决这个问题。我们采用的方法是,首先计算图 6.42(a) 中矩形区域内颜色点的平均向量 a,然后计算这些样本的红色、绿色和蓝色值的标准差。以 a 为中心构建一个箱,其沿每一个 RGB 轴的尺寸设定为对应轴上数据标准差的 1.25 倍。例如,令 表示采样点的红色分量的标准差,则箱沿 R 轴的尺寸从
扩大到
,其中
是平均向量 a 的红色分量。图 6.42(b) 显示了对彩色图像中每一个点进行编码后的结果:如果该点位于表面或箱内部,则编码为白色;否则编码为黑色。请注意,分割区域是如何从矩形框内的颜色样本泛化而来的。事实上,通过比较图 6.42(b) 和图 6.40(h),我们可以看出,在 RGB 向量空间中进行的分割得到了更准确的结果,因为这些结果与我们在原彩色图像中定义为“偏红色”的点更加吻合。这一结果并不令人意外,因为在 RGB 空间中我们使用了三个颜色变量,而在 HSI 空间中只使用了一个颜色变量。

--------图 6.42:RGB 空间中的图像分割。(a) 原图像,感兴趣的颜色区域用矩形框标出。(b) 在 RGB 向量空间中进行分割后的结果。请与图 6.40(h) 进行比较。---------
6.7.3 色彩边缘检测(Color edge detection)
正如我们将在第 10.2 节讨论的那样,边缘检测是图像分割的重要工具。在本节中,我们关注的是如何在单个分量图像上计算边缘,而不是直接在颜色向量空间中计算边缘。
我们在第 3.6 节讨论图像锐化时介绍了基于梯度算子的边缘检测方法。然而,那里讨论的梯度并不适用于向量量。因此,我们立即可以断定,分别计算单个图像的梯度,然后用结果合成彩色图像会导致错误的结果。一个简单的例子可以帮助解释其中的原因。
考虑图 6.43(d) 和 (h) 中的两个 M × M 彩色图像(M 为奇数),它们分别由图 6.43(a) 至 (c) 和 (e) 至 (g) 中的三个分量图像组成。例如,如果我们使用公式 (3-58) 计算每一个分量图像的梯度图像,然后将结果相加形成两个相应的 RGB 梯度图像,则在点 [(M + 1) / 2, (M + 1) / 2] 处的梯度值在两种情况下是相同的。直观上,我们预期图 6.43(d) 中的图像在该点的梯度会更强,因为该图像中 R,G 和 B 图像的边缘方向相同,而图 6.43(h) 中的图像只有两个边缘方向相同。因此,从这个简单的例子可以看出,处理三个单独的平面以形成复合梯度图像可能会产生错误的结果。如果问题仅仅是检测边缘,那么单独处理分量的方法可以得到可接受的结果。但是,如果精度很重要,那么显然我们需要一个新的适用于向量量的梯度定义。接下来,我们将讨论 Di Zenzo [1986] 提出的用于此目的的方法。
当前的问题是确定方程 (6-37) 中向量 c 在任意点 ( x , y ) 处的梯度(大小和方向)。正如我们刚才提到的那样,我们在第 3.6 节中研究的梯度概念适用于标量函数 f ( x, y );它不适用于向量函数。以下是将梯度概念扩展到向量函数的几种方法之一。回顾一下,对于标量函数 f ( x, y ),梯度是一个向量,指向 f 在坐标 ( x , y ) 处变化率最大的方向。
设 r,g 和 b 分别是沿 RGB 颜色空间中 R,G 和 B 轴的单位向量(参见图 6.7),并定义向量
(6-50)
和
(6-51)
令量 ,
, 和
为根据这些向量之点积而定义,具体如下:
(6-52)
(6-53)
和
(6-54)
谨记,R,G 和 B ,以及由此衍生的 g 值,都是 x 和 y 的函数。使用这种记法,可以证明( Di Zenzo [1986] ) ,c ( x , y ) 最大变化率的方向确定于角度
(6-55)
而 θ ( x , y ) 方向上 ( x , y ) 处变化率之值确定于
(6-56)
因为 tan(α) = tan(α ±π) ,若 是公式 (6-55) 的一个绝对值,则
也是其一个绝对值。此外,
,因此,F只需计算u在半开区间 [0, π )内的值即可。公式 (6-55)给出两个相差90°的值,这意味着该公式将每一个点( x , y )与一对正交方向相关联。沿着其中一个方向,F 取最大值,而沿着另一个方向,F取最小值。这些结果的推导过程相当冗长,如果在此详细阐述,对于我们当前讨论的基本目标而言意义不大。有关详细信息,请参阅Di Zenzo [1986] 的论文。第3.6节讨论的 Sobel 算子可用于计算实现公式 (6-52) 至 (6-54) 所需的偏导数。

---------------图 6.43:(a)–(c) 分别为R,G和B分量图像,(d) 为合成的RGB彩色图像。(e)–(g) 分别为R,G和B分量图像,(h) 为合成的RGB彩色图像。--------
例 6.16:RGB 向量空间中的边缘检测。
图 6.44(b) 是图 6.44(a) 图像的梯度,它是使用前面讨论的向量方法获得的。图 6.44(c) 显示的是通过计算每一个 RGB 分量图像的梯度,然后将三个分量图像在每一个坐标 ( x , y ) 处的对应值相加,从而形成的合成梯度图像。向量梯度图像的边缘细节比图 6.44(c) 中单个平面梯度图像的细节更完整;例如,请参见主体右眼周围的细节。图 6.44(d) 显示了两个梯度图像在每一个点 ( x , y ) 处的差异。值得注意的是,这两种方法都产生了合理的结果。图 6.44(b) 中额外的细节是否值得付出比 Sobel 算子计算更多的计算代价,只能根据具体问题的需求来确定。图 6.45 显示了三个分量梯度图像,将它们相加并进行缩放后即可得到图 6.44(c)。

--------------------------图 6.44:(a) RGB图像。(b) 在RGB颜色向量空间中计算的梯度。(c) 由三个单独的梯度图像逐元素相加形成的梯度图像,每一个梯度图像均使用Sobel算子计算。(d) (b)和(c)之间的差值。---------------------------------------

---------------------------图 6.45:图 6.44 彩色图像的各分量梯度图像。(a) 红色分量,(b) 绿色分量,(c) 蓝色分量。将这三个图像相加并进行缩放,即可得到图 6.44(c) 中的图像。--------------------------------------------------------------------
6.8 彩色图像中的噪声(Noise in color images)
第 5.2 节讨论的噪声模型适用于彩色图像。通常,彩色图像的噪声特性在每一个颜色通道中都相同,但颜色通道也可能受到不同程度的噪声影响。一种可能性是某一个颜色通道的电子元件发生故障。然而,不同噪声水平更可能是由于每一个颜色通道接收到的光照强度不同造成的。例如,在 CCD 相机中使用红色滤光片会降低红色感光元件检测到的光照强度。CCD 传感器在较低光照水平下噪声更大,因此在这种情况下,RGB 图像的红色分量往往比其他两个分量图像的噪声更大。
例 6.17:此图展示了将带有噪声的RGB图像转换为HSI图像时噪声的影响。
在本例中,我们将简要探讨彩色图像中的噪声以及噪声在颜色模型转换过程中的传播情况。图 6.46(a) 至 (c) 显示了被加性高斯噪声污染的 RGB 图像的三个颜色平面,图 6.46(d) 是合成的 RGB 图像。请注意,像这种细粒度噪声在彩色图像中比在灰度图像中更不容易被视觉感知。图 6.47(a) 至 (c) 显示了将图 6.46(d) 中的 RGB 图像转换为 HSI 图像的结果。将这些结果与原图像的 HSI 分量(参见图 6.37)进行比较,并注意噪声图像的色调和饱和度分量是如何显著退化的。这是由公式 (6-17) 和 (6-18) 中的 cos 和 min 运算的非线性引起的。在另一方面,图 6.47(c) 中的亮度分量比三个噪声 RGB 分量图像中的任何一个都更平滑。这是因为亮度图像是 RGB 图像的平均值,如公式 (6-19) 所示。(回想一下第 2.6 节中关于图像平均可以降低随机噪声的讨论。)

-------------------------------图 6.46:(a)–(c) 分别为被均值为0、标准差为28个灰度级的加性Gauss噪声污染的红色、绿色和蓝色8位分量图像。(d) 合成的RGB图像。[将图(d)与图6.44(a)进行比较。]--------------------------------------------

-----------------------------图 6.47:图 6.46(d) 所示的噪声彩色图像的 HSI 分量。(a)色调。(b)饱和度。(c)亮度。--------------------------------------------------
例如,在只有某个RGB通道受到噪声影响的情况下,转换为HSI色彩空间会将噪声传播到所有HSI分量图像。图 6.48 显示了一个示例。图 6.48(a)显示了一幅RGB图像,其绿色分量图像受到椒盐噪声的污染,其中出现“椒”或“盐”的概率均为 0.05。图6.48(b)至(d)中的HSI分量图像清楚地表明,噪声是如何从绿色 RGB 通道传播到所有HSI图像的。当然,这并不令人意外,因为正如第6.2节所述,HSI分量的计算需要用到所有 RGB 分量。

-----------------------------图 6.48:(a) 绿色通道被椒盐噪声污染的RGB图像。(b) HSI图像的色调分量。(c) 饱和度分量。(d) 亮度分量。-----------------------------
正如我们迄今为止讨论过的其他过程一样,全彩图像的滤波可以基于单幅图像进行,也可以直接在色彩向量空间中进行,具体取决于所使用的滤波方法。例如,使用平均滤波器进行降噪处理是第 6.6 节讨论的过程,我们知道这种方法在向量空间中处理得到的结果与分别处理各个分量图像得到的结果相同。然而,其他滤波器无法以这种方式实现。例如,第 5.3 节讨论的顺序统计滤波器就属于此类。例如,要在颜色向量空间中实现中值滤波器,需要求得一种对向量进行排序的方法,使得中值的概念有意义。虽然在处理标量时这是一个简单的过程,但处理向量时则要复杂得多。向量排序的讨论超出了本文的范围,但 Plataniotis 和 Venetsanopoulos [2000] 的著作是关于向量排序以及基于排序概念的一些滤波器的很好的参考资料。
6.9 彩色图像的压缩(Color image compression)
由于表示颜色所需的二进制位数(bits)通常是表示灰度所需的二进制位数的3到4倍,因此数据压缩在彩色图像的存储和传输中起着至关重要的作用。对于前几节提到的RGB、CMY(K)和HSI图像,任何压缩操作的对象都是每一个彩色像素的组成部分(例如,RGB图像中像素的红色、绿色和蓝色分量);这些分量是传递颜色信息的载体。压缩是指减少或消除冗余和/或无关数据的过程。虽然压缩是第八章的主题,但我们将在下面的示例中简要地说明这一概念,并以彩色图像为例。
例 6.18:一个彩图压缩的例子。
图 6.49(a) 显示了一幅 24 位 RGB 全彩虹膜图像,其中每一个像素的红、绿、蓝分量各使用 8 位来表示。图 6.49(b) 是从图 (a) 的压缩版本重建而成的,实际上是图 (a) 的压缩后再解压缩的近似图像。虽然压缩图像无法直接显示——必须先解压缩才能输入到彩色显示器——但压缩图像中每 230 位原始图像数据仅包含 1 位数据(因此也只需 1 位存储空间)(你将在第 8 章了解这些数字的由来)。假设图像大小为 像素。由于图像是 24 位/像素,因此其存储大小为
位 。

-----------------------------图 6.49:彩图压缩。(a) 原RGB图像。(b) 对图 (a)中的图像进行压缩后再解压后的结果。--------------------------------------------
假设你正坐在机场候机,想要使用机场的公共 WiFi 连接上传 100 张图片。以每秒 10 × 10⁶ Bit(相对较高的)上传速度计算,上传这些图片大约需要 24 分钟。相比之下,上传压缩后的图片大约只需要 6 秒。当然,传输的数据需要在接收端进行解压缩才能查看,但解压缩过程只需几秒钟即可完成。请注意,重建后的近似图像略微模糊。这是许多有损压缩技术的特点;可以通过调整压缩级别来减少或消除这种模糊。用于生成图 6.49(b) 的 JPEG 2000 压缩算法将在第 8.2 节中详细介绍。
2142

被折叠的 条评论
为什么被折叠?



