【OpenCV实战教程3】图像数字化基础(像素、色彩空间)

        图像数字化是指用数字表示图像。每一幅数字图像都是由M行N列的像素组成的,其中每一个像素都存储一个像素值。计算机通常会把像素值处理为256个灰度级别,这256个灰度级别分别用区间[0,255]中的数值表示。其中,“0”表示纯黑色;“255”表示纯白色。


1.像素

像素是构成数字图像的基本单位。针对一张图片,如何获取下面图片像素的RGB值呢?

import cv2
image = cv2.imread("2.jpg")    #读取图片
px = image[393,500]            #坐标(393,500)上的像素
print("坐标(393,500)上的像素的RGB值是:",px)

结果为:

       不难发现,坐标(393,500)上的像素的RGB值是由96、170和206这三个数值组成的。在讲解这三个数值各自代表的含义之前,先了解一下什么是三基色。

       三基色是指通过其他颜色的混合无法得到的"基本色"。由于人的肉眼有感知RGB三种不同颜色的锥体细胞,因此色彩空间通常可以由RGB三种基本色来表达。一般指光的三基色R(Red)、G(Green)、B(Blue)。(颜料的红、绿、蓝称为三基色,其实真正科学的讲法三原色应该是品红(M)、黄(Y)、青(C))。如果将这3种颜色以不同的比例进行混合,人眼就会感知到丰富多彩的颜色。那么,对于计算机而言,是如何对这些颜色进行编码的呢?答案就是利用色彩空间。也就是说,色彩空间是计算机对颜色进行编码的模型。

        以较为常用的RGB色彩空间为例,在RGB色彩空间,存在3个通道,即R通道、G通道和B通道。其中,R通道指的是红色(Red)通道;G通道指的是绿色(Green)通道;B通道指的是蓝色(Blue)通道;并且每个色彩通道都在区间[0,255]内进行取值。通过这种方式,计算机将会利用这3个色彩通道的不同组合来表示不同的颜色。

2.色彩空间

2.1 GRAY色彩空间

      GRAY色彩空间通常指的是灰度图像,灰度图像是一种每个像素都是从黑到白,被处理为256个灰度级别的单色图像。这256个灰度级别分别用区间[0,255]中的数值表示。其中,“0”表示纯黑色,“255”表示纯白色,0~255之间的数值表示不同亮度(即色彩的深浅程度)的深灰色或者浅灰色。因此,一幅灰度图像能够展示丰富的细节信息。如下图所示。

      OpenCV支持将同一幅图像从彩色空间转换到另一个色彩空间,这个转换过程称作色彩空间类型转换。(彩色图像是一种每个像素都是由红色、绿色和蓝色这3种不同的颜色以不同的比例混合而成的图像)

      那么,OpenCV是如何将RGB色彩空间转换到GRAY色彩空间的呢?答案就是利用OpenCV中的cvtColor()方法。cvtColor()方法方法用于转换图像的色彩空间,其语法如下:

dst = cv2.cvtColor(src,code)

参数说明:

dst:转化后的图像

src:转换前的初始图像

code:色彩空间转换码,即cv2.COLOR_RGB2GRAY

2.2 HSV色彩空间

        RGB色彩空间是基于三基色而言的,即红色、绿色和蓝色。而HSV色彩空间是基于色调、饱和度和亮度而言的。 其中,色调(H)是指光的颜色,例如,彩虹中的赤、橙、红、绿、青、蓝、紫分别表示不同的色调,如下图所示。在OpenCV中,色调在区间[0,180]内取值。例如,代表红色、黄色、绿色和蓝色的色调值分别为0、30、60和120。

       饱和度(S)是指色彩的深浅。在OpenCV中,饱和度在区间[0,255]内取值。当饱和度为0时,图像将变为灰度图像。亮度(V)是指光的明暗。与饱和度相同,在OpenCV中,亮度在区间[0,255]内取值。亮度值越大,图像越亮;当亮度值为0时,图像呈纯黑色。


    讲到这里,相信大家对像素、色彩空间都有一个简单的认识了,那就让我们继续接下来的内容吧! 

猜你喜欢

转载自blog.csdn.net/weixin_61961691/article/details/130070594
今日推荐