人类经历了黑白图像到彩色图像的过渡,经历了黑白电视到彩色电视的过渡。在当今大数据时代的背景下,色彩显得越来越重要,着色技术也因需求的增长而得到快速的发展。 有研究表明,人在认知事物的过程中主要是通过视觉系统获得有效信息的。而作为图形图像最重要属性之一的颜色,是构成视觉信息的基本要素。人眼对颜色变化的敏感度大大强于对灰度变化的敏感度。没有颜色,世界将会变得黯淡,无生机。颜色,在人类认知世界的过程中担任着重要作用。 19 世纪中后期,手工上色的方法非常流行。但是这种方法只能由专业的艺术家或者摄影师来完成,限制非常大。现在,人们更多地利用计算机来帮助人类处理这方面的需求。着色一词是由加拿大人 Wilson Markle 于 1970 年提出的一个术语,用于描述利用计算机辅助软件为只有灰度的图像和视频添加颜色的技术。其中“阿波罗”登月计划中获得的月球影像着色后的图片最为着名。通过着色,可以还原、增强或改变图像的颜色,改善人眼对原始图像的视觉效果,使观察者能够从中获得更加清晰、便于理解的信息,提高图像的使用价值。 目前,计算机中的着色技术更多的是使用数字图像处理着色技术。数字图像处理着色技术在遥感图像处理中已有应用,其目的在于使处理图像中某些内容更加清晰。一幅黑白图像或者图形中不明显的特征经过着色技术处理后可更加容易地分辨出来。数字图像处理着色技术区别于以往的着色技术是依赖计算机来处理,而不是“手工制作”。此外,数字图像处理着色技术,特别是简单而高效的处理方法在医学领域和工业领域等都有着重要的应用。例如一个图像在通信过程中,由于某种原因,接收端接收时仅得到了图像的亮度信息和部分颜色样本,这时就可以利用数字图像处理着色技术恢复出完整的彩色图像。数字图像处理着色技术还可以应用在图像压缩编码和色彩校正等领域。 1.着色技术分类 1.1 对数据点着色 在图形显示中,MATLAB 可以对数据点进行着色,从而使图形更加美观、生动。在对数据点进行着色时,MATLAB 有真彩色着色和索引着色两种处理方法。 (1)RGB 真彩着色采用 RGB 颜色空间,对每一个数据点都需要指定一个 RGB 三元数组,这一 RGB 三元数组为该数据点确定了 RGB 颜色空间中的一种特定颜色。 (2)索引着色则使用了 MATLAB 图形窗口的颜色表,颜色表是一个 mx3的数组每一行实际上构成了一个 RGB 三元数组,从而确定了一种颜色。在对数据点着色时,以直接索引或映射索引的方式把数据点的 z 值转换为颜色表索引(即行标),从而确定此数据点颜色为颜色表中该行指定的颜色。 1.2 对图像着色 在图像处理中色彩的运用主要出于两个因素。首先,在自动图像分析中色彩是一个有力的描绘因子,它通常可使从一个场景中识别和抽取目标的处理得到简化。第二,人们对图像进行分析时,人眼能区别的灰度层次大约只有 20 多种,但却能够识别成千上万中色彩。伪彩色着色技术早期在遥感图片处理中已有应用,采用的方法是光学方法。这种方法固然有几何失真小的有点,但其处理速度是极慢的,而且处理一幅照片要较复杂的洗印技术,这样有时会限制它的应用范围。 伪彩色数字图像处理着色技术是一种计算机处理方法。它可以实时处理,而且高精度。在处理结果需要保留时,可有多种方法制作硬拷贝。 例如在遥感及医学图像处理中,为了直观地观察和分析图像数据,常采用将灰度图像映射到彩色空间的方法,突出兴趣区域或待分析的数据段,这种显示方法称为伪彩色着色处理。伪彩色着色处理是指将灰度图像转化为彩色图像,或者将单色图像变换成给定彩色分布的图像。由于人类可以辨别上千种颜色和强度,而相形之下只能辨别二十几种灰度,所以将灰度图像转化成彩色表示,就可以提高对图像细节的辨别力。因此,伪彩色着色处理的主要目的是为了提高人眼对图像的细节分辨能力,以达到图像增强的目的。 2.图像着色处理 图像着色处理主要是使用伪彩色着色处理,伪彩色着色处理的基本原理是将灰度图像或者单色图像的各个灰度级匹配到彩色空间中的一点,从而使单色图像映射成彩色图像。对灰度图像中不同的灰度级赋予不同的彩色。 伪彩色着色处理也是一种彩色映射过程,其主要目的是增强观察者对图像信息的检测能力。图像伪彩色着色处理主要有三种技术,以下分别介绍。 2.1 灰度分割 灰度分割和颜色编码是伪彩色着色处理的最简单的例子之一。灰度分割法是把灰度图像的灰度级从 l0(黑)到 lk(白)分成 N 个区间 li(i=1,2,…,N),给每个区间 li指定一种彩色 ci,这样,便可以把一幅灰度图像变成一幅伪彩色图像。 灰度分割具体的过程如下: (1)将图像描述成一个三维函数作为空间坐标的强度。(2)放置平行于(x,y)坐标面的平面。(3)每一个平面在相交的区域切割图像函数。 设原始黑白图像 f(x,y)的灰度范围为:[0,L],用K 1 个灰度等级把此灰度范围分为 K 段:L0,L1,L2…Lk。其中 L0=0(黑),Lk=L(白)映射每一段灰度成一种颜色,映射关系为 g(x,y)=Ci这里的 g(x,y)为输出的伪色彩;Ci为灰度在[Li-1,Li]中时所映射成的彩色。 经过这种映射处理后,原始黑白图像f(x,y)就变成了伪彩色图像g(x,y)。若原始图像f(x,y)的灰度分布遍及上述K个灰度段,则伪彩色图像g(x,y)就具有K种颜色。 该方法比较简单、直观。缺点是变换出的彩色数目有限。在 MATLAB 仿真使用灰度分割法实现图像着色,效果如图1 所示,以下为程序代码: close all; clear all; I=imread('moon.tif'); X=grayslice(I,16); subplot(1,2,1),imshow(I),title('原图像') ; subplot(1,2,2),imshow(X,hot(16)),title('着色后的图像');
2.2 灰度级转换为彩色 根据色度学原理,将原图像 f(x,y)的灰度范围分段,经过红、绿、蓝三种不同变换 TR{ }、TG{ }和 TB{ },变成三基色分量 TR{f(x,y)}、TG{f(x,y)}、TB{f(x,y)}。 它的主要方法是将二维数据阵列化到色平面上。这种映射可由下式来表示,即 R(x,y)=TR{f(x,y)} (1) G(x,y)=TG{f(x,y)} (2) B(x,y)=TB{f(x,y)} (3) 上式中,R(x,y)、G(x,y)和 B(x,y)是彩色显示三激励值;f(x,y)为处理前图像的灰度值;TR、TG和 TB是映射算子。所以,变换法的实现过程:对输入图像的灰度值实行三种独立的变换 TR{ }、TG{ }和 TB{ },得到对应的红绿蓝三原色。然后,根据要求场合不同,可以用这三原色量对应的电平值控制图像显示器的红绿蓝三色电子枪,得到伪彩色图像的显示输出。或者用三原色值对应的电平值作为彩色硬拷贝机器的三原色输入,得到伪彩色图像的硬拷贝。灰度-彩色变换方案图如图 2 所示。
在 MATLAB 仿真使用灰度级转换彩色法实现图像着色,效果图如图 3 所示,以下为程序代码: a=imread('cameraman.tif'); subplot(1,2,1),imshow(a),title('原图像'); c=zeros(size(a)); pos=find(a>=0&a<=95); %灰度级在 0 到 95 之间的变为蓝色 c(pos)=a(pos); b(:,:,3)=c; c=zeros(size(a)); pos=find(a>=95&a<=170); %灰度级在 95 到 170 之间的变为绿色 c(pos)=a(pos); b(:,:,2)=c; c=zeros(size(a)); pos=find(a>=170); %灰度级大于 170 的变为红色 c(pos)=a(pos); b(:,:,1)=c; %空间域灰度级-彩色变换 b=uint8(b);%转换数据为 8 位无符号整型 subplot(1,2,2),imshow(b,[]),title('彩色变换后函数');
2.3 频率域滤波处理 频率域伪彩色增强的方法是: 把灰度图像经傅立叶变换到频率域,在频率域内用三个不同传递特性的滤波器分离成三个独立分量;然后对它们进行傅立叶反变换,便得到三幅代表不同频率分量的单色图像,接着对这三幅图像作进一步的附加处理(如直方图均衡化、反转等)。最后将它们作为三基色分量分别加到彩色显示器的红、绿、蓝显示通道,得到一幅彩色图像。下图 4是频率域滤波处理过程的框图。
3.结束语 数字图像处理着色技术正逐渐渗透到各行各业,尤其是电影和电视领域也有很大的应用前景。本文重点介绍了几种图形图像着色的技术,这些着色技术都是一种给灰度图像赋予颜色的过程。数字图像处理中的着色技术想要大量运用于实际的生活中就必须增强其可用性、实用性。也就是说整个处理过程操作要简便、准确、效果好,使着色后的图像清晰,美观。本文提出的几种算法还需要在处理效率和效果方面实现更高的处理,才能达到人们的预期效果。