数字图像处理 Digital Image Processing 信息工程学院 School of Information Engineering
第9章 彩色图像处理 (Color Image Processing) 9.1 彩色图像基础(Fundamentals of Color Image) 9.2 彩色模型(Color Models) 9.3 伪彩色处理(Pseudocolor Image Processing) 9.4 全彩色图像处理(Full-Color Image Processing) 9.5 彩色图像分割(Color Image Segmentation) 9.6 彩色图像处理的应用(Applications of CIP)
Background 在图像处理中要引入颜色主要由以下两个因素驱动。 其一,颜色是一个强有力的描述子,它常常可以简化目标物的区分及从场景中抽取目标; 其二,人类可以辨别几千种颜色色调和亮度,相比之下只能辨别几十种灰度层次。
9.1.1 彩色图像的概念 (Concepts of Color Image) 彩色图像(Color Image)直观地说对应我们对周围彩色环境的感知(即对应人的视觉器官的感知)。从计算的角度,一幅彩色图像被看做一个向量函数(一般具有三个分量),设函数的范围是一个具有范数的向量空间,也称为彩色空间(Color Space)。 对于一幅(三通道的)彩色数字图像c,赋给一个像素三个向量分量f1、f2、f3: = (9.1) 设向量分量各自具有L个量化等级(通常情况下L可以取256)。
9.1.1 彩色图像的概念 (Concepts of Color Image) 假彩色图像(False-Color Image)与真彩色图像的定义形式类似,它允许将可见光以外的光谱也转换为彩色图像的向量分量。比如红外图像,其信息内容并不是来自可见光,将处在红外光谱的信息转换到了可见光的范围内。 伪彩色图像(Pseudocolor Image)是指将所选的像素编码或彩色化的图像。对这些像素,相关联的像素值(灰度值或彩色向量)被给定的彩色向量所替换。原始图像可以是灰度图像。 彩色量化一般通过索引的彩色(Indexed Color)来实现。例如,根据量化算法,从图像中选择256个彩色向量并放入彩色图(Colormap)或调色板(Palette)中,对每个像素列出其相关联的索引值,基于这个索引值,在显示器上选择索引彩色来表示彩色图像。
9.1.2 彩色基础 ( Color Fundamentals ) 白光 在17世纪,牛顿通过三棱镜研究对白光的折射就已发现: 白光可被分解成一系列从紫到红的连续光谱,从而证明白光是由不同颜色(而且这些颜色并不能再进一步被分解)的光线相混合而组成的。
9.1.2 彩色基础 ( Color Fundamentals ) 可见光 可见光是由电磁波谱中相对较窄的波段组成,如果一个物体比较均衡地反射各种光谱,则人看到的物体是白的; 而如果一个物体对某些可见光谱反射的较多,则人看到的物体就呈现相对应的颜色。 例如,绿色物体反射具有500~570nm(纳米)范围的光,吸收其他波长光的多数能量。
9.1.2 彩色基础 ( Color Fundamentals ) 图9.1 可见范围电磁波谱的波长组成
9.1.2 彩色基础 ( Color Fundamentals ) 人眼的吸收特性: 人眼的锥状细胞是负责彩色视觉的传感器,人眼的锥状细胞可分为三个主要的感觉类别。 大约65%的锥状细胞对红光敏感,33%对绿光敏感,只有2%对蓝光敏感。 由于人眼的这些吸收特性,被看到的彩色是所谓的原色红(R,red)、绿(G,green)和蓝(B,blue)的各种组合。
9.1.2 彩色基础 ( Color Fundamentals ) 三原色原理 其基本内容是: 任何颜色都可以用3种不同的基本颜色按照不同比例混合得到,即 C=aC1+bC2+cC3 (9.1) 式中a,b,c >=0 为三种原色的权值或者比例,C1、C2、C3为三原色(又称为三基色)。
9.1.2 彩色基础 ( Color Fundamentals ) 三原色原理指出 自然界中的可见颜色都可以用三种原色按一定比例混合得到;反之,任意一种颜色都可以分解为三种原色。 作为原色的三种颜色应该相互独立,即其中任何一种都不能用其他两种混合得到。
9.1.2 彩色基础 ( Color Fundamentals ) 三原色原理 为了标准化起见,国际照明委员会(CIE)规定用波长为700nm、546.1nm、435.8nm的单色光分别作为红(R)、绿(G)、蓝(B)三原色。 红绿蓝三原色按照比例混合可以得到各种颜色,其配色方程为: C=aR+bG+cB (9.4)
9.1.2 彩色基础 ( Color Fundamentals ) 原色相加可产生二次色。 例如:红色+蓝色=深红色(M,magenta), 绿色+蓝色=青色(C,cyan), 红色+绿色=黄色(Y,yellow)。 以一定的比例混合光的三种原色或者以一种二次色与其相反的原色相混合可以产生白色(W,white), 即:红色+绿色+蓝色=白色。
9.1.2 彩色基础 ( Color Fundamentals ) 彩色到灰度的转换 相同亮度的三原色,人眼看去的感觉是,绿色光的亮度最亮,而红色光其次,蓝色光最弱。 如果用Y来表示光的亮度(灰度),则有如下关系: Y=0.299R+0.587G+0.114B
9.1.2 彩色基础 ( Color Fundamentals ) 区分颜色常用三种基本特性量 亮度:如果无彩色就只有亮度一个维量的变化。 色调:是光波混合中与主波长有关的属性,色调表示观察者接收的主要颜色。 这样,当我们说一个物体是红色、橘黄色、黄色时,是指它的色调。 饱和度:与一定色调的纯度有关,纯光谱色是完全饱和的,随着白光的加入饱和度逐渐减少。
9.1.2 彩色基础 ( Color Fundamentals ) 色调和饱和度一起称为彩色,因此,颜色用亮度和彩色表征。 形成任何特殊颜色需要的红、绿、蓝的量称做三色值,并分别表示为X,Y,Z。进一步,一种颜色可用它的3个色系数表示,它们分别是: 从以上公式可得: x+y+z=1
9.1.2 彩色基础 ( Color Fundamentals ) 1931年CIE制定了一个色度图,如图9.4所示,图中波长单位是nm,用组成某种颜色的三原色的比例来规定这种颜色。 图中横轴代表红色色系数,纵轴代表绿色色系数,蓝色系数可由z=1-(x+y)求得。例如,图9.4中标记为绿的点有62%的绿和25%的红成分,从而得到蓝的成分约为13%。
9.2 彩色模型(Color Models) 彩色模型(也称彩色空间或彩色系统)的用途是在某些标准下用通常可接受的方式简化彩色规范。 本质上,彩色模型是坐标系统和子空间的规范。位于系统中的每种颜色都由单个点来表示。 本节主要讨论几种图像处理应用的主要模型。
9.2.1 RGB模型(RGB Color Model)
9.2.1 RGB模型(RGB Color Model)
9.2.1 RGB模型(RGB Color Model) 图9.6中,R,G,B位于三个角上;二次色深红(Magenta)、青(Cyan)、黄(Yellow)位于另外3个角上,黑色在原点处,白色位于离原点最远的角上(点(1,1,1))。 在本模型中,不同的颜色处在立方体上或其内部,并可用从原点分布的向量来定义。为方便起见,假定所有的颜色值都归一化,即所有R,G,B的值都在[0,1]范围内取值。
9.2.1 RGB模型(RGB Color Model) 考虑RGB图像,其中每一幅红、绿、蓝图像都是一幅8bit图像,在这种条件下,每一个RGB彩色像素有24bit深度(3个图像平面乘以每平面比特数,即3×8)。 24bit的彩色图像也称全彩色图像。在24bitRGB图像中颜色总数是224=16777216。
9.2.1 RGB模型(RGB Color Model) 一幅m*n(m,n为正整数,分别表示图像的高度和宽度)的RGB彩色图像可以用一个m*n*3的矩阵来描述,图像中的每一个像素点对应于红、绿、蓝三个分量组成的三元组。 在Matlab中,不同的图像类型,其图像矩阵的取值范围也不一样。例如若一幅RGB图像是 double类型的,则其取值范围在[0, 1]之间,而如果是uint8或者uint16类型的,则取值范围分别是[0, 255]和[0, 65535]。
9.2.1 RGB模型(RGB Color Model) 在Matlab中要生成一幅RGB彩色图像可以采用cat函数来得到。 其基本语法如下: B=cat(dim, A1, A2, A3, …) 其中,dim为维数,cat函数将A1,A2,A3等矩阵连接成维数为dim的矩阵。
9.2.1 RGB模型(RGB Color Model) 对图像生成而言,可以取dim=3,然后将三个分别代表RGB分量的矩阵连接在一起: I=cat(3, rgb_R, rgb_G, rgb_B) 在这里,rgb_R,rgb_G,rgb_B分别为生成的RGB图像I的三个分量的值,可以使用下列语句: rgb_R=I(:, :, 1); rgb_G=I(:, :, 2); rgb_B=I(:, :, 3);
9.2.1 RGB模型(RGB Color Model) clear rgb_R=zeros(128,128); rgb_R(1:64,1:64)=1; rgb_G=zeros(128,128); rgb_G(1:64,65:128)=1; rgb_B=zeros(128,128); rgb_B(65:128,1:64)=1; rgb=cat(3,rgb_R,rgb_G,rgb_B); figure, imshow(rgb), title('RGB彩色图像'); 结果:
9.2.2 CMY和CMYK模型 在用彩色打印机将彩色图像打印输出时,使用的是CMY和CMYK彩色模型。 红、绿、蓝称为加色基色,RGB模型称为加色混色模型。 在CMY彩色模型中,青(Cyan)、品红(Magenta)、黄(Yellow)是在白光中减去红、绿、蓝而得到的,它们分别是红、绿、蓝的补色,所以,青、品红、黄称为减色基色,CMY模型称为减色混色模型。 大多数在纸上沉积彩色颜料的设备,如彩色打印机和复印件,要求输入CMY数据或在内部做RGB到CMY的转换。 转换操作(假设所有的彩色值都归一化为[0,1]范围) :
9.2.3 HSI模型(HSI Color Model) HSI(Hue-Saturation-Intensity,HSI)模型用H、S、I三参数描述颜色特性。 H定义颜色的波长,称为色调; S表示颜色的深浅程度,称为饱和度; I表示强度或亮度。
9.2.2 HSI模型(HSI Color Model) 主要基于两个重要的事实: 其一 I分量与图像的彩色信息无关; 其二 H和S分量与人感受颜色的方式是紧密相连的。
9.2.2 HSI模型(HSI Color Model) 不失一般性,可以假定0o的彩色为红色,120o的为绿色,240o的为蓝色。色度从0o~360o覆盖了所有可见光谱的彩色。
9.2.2 HSI模型(HSI Color Model) 如图9.9所示。在环的外围圆周是纯的或称饱和的颜色,其饱和度值为1。在中心是中性(灰色),即饱和度为0。 亮度I是指光波作用于感受器所发生的效应,其大小由物体反射系数来决定。反射系数越大,物体的亮度越大,反之越小。
9.2.2 HSI模型(HSI Color Model) 图9.10 柱形彩色空间
1. Converting Colors from RGB to HSI 从RGB到HSI的变换是一个非线性变换。 对任何三个在[0,1]范围内的R,G,B值, 其中:
2. Converting Colors from HSI to RGB 若设H,S,I的值在[0,1]之间,R,G,B的值也在[0,1]之间,则从HSI到RGB的转换公式为: (1)当H在[0,2/3]之间 B=I(1-S) G=3I-(B+R) (2)当H在[2/3,4/3]之间 (3)当H在[4/3,2]之间
Example 【例9.2】将一幅彩色图像从RGB空间转换到HSI空间。 tmp1=0.5*((r-g)+(r-b)); 其主要MATLAB程序如下: rgb=imread('i_flower673.jpg'); rgb1=im2double(rgb); r=rgb1(:,:,1); g=rgb1(:,:,2); b=rgb1(:,:,3); I=(r+g+b)/3; tmp1=min(min(r,g),b); tmp2=r+g+b; tmp2(tmp2==0)=eps; %避免除数为0 S=1-3.*tmp1./tmp2; tmp1=0.5*((r-g)+(r-b)); tmp2=sqrt((r-g).^2+(r-b).*(g-b)); theta=acos(tmp1./(tmp2+eps)); H=theta; H(b>g)=2*pi-H(b>g); H=H/(2*pi); H(S==0)=0; hsi=cat(3,H,S,I); figure,imshow(rgb); figure,imshow(H); figure,imshow(S); figure,imshow(I); (a)RGB原图像 (b)H分量 (c)S分量 (d)I分量 图9.11 RGB原图像到HSI空间的转换
9.3 伪彩色处理 (Pseudocolor Image Processing) 在遥感、医学、安全检查等图像处理中,为了直观地观察和分析图像数据,常采用将灰度图像映射到彩色空间的方法,突出兴趣区域或待分析的数据段,这种显示方法称为伪彩色处理。 伪彩色处理不改变像素的几何位置,而仅仅改变其显示的颜色。伪彩色处理是一种很实用的图像增强技术,主要用于提高人眼对图像的分辨能力。这种处理可以用计算机来完成,也可以用专用硬件设备来实现。
9.3 伪彩色处理 (Pseudocolor Image Processing) 9.3.1 背景(Background) 已知人类仅可以区分几十级灰度值而可以分辨几千种彩色,所以通过使用彩色可以增加人类所能辨识的目标种类。在此之上,彩色还能增强图像的活泼性,这样就会减少厌倦感并增加安检人员的关注度。 彩色编码的主要作用就是利用人类视觉系统的感知能力以从图像中提取更多的信息,这也将提供更好的对复杂数据集合的定性综合观察,并能帮助在场景中相邻的相似区域中辨识出感兴趣区域以进行更仔细的定量分析。
9.3.1 Background 基本原理:将灰度图像或者单色图像的各个灰度级匹配到彩色空间中的一点,从而使单色图像映射成彩色图像。 设f(x,y)为一幅灰度图像,R (x,y),G (x,y),B (x,y)为f(x,y)映射到RGB空间的三个颜色分量,则伪彩色处理可以表示为: R(x,y)=fR(f(x,y)) (9.20) G(x,y)=fG(f(x,y)) (9.21) B(x,y)=fB(f(x,y)) (9.22) 其中fR,fG,fB为某种映射函数。给定不同的映射函数就能将灰度图像转化为不同的伪彩色图像。 伪彩色处理虽然能将灰度转化为彩色,但这种彩色并不是真正表现图像的原始颜色,而仅仅是一种便于识别的伪彩色。 伪彩色处理方法主要有强度分层和灰度级到彩色变换。
9.3.2 Intensity Slicing 强度分层技术是伪彩色图像处理最简单的例子之一。 如果一幅图像被描述为空间坐标(x,y)的强度函数f(x,y),分层的方法可以看成是放置一些平行于图像坐标平面(x,y)的平面,然后每一个平面在相交的区域中切割图像函数。 图9.12显示了利用平面把图像函数f(x,y)=li(li表示灰度级)切割为两部分的情况。
9.3.2 Intensity Slicing 一般地,该技术可以总结如下:令[0,L-1]表示灰度级,使l0代表黑色(f(x,y)=0),lL-1代表白色(f(x,y)=L-1)。 假定垂直于强度轴的P个平面定义为量级l1,l2,…,lM。并假定,0<M<L-1,M个平面将灰度级分为M+1个间隔,V1,V2,…,VM+1。 灰度级到彩色的赋值根据如下关系进行: f(x,y)=Ck f(x,y)∈Vk (9.23) 这里Ck是与强度间隔Vk第k级强度有关的颜色,Vk是由在l=k-1和l=k分割平面定义的。
9.3.2 Intensity Slicing 例9.3 灰度图像的强度分层。 其主要Matlab程序实现如下。 I=imread('i_peppers_gray.bmp'); GS8=grayslice(I,8); GS64=grayslice(I,64); subplot(1,3,1), imshow(I), title('原始灰度图像'); subplot(1,3,2), subimage(GS8,hot(8)), title('分成8层伪彩色'); subplot(1,3,3), subimage(GS64,hot(64)), title('分成64层伪彩色'); 结果如图9.14所示。
9.3.3 Transformation of Gray Levels to Color 这一方法的基本概念是对任何输入像素的灰度级执行三个独立的变换。然后,三个变换结果分别送入彩色电视监视器的红、绿、蓝通道。这种方法产生一幅合成图像,其彩色内容受变换函数特性调制。
9.3.3 Transformation of Gray Levels to Color 一组典型的灰度级到彩色变换的传递函数如图9.16所示。 (a)红色分量的传递函数 (b)绿色分量的传递函数 (c)蓝色分量的传递函数 图9.16 典型的传递函数
9.3.3 Transformation of Gray Levels to Color 图中三个图形依次表示红色、绿色、蓝色的传递函数。 第1个图形中可看出: 凡灰度级小于L/2的像素将被转变为尽可能暗的红色; 灰度位于L/2到3L/4之间的像素则是红色从暗到亮的线性变换; 灰度级大于3L/4的像素均被转变成最亮的红色。 第2个图形可看出: 第3个图形可看出:
9.3.4 False-Color Image Processing 假彩色图像处理可以允许将可见光以外的光谱也转换为彩色图像的向量分量,例如红外图像,其信息内容并不是来自可见光,为了表达和显示,将处在红外光谱的信息转换到可见光的范围内。我们也可以把真实的自然彩色图像或遥感多光谱图像处理成假彩色图像。 内容见教材(自学)。
9.4 全彩色图像处理 (Full-Color Image Processing) 全彩色图像处理研究分为两大类。 第一类—— 分别处理每一分量图像,然后,从分别处理过的分量图像形成合成彩色图像。 第二类—— 直接对彩色像素进行处理。
9.4.1 全彩色图像处理基础 (Basics of Full-Color Image Processing) 全彩色图像至少有3个分量,彩色像素实际上是一个向量。 令c代表RGB彩色空间中的任意向量,c(x, y)的分量是一幅彩色图像在一点上的RGB分量。彩色分量是坐标(x,y)的函数,表示为:
9.4.1 全彩色图像处理基础 (Basics of Full-Color Image Processing) 可以用前面的第3、5章介绍的标准的灰度图像处理方法分别处理彩色图像的每一分量。但是,单独的彩色分量的处理结果并不总等同于在彩色向量空间的直接处理,这种情况下,就必须采用新的方法。 为了使每一彩色分量处理和基于向量的处理等同,必须满足两个条件: 第一,处理必须对向量和标量都可用, 第二,对向量每一分量的操作对于其他分量必须是独立的。
9.4.2 彩色平衡 (Color Balance) 当一幅彩色图像数字化后,在显示时颜色经常看起来有些不正常。这是因为颜色通道中不同的敏感度、增光因子、偏移量等因素会导致数字化中的三个图像分量出现不同的线性变换,使得结果图像的三原色“不平衡”,从而造成图像中所有物体的颜色都偏离其原有的真实色彩。 彩色平衡处理方法见教材(自学)。
9.4.3 彩色图像增强 (Color Image Enhancement) 对R、G、B三个分量分别增强 RGBHSI, 对HSI增强,RGB 在HSI模型,仅对I分量增强
2 彩色图像直方图处理 (Color Image Histogram Processing) 在灰度图像处理中,直方图均衡自动地确定一种变换,该变换试图产生具有均匀的灰度值的直方图。 RGBHSI, 对HSI直方图,RGB 在HSI模型,仅对I分量直方图均衡
(Color Image Histogram Processing) 图9.9HSI彩色空间的直方图均衡
9.4.4 彩色图像平滑 (Color Image Smoothing) 令Sxy表示在RGB彩色图像中定义一个中心在(x,y)的邻域的坐标集,在该邻域中RGB分量的平均值为: (9.4) 可以得出结论:用邻域平均值平滑可以在每个彩色平面的基础上进行,其结果与用RGB彩色向量执行平均是相同的。平滑滤波可以使图像模糊化,从而减少图像中的噪声。
用空间滤波法--邻域平均进行彩色图像平滑滤波。 Color Image Smoothing 用空间滤波法--邻域平均进行彩色图像平滑滤波。 其主要Matlab程序实现如下: r gb=imread('flower608.jpg'); fR=rgb(:,:,1); fG=rgb(:,:,2); fB=rgb(:,:,3); w=fspecial('average'); fR_filtered=imfilter(fR,w); fG_filtered=imfilter(fG,w); fB_filtered=imfilter(fB,w); rgb_filtered=cat(3,fR_filtered,fG_filtered,fB_filtered);
Color Image Smoothing 图9.10彩色图像的平滑滤波
Color Image Smoothing 彩色图像平滑中两种方法的比较。 a | b | c 图9.11 用5×5平均模板平滑图像。(a)处理RGB每一分量图像的结果,(b)处理HSI图像强度分量,而色调和饱和度分量不变,并转换为RGB的结果,(c)两种结果之间的差别
9.4.5 彩色图像锐化 (Color Image Sharpening) 锐化的主要目的是突出图像的细节。 在这一节考虑用Laplacian算子的锐化处理,其它锐化算子的处理类似。 从向量分析知道向量的Laplacian被定义为一向量,其分量等于输入向量的独立标量分量的Laplacian微分。
Color Image Sharpening 在RGB彩色系统中,向量c的Laplacian变换为: 它告诉我们可以通过分别计算每一分量图像的Laplacian去计算全彩色图像的Laplacian。
Color Image Sharpening 使用经典的Laplacian滤波模板分别对每个分量图像进行锐化。 其主要Matlab程序实现如下: rgb=imread('flower608.jpg'); fR=rgb(:,:,1); fG=rgb(:,:,2); fB=rgb(:,:,3); lapMatrix=[1 1 1;1 -8 1;1 1 1]; fR_tmp=imfilter(fR,lapMatrix,'replicate'); fG_tmp=imfilter(fG,lapMatrix,'replicate'); fB_tmp=imfilter(fB,lapMatrix,'replicate'); rgb_tmp=cat(3,fR_tmp,fG_tmp,fB_tmp); rgb_sharped=imsubtract(rgb,rgb_tmp);
Color Image Sharpening 图9.12彩色图像的锐化
Color Image Sharpening 彩色图像锐化中两种方法的比较 a | b | c 图9.13 彩色图像锐化。(a)处理每一个RGB通道的结果,(b)仅处理强度分量而色调和饱和度分量不变,并转换为RGB的结果,(c)两种结果的差别
9.5 彩色图像分割 (Color Image Segmentation) 图像分割是把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。 单色图像分割方法: 阈值法(人工确定阈值、迭代法、最大类间方差法、最大熵法、最小误差法) 边缘检测(边缘检测和连接) 区域分割(区域生长法、区域分裂合并法) 混合方法 彩色空间: RGB HSI HSV CMY CIE XYZ CIE L*a*b* YUV 彩色图像分割方法 = +
9.5.1 HSI彩色空间分割 (Segmentation in HSI Color Space) HSI模型(HSI Model)是面向颜色处理的,用色调(Hue)、饱和度(Saturation) 、亮度(Intensity)来描述颜色。 用色调和饱和度描述色彩,用亮度描述光的强度。 这个模型有二个特点: (1)I分量与图像的彩色信息无关; (2)H和S分量与人感受颜色的方式是紧密相连的。 这些特点使得HSI模型非常适合于借助人的视觉系统来感知彩色特性的图像处理算法。
Segmentation in HSI Color Space 图像中用色度描述彩色。 以饱和度作为一个模板图像,从色调图像中分离出感兴趣的特征区。 由于强度不携带彩色信息,彩色图像分割一般不使用强度图像。 下面是在HSI系统中进行分割的例子。
Segmentation in HSI Color Space 假定兴趣是分割图9.25中红色花朵。 注意:我们感兴趣的区域有相对高的色度值。
Segmentation in HSI Color Space 以饱和度作为一个模板图像:在饱和度图像中选择门限值等于最大饱和度的30%,任何比门限大的像素值赋1值(白 ),其他赋0值(黑)。 从色调图像中分离出感兴趣的特征区:用饱和度二值模板作用于色调图像就产生出红色花朵分割的结果。 其主要Matlab程序如下: S1=(S>0.3*(max(max(S)))); F=S1.*H;
Segmentation in HSI Color Space b c d e f 图9.14 在HSI空间的图像分割。 (a)原RGB图像,(b)色调分量H,(c)饱和度分量S,(d)强度分量I, (e)二值饱和度模板(黑=0),(f)红色花的分割结果
9.5.2 RGB彩色空间分割 (Segmentation in RGB Color Space) 虽然在HSI空间彩色图像较直观。 通常用RGB彩色向量进行分割。 方法: 假设目标是在RGB图像中分割特殊彩色区域的物体,给定一个感兴趣彩色的有代表性的彩色点样品集,可得到一个彩色“平均”估计,这种彩色是我们希望分割的彩色。
Segmentation in RGB Color Space 令这个平均彩色用RGB向量a来表示。 分割的目标是对给定图像中每一个RGB像素进行分类。这就需要一个相似性度量。 令z代表RGB空间中的任意一点,如果它们之间的距离小于特定的阈值D0,我们就说z与a是相似的。 最简单的度量之一是欧氏距离, z和a之间的距离可以是欧氏距离,如:
Segmentation in RGB Color Space z和a之间的距离
Segmentation in RGB Color Space 对一幅RGB彩色图像,选择要分割的区域,计算该区域中的彩色点的平均向量a。 盒子的中点在a,它的尺度沿每一个RGB轴以沿相应轴的数据标准差的1.25倍选择。 例如,令R代表样点红分量的标准偏差,aR代表平均向量a的红分量: (aR-1.25R,aR+1.25R), 这里在整个彩色图像中编码每一点的结果为:如果点位于盒子表面或内部为白色,否则为黑色。
Segmentation in RGB Color Space rgb=imread('flower608.jpg'); rgb1=im2double(rgb); r=rgb1(:,:,1); g=rgb1(:,:,2); b=rgb1(:,:,3); r1=r(129:256,86:170); r1_u=mean(mean(r1(:))); [m,n]=size(r1); sd1=0.0; for i=1:m for j=1:n sd1=sd1+(r1(i,j)-r1_u)*(r1(i,j)-r1_u); end r1_d=sqrt(sd1/(m*n)); r2=zeros(size(rgb1,1),size(rgb1,2)); ind=find((r>r1_u-1.25*r1_d)&(r<r1_u+1.25*r1_d)); r2(ind)=1;
Segmentation in RGB Color Space d e 图9.15 RGB空间分割。(a)RGB原图像,(b)R分量,(c)G分量,(d)B分量,(e)RGB向量空间彩色分割的结果
9.5.3 彩色边缘检测 (Color Edge Detection) 边缘检测对图像分割是一个重要的工具。 比较: (1)以各个单独颜色分量图像为基础计算边缘 (2)在彩色空间直接计算边缘的问题。
Color Edge Detection 标量函数的梯度
Color Edge Detection 一般方法: 分别计算各个颜色分量图像的梯度,然后形成彩色图像的梯度。 得到的结果行否? 向量的梯度 ?
Color Edge Detection 令c代表RGB彩色空间中的任意向量,c的分量是一幅彩色图像在一点上的RGB分量。 彩色分量是坐标(x,y)的函数,表示为: 首要的问题:定义向量c在任意点(x,y)处的梯度(幅度和方向)。
Color Edge Detection 标量函数f(x,y)在坐标(x,y)处的梯度:是指向f的最大变化率方向的向量。 将这一思想扩展到向量梯度,下面介绍各种方法中的一种。 令r,g,b是RGB彩色空间沿R,G,B轴的单位向量,可定义向量为:
Color Edge Detection 数量gxx,gyy,gxy定义为这些向量的点乘,如下所示:
参考文献指出,c(x,y)的最大变化率方向由角度给出: Color Edge Detection 参考文献指出,c(x,y)的最大变化率方向由角度给出: (x,y)点在方向上变化率的值由下式给出: Di Zenzo, S. “A Note on the Gradient of a Multi-Image”, Computer Vision, Graphics, and Image Processing, 1986, 33:116~125
在向量空间的边缘检测 Color Edge Detection 例子比较两种彩色图像边缘检测: (1)由各个颜色分量图像梯度的混合检测边缘 (2)用彩色空间的向量梯度检测边缘。 计算时,偏导数用Sobel算子实现
Color Edge Detection 图9.16(a)RGB图像,(b)R分量边缘,(c)G分量边缘,(d)B分量边缘,(e)三分量叠加后边缘,(f)彩色向量梯度计算后边缘,(g)(f)和(e)之间的差别
Color Edge Detection 在向量空间的边缘检测 例子比较两种彩色图像边缘检测:由各个颜色分量图像梯度的混合检测边缘和用彩色空间的向量梯度检测边缘。 图9.16(f)是图9.16(a)图像的梯度,它是用刚刚讨论的向量方法得到的。 图9.16(b)~(d)显示了由计算每一个RGB分量图像的梯度,通过在每一坐标点(x,y)处叠加相应的3个分量值混合的梯度图像得到图9.16(e)。 图9.16(f)中向量梯度图像的边缘细节比图9.16(e)中单独平面梯度图像混合的细节更完全。 图9.16(g)图像显示了在每一点(x,y)处的两种梯度图像间的差别。 图9.16(f)中可以产生额外的细节,但同时也增加了附加计算量,是否值得仅由给定问题的要求决定。
9.6 彩色图像处理的应用 (Applications of Color Image Processing) 彩色图像处理的应用非常广泛,本节将以去红眼、皮肤检测、基于彩色的跟踪等为例进行简要说明。 内容见教材(自学)
自然界中的颜色可以用三种原色合成得到,因此彩色图像可以在一个三维的颜色空间中表示。常用的颜色空间模型有RGB模型、HSI模型等。 Summary 自然界中的颜色可以用三种原色合成得到,因此彩色图像可以在一个三维的颜色空间中表示。常用的颜色空间模型有RGB模型、HSI模型等。 本章介绍了彩色图像处理的一些基础问题,主要包括彩色图像增强、平滑、锐化、分割等方法。
Exercises 9.5 9.8 9.10 9.11