智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx

上传人:zf 文档编号:30840353 上传时间:2024-01-30 格式:PPTX 页数:54 大小:8.55MB
下载 相关 举报
智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx_第1页
第1页 / 共54页
智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx_第2页
第2页 / 共54页
智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx_第3页
第3页 / 共54页
智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx_第4页
第4页 / 共54页
智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx

《智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx》由会员分享,可在线阅读,更多相关《智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx(54页珍藏版)》请在冰豆网上搜索。

智能图像处理:Python和OpenCV实现---课件-第十一章-彩色图像处理.pptx

第11章,彩色图像的处理,彩色图像(colorimage)直观的说对应我们周围彩色环境的感知(即人的视觉器官的感知)。

从计算的角度,一幅彩色图像被看作一个向量函数(一般具有三个分量),设函数的范围是一个具有范数的向量空间,也称为彩色空间(colorspace)。

1666年牛顿发现了一个现象,当一束太阳光穿过一个玻璃棱镜时,出现的光束不是白色,而是由从一端为紫色到另一端为红色的连续彩色谱组成。

彩色谱可分为六个宽的区域:

紫色、蓝色、绿色、黄色、橘红色和红色。

彩色定义:

彩色是物体的一种属性,它依赖于以下三个方面的因素。

(1)光源照射光的谱性质或谱能量分布;

(2)物体被照射物体的反射性质;(3)成像接收器(眼睛或成像传感器)光谱能量吸收性质。

11.1彩色模型,彩色模型也称彩色空间或彩色系统,是用来精确标定和生成各种颜色的一套规则和定义,它的用途是在某些标准下用通常可接受的方式简化彩色规范。

彩色模型通常可以采用坐标系统来描述,而位于系统中的每种颜色都可由坐标空间中的单个点来表示。

在数字图像处理中,实际最通用的面向硬件的模型是RGB(红、绿、蓝)模型。

该模型用于彩色监视器和一大类彩色视频摄像机。

CMY(青、品红、黄)、CMYK(青、品红、黄、黑)模型是针对彩色打印机的。

HSI(色调、饱和度、亮度)模型符合人类描述和解释颜色的方式。

HSI模型还有一个优点,就是把图像分成彩色和灰度信息,这将更便于许多灰度处理技术的应用。

CIE颜色空间(CIELuv、CIELab)是另一种符合人类描述和解释颜色的方式。

11.1.1RGB彩色模型,RGB彩色模型是工业界的一种颜色标准,是通过对红绿蓝三个颜色亮度的变化以及他们相互之间的叠加来得到各种各样的颜色。

RGB彩色模型基于笛卡尔坐标系统,它的轴表示光的三种原色(R、G和B),一般将它们归一化到0,1范围,如图11-1(a)所示。

所得到的立方体的8个顶点对应光的3种原色、3种二次色、纯白色和纯黑色。

表11-1列出这8个顶点中每个顶点的R、G和B值。

(a)RGB彩色模型,图11-1RGB彩色模型和立方体,RGB模型表示的图像由3个分量图像组成,每种原色一幅分量图像。

当送入RGB监视器时,这3幅图像在屏幕上混合生成一幅合成的彩色图像。

一幅RGB图像,其中红、绿、蓝都是一幅8比特图像。

每个RGB彩色像素有24比特的深度(3个图像平面乘以每平面比特数,即38)。

在24比特RGB图像中,颜色总数是()=。

图11-1(b)显示了与图11-1(a)相对应的24比特彩色立方体。

图11-1RGB彩色模型和立方体,11.1.2CMY和CMYK彩色模型,CMY模型基于三种颜料的原色(蓝绿、品红和黄),它用于彩色打印机,其中每个原色常对应一种墨水(或墨粉)盒。

因为相同数量的各个原色相加来产生黑色会得到不可接受的浑浊的黑色,所以实际中要加上第4种彩色K(黑色),这样的模型称为CMYK模型。

其实,CMY值可以很容易通过1减去RGB值得到。

即:

在实际图像处理中,这种彩色模型主要用于产生硬拷贝输出,因此从CMY到RGB的反向操作通常没有实际意义。

CMYK(Cyan,Magenta,Yellow,blacK)颜色空间应用于印刷工业,印刷业通过青(C)、品(M)、黄(Y)三原色油墨的不同,网点面积率的叠印来表现丰富多彩的颜色和阶调,这便是三原色的CMY颜色空间。

实际印刷中,一般采用青(C)、品(M)、黄(Y)、黑(BK)四色印刷,在印刷的中间调至暗调增加黑版。

当红绿蓝三原色被混合时,会产生白色,但是当混合青、品红和黄三原色时会产生黑色。

因为相同数量的各个原色相加产生的黑色不纯正,为了生成纯正的黑色,所以实际中要加上第4种彩色K(黑色),这样的模型称之为CMYK。

从CMY到CMYK的转换公式为:

11.1.3HSI彩色模型,HSI(Hue,Saturation,Intensity)模型是从人的视觉系统出发,用色调(Hue)、色饱和度(Saturation)和亮度(Intensity)来描述色彩。

色调是描述纯色(纯黄色、纯橙色或纯红色)的颜色属性;饱和度是一种纯色被白光稀释一定程度的度量;亮度是一个主观描述子,体现无色的强度概念。

HSI色彩空间可以用一个圆锥空间模型来描述,如图12-2所示。

色彩空间的圆锥模型相当复杂,但确能把色调、亮度和色饱和度的变化情形表现得很清楚。

HSI色彩空间和RGB色彩空间只是同一物理量的不同表示法,因而它们之间存在着转换关系。

图11-2HSI彩色模型,1.颜色从RGB转换为HIS从RGB到HSI的转换是一个非线性变换。

对任何一个在0,1范围内的R、G、B值,其对应HSI模型中的I、S、H分量可由下面的公式计算。

I=13R+G+B11-3S=13R+G+BminR,G,B11-4H=GB2GB11-5其中:

=arccos12RG+(RB)(RG)2+RBGB1211-6,当S=0时对应的是无色的中心点,这时H就没有意义了,此时定义H为0。

当I=0时,S也没有意义。

2.颜色从HSI转换为RGB若设H、S、I的值在0,1之间,R、G、B的值也在0,1之间,则从HSI转到RGB的转换公式如下。

(1)当H在0,2/3之间时:

B=I1S11-7R=I1+ScosHcos3H11-8G=3IB+R11-9,

(2)当H在2/3,4/3之间时:

R=I1S11-10G=I1+Scos(H23)cosH11-11B=3IG+R11-12(3)当H在4/3,2之间时:

G=I1S11-13B=I1+Scos(H43)cos53H11-14R=3IG+B11-15,11.1.4YIQ(NTSC)彩色模型,NTSC彩色模型是一些国家的模拟电视标准,这个模型的主要优点之一是将灰度内容从彩色数据中区分出来的能力,这也是当年彩色电视机和传输设备出现时的一个主要设计要求,即要与先前黑白的设备向下兼容。

在NTSC彩色模型中,3个分量是亮度(Y)和两个色差信号:

色调(I)和饱和度(Q)。

从RGB到YIQ的转换可用下列变换公式来实现:

YIQ=0.2990.5870.1140.5960.2740.3220.2110.2530.312RGB11-16,11.1.5YCrCb彩色模型,YCrCb彩色模型是数字视频中最流行的彩色表达,在这个格式中,一个分量代表亮度(Y),而另两个是色差信号:

Cb(蓝色分量和一个参考值之间的差)和Cr(红色分量和一个参考值之间的差)。

从RGB到YCrCb的转换可用下列变换公式来实现:

YCbCr=0.2990.5870.1140.1690.3310.5000.5000.4190.081RGB11-17,11.2色彩空间的转换,上节我们介绍了一些常用的色彩空间类型,除此之外,还有一些其他的色彩空间。

每个色彩空间都有自己擅长的处理问题的领域,因此,为了更方便地处理某个具体问题,就要用到色彩空间类型之间的转换。

色彩空间类型转换是指将图像从一个色彩空间转换到另一个色彩空间。

11.2.1色彩空间类型转换函数,表12-2常用色彩空间转换码,在OpenCV中,cv2.cvtColor()函数用于实现色彩空间转换,其一般格式为:

image=cv2.cvtColor(src,code,dstCn)其中输入输出参数为:

image:

表示与输入值具有相同类型和深度的输出图像;src:

表示原始输入图像;code:

是色彩空间转换码,常见的枚举值如表12-2所示;dstCn:

表示目标图像的通道数。

11.2.2RGB色彩空间,RGB色彩空间使用三个数值向量表示色光三基色(Red、Green、Blue)的亮度。

每个通道的数量值被量化为0255级,因此,RGB图像的红、绿、蓝三个通道的图像都是一幅8位灰度图。

在OpenCV中,彩色通道的顺序是按照BGR的通道顺序存储的。

下面介绍一个由BGR色彩空间转换为RGB色彩空间的例子。

【例11.1】BGR色彩空间转换为RGB色彩空间,程序代码如下:

importcv2importmatplotlib.pyplotaspltimg_BGR=cv2.imread(d:

/pics/lena.jpg)plt.subplot(1,2,1)plt.imshow(img_BGR),plt.title(BGR_image)plt.axis(off)#BGR色彩空间转RGB色彩空间img_RGB=cv2.cvtColor(img_BGR,cv2.COLOR_BGR2RGB)plt.subplot(1,2,2)plt.imshow(img_RGB),plt.title(RGB_image)plt.axis(off)plt.show(),程序运行结果如图11-3所示:

(a)BGR色彩空间图像,(b)RGB色彩空间图像,图11-3BGR转换为RGB色彩空间,11.2.3GRAY色彩空间,GRAY色彩空间一般指8位灰度图,像素值的范围是0255,共256个灰度级。

由RGB色彩空间转换为GRAY色彩空间的标准公式为:

Gray=0.299*R+0.587*G+0.114*B11-18上式中,Gray表示灰度图,R、G、B分别是RGB色彩空间的三个通道的图像。

【例11.2】RGB色彩空间转换为GRAY色彩空间。

程序代码如下:

importcv2image1=cv2.imread(d:

/pics/lena.jpg,4)cv2.imshow(Origin,image1)#RGB色彩空间转GRAY色彩空间image2=cv2.cvtColor(image1,cv2.COLOR_RGB2GRAY)cv2.imshow(Gray,image2)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-4所示。

(a)原图像,(b)GRAY色彩空间的图像,图11-4彩色图像转灰度图像,11.2.4YCrCb色彩空间,在YCrCb色彩空间中,Y代表亮度,Cr和Cb保存色度信息,其中Cr表示红色分量信息,Cb表示蓝色分量信息。

从RGB色彩空间转YCrCb色彩空间的公式为:

Y=0.299*R+0.587*G+0.114*B11-19Cr=(R-Y)*0.713+delta11-20Cb=(B-Y)*0.564+delta11-21上式中,R、G、B分别表示RGB色彩空间的三通道信息,delta的值为:

=位图像位图像.单精度图像,【例11.3】RGB色彩空间转换为YCrCb色彩空间。

程序代码如下:

importcv2image1=cv2.imread(d:

/pics/lena.jpg,4)cv2.imshow(BGRimage1,image1)#RGB色彩空间转YCrCb色彩空间image2=cv2.cvtColor(image1,cv2.COLOR_RGB2YCrCb)cv2.imshow(YCrCbimage,image2)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-5所示。

(a)原图像,(b)YCrCb色彩空间图像,图11-5RGB转YCrCb色彩空间,11.2.5HSV色彩空间,RGB色彩模型是从硬件角度提出的颜色模型,与人眼匹配时可能会产生一定的差别。

HSV是从心里学角度提出的,它包括色调、饱和度和亮度三要素。

其中,色调是指光的颜色,与混合光谱的主要光波长有关;饱和度是指颜色深浅程度或相对纯净度;亮度反映的是人眼感受到光的明暗程度。

在具体实现时,将颜色分布在圆周上,不同的角度代表不同的颜色,所以通过调整色调值就可以使用不同的颜色,其中色调值的范围是0359。

饱和度为比例值,范围是01,具体为所选颜色的纯度值与该颜色最大纯度值的比值。

亮度也是比例值,范围是01。

=min,V00,其他情况11-22=60min,V=R120+60min,240+60min,V=B,V=G11-23上式中,V的值为:

V=max(R,G,B)11-24在计算的过程中可能会出现H0的情况,处理方法如下:

=+,其他情况11-25由上面的公式可以计算得到S、V、H的值。

从RGB色彩空间转到HSV色彩空间时需要将RGB色彩空间的值转换到01的范围内,之后再进行HSV转换。

具体过程为:

【例11.4】RGB色彩空间转换为HSV色彩空间。

代码如下:

importcv2image1=cv2.imread(d:

/pics/lena.jpg)cv2.imshow(BGR_image,image1)#BGR色彩空间转RGB色彩空间image2=cv2.cvtColor(image1,cv2.COLOR_BGR2RGB)#RGB色彩空间转HSV色彩空间image2=cv2.cvtColor(image2,cv2.COLOR_RGB2HSV)cv2.imshow(HSV_image,image2)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-6所示。

(a)原图像,(b)HSV色彩空间图像,图11-6RGB转换为HSV色彩空间,11.3彩色图像通道的分离与合并,在彩色图像RGB色彩模式下通道是指单独的红色(R)、绿色(G)、蓝色(B)部分。

即一幅完整的图像,是由红色、绿色、蓝色三个通道组成的,他们共同作用产生了完整的彩色图像。

一幅完整的图像,红色绿色蓝色三个通道缺一不可。

即使图像中看起来没有蓝色,只能说蓝色光的亮度均为0或者各像素值的红色和绿色通道不全为0,但不能说没有蓝色通道存在。

如果关闭了红色通道,那么图像就偏青色;如果关闭了绿色通道,那么图像就偏洋红色;如果关闭了蓝色通道,那么图像就偏黄色。

如果察看单个通道,发现每个通道都显示为一幅灰度图像。

某个通道的灰度图像中的明暗对应该通道色的明暗,从而表达出该色光在整体图像上的分布情况。

由于通道共有3个,所以也就有了3幅灰度图像。

通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。

通道中的纯黑,代表了该色光在此处完全不发光,亮度级别是0。

介于纯黑纯白之间的灰度,代表了不同的发光程度,亮度级别介于0255之间。

灰度中越偏白的部分,表示色光亮度值越高,越偏黑的部分则表示亮度值越低。

11.3.1彩色图像的通道分离,在OpenCV中有cv2.split函数,主要功能是把一个彩色图像分割成R、G、B三个通道,方便进一步的图像处理。

函数cv2.split语法格式为:

b,g,r=cv2.split(src)函数功能是输入原图像,返回其各自的通道内对应的数组元素的值。

【例11.5】利用通道分离函数,将彩色图像分离成RGB三通道图像,程序代码如下:

importcv2img=cv2.imread(d:

/pics/lena.jpg)b,g,r=cv2.split(img)#顺序是b,g,r,不是r,g,bcv2.imshow(image,img)cv2.imshow(Blue1,b)cv2.imshow(Green1,g)cv2.imshow(Red1,r)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-7所示。

(a)原彩色图像,(b)B通道图像,(c)G通道图像,(d)R通道图像,从图11-7中看到,分离出来的图像颜色都是灰色的,为什么不是蓝色通道是蓝色,绿色通道是绿色,红色通道是红色?

这是因为cv2.split函数分离出的B、G、R是单通道灰度图像,而不是RGB本身的颜色的,要想得到有颜色单通道图像,需要扩展通道并对每个通道进行处理。

【例11.6】扩展通道,使分离出来的RGB三个通道显示其对应的颜色,程序代码如下:

importcv2importnumpyasnpimg=cv2.imread(d:

/pics/lena.jpg)B,G,R=cv2.split(img)#通道扩展zeros=np.zeros(img.shape:

2,np.uint8)img_B=cv2.merge(B,zeros,zeros)img_G=cv2.merge(zeros,G,zeros)img_R=cv2.merge(zeros,zeros,R)cv2.imshow(B_img,img_B)cv2.imshow(G_img,img_G)cv2.imshow(R_img,img_R)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-8所示。

(a)蓝通道图像,(b)绿通道图像,(c)红通道图像,图11-8带有颜色的蓝绿红三通道图像,11.3.2彩色图像的通道合并,在OpenCV中有cv2.merge()函数,主要功能是对分离处理后的各个通道进行合并,重新合并成一个多通道的图像。

函数cv2.merge()语法格式为:

merged=cv2.merge(b,g,r)其中输入参数为要合并的矩阵参数,输入的所有矩阵必须具有相同尺寸和深度。

输出图像的通道数量将是矩阵数组中的通道总数。

【例11.7】利用通道合并函数,将RGB三通道图像合成为彩色图像,程序代码如下:

importcv2img=cv2.imread(d:

/pics/lena.jpg)b,g,r=cv2.split(img)#分离通道merged=cv2.merge(b,g,r)#合并通道cv2.imshow(mergedimage,merged)cv2.waitKey(0)cv2.destroyAllWindows(),程序运行结果如图11-7(a)所示:

11.4全彩色图像处理,全彩色图像处理分为两大类:

第一类是分别处理每一分量图像,然后将分别处理过的分量图像合成彩色图像。

第二类是直接对彩色像素进行处理。

因为全彩色图像至少有三个分量,彩色像素实际上是一个向量。

令c代表RGB彩色空间中的任意向量,c(x,y)分量是一幅彩色图像在一点上的RGB分量。

彩色分量是坐标(x,y)的函数,表示为:

=(,)(,)(,)=(,)(,)(,)11-26对于大小为MN(M,N是正整数,分别表示图像的高度和宽度)的图像,有MN个这样的向量。

其中,x=0、1、2、M-1;y=0、1、2、N-1。

为了使每一彩色分量处理和基于向量的处理等同,必须满足两个条件:

第一,处理必须对向量和标量都可用,第二,对向量每一分量的操作对于其他分量必须是独立的。

11.4.1彩色变换,可将灰度变换的概念扩展到彩色图像。

可以修改原始的公式为:

=(,)11-27因为已知这些变换函数是点处理函数(独立于像素的位置和近邻像素的值),所以可以采用一个简化表示法的改进版本:

=,=,11-28其中ri和si分别是原始图像f(x,y)和处理后图像g(x,y)的彩色分量,n是彩色分量数目,T1、T2、Tn是一组作用在ri上以获得si的彩色变换(或映射)函数。

对RGB图像,n=3,r1、r2和r3对应输入图像中各个像素的R、G和B值。

1.强度修改一个彩色映射强度修改函数如式11-29所示:

=(,)11-29上式可以看出,如果k1,所得结果图像将比原始图像亮,而如果k1,则输出图像将比原始图像暗。

2.彩色补集彩色补集操作是灰度负值变换的彩色等价,它将各个色调用它的补(有时称为对立色彩)来替换。

3.彩色切割彩色切割是一个将超出感兴趣范围的所有彩色映射为一个“中性”色(如灰色),而将所有感兴趣彩色保持不变的映射。

11.4.2直方图处理,直方图的概念可以扩展到彩色图像,其中每幅图像可用3个具有N个(一般,4N256)直方条的直方图来表示。

直方图技术(如,直方图均衡化)可用于使用某个彩色模型表达的图像,该模型允许将亮度分量与色度分量分开(如,HSI模型):

对一幅彩色图像的亮度(强度I)分量进行处理而保持色度分量(H和S)不变。

直方图均衡化的主要目的是将原始图像的灰度级均匀的映射到整个灰度级范围内,从而得到一个灰度级分布均匀的图像。

这种均衡化从灰度值统计的概率方面和人类视觉系统上实现了均衡。

在OpenCV中:

在OpenCV中提供了cv2.equalizeHist()函数,用于实现图像的直方图均衡化,其语法格式为:

image=cv2.equalizeHist(src)其中,src表示输入的待处理图像。

另外,python模块matplotlib.pyplot中的hist()函数能够方便的绘制直方图,通常使用该函数直接绘制直方图。

其语法格式如下:

matplotlib.pyplot.hist(image,BINS)其中,image表示原始图像数据,必须将其转换为一维数据。

BINS表示灰度级的分组情况。

【例11.8】对彩色图像各个通道分别进行直方图均衡化,程序代码如下:

importcv2importmatplotlib.pyplotaspltimg=cv2.imread(d:

/pics/lena.jpg)cv2.imshow(Original,img)#显示原始图像plt.figure

(1)#构造第一个通道图像的直方图hist0=cv2.calcHist(img:

:

0,0,None,256,0,256)plt.plot(hist0,color=b)#绘制直方图#第二个通道图像的直方图hist1=cv2.calcHist(img:

:

1,0,None,256,0,256)plt.plot(hist1,color=g)#第三个通道图像的直方图hist2=cv2.calcHist(img:

:

2,0,None,256,0,256)plt.plot(hist2,color=r),#对三个通道的图像分别进行均衡化处理:

img0_equ=cv2.equalizeHist(img:

:

0)img1_equ=cv2.equalizeHist(img:

:

1)img2_equ=cv2.equalizeHist(img:

:

2)#合并通道,也就是合并为彩色图像:

image=cv2.merge(img0_equ,img1_equ,img2_equ)#均衡化后的直方图plt.figure

(2)hist_equ=cv2.calcHist(image,0,None,256,0,256)plt.plot(hist_equ)cv2.imshow(HistogramEqualization,image)#显示均衡化后的图像plt.show()cv2.waitKey()cv2.destroyAllWindows(),程序运行结果如图11-9所示。

可以看出,直方图均衡化达到了图像像素均匀分布的结果。

(a)原始图像,(b)原始图像的直方图,(c)均衡化后的图像,(d)均衡化后图像的直方图,11.4.3彩色图像平滑和锐化,图像的平滑处理就是在保留原有图像信息的条件下,过滤掉图像内部的噪声,这种图像处理方式得到的图像称为平滑图像。

通过图像的平滑处理操作,可以有效地过滤图像内的噪声信息。

灰度级图像平滑可视为一种空间滤波操作,在这种操作中,滤波模板的系数具有相同的值。

当模板滑过将被平滑的图像时,每个像素被由该模板定义的邻域中的像素平均值代替,这一概念很容易推广到全彩色图像。

在分量方法的框架下,面向邻域的线性平滑和锐化技术可扩展到彩色图像。

原始用于单色操作的典型33核变成一个数组或矢量。

例如,对RGB图像平均滤波器的矢量公式使用一个以坐标(x,y)为中心的邻域:

(,)=1(,)(,)1(,)(,)1(,)(,)11-30,从11-30式中可以看出,通过对各个单独的彩色通道用标准的灰度邻域处理方法来执行邻域平均得到平滑的效果。

类似的,对用RGB彩色模型表示的彩色图像的锐化可通过对各个分量图像分别使用锐化操作符(如,拉普拉斯算子)再将结果结合起来实现。

在RGB彩色模型中,向量c的Laplacian变换为:

2,=2(,)2(,)2(,)11-31,平滑和锐化操作

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1