Hello,大家好。白话机器学习 新的一个专题又开始了。在本次专题中,我们呼应“白话”这个概念,为大家科普一些简单的计算机视觉的概念,帮助大家扫盲~~~
今天我们首先聊一聊——数字图像与颜色空间。
我们经常会说做算法其实也是在玩数学,很大的原因就是我们需要将想要分析的对象转化为数字,然后再对数字中存在的规律进行分析。而在计算视觉任务中,我们主要处理的对象就是图像数据。
图像是指使用各种观测系统以不同形式和手段观测客观世界而获得的,可以直接或间接作用于人眼并进而产生视觉的实体。包括:1)各类图片,如普通照片、X光片、遥感图片;2)各类光学图像,如电影、电视画面;3)客观世界在人们心目中的有形想象以及外部描述,如绘画、绘图等。
为了对图像数据进行更好的分析,我们会采用计算机来对其进行进一步的加工处理,也就是离散化、数字化,进而得到了数字图像。
其中,图像中每个基本单元叫做图像的元素,简称像素(Pixel)。
数字图像处理(Digital Image Processing):是指应用计算机来合成、变换已有的数字图像,从而产生一种新的效果,并把加工处理后的图像重新输出,这个过程称为数字图像处理。也称之为计算机图像处理(Computer Image Processing)。
我们在后续的章节中,会陆续介绍一系列数字图像处理的技术。在介绍具体数据之前,我们需要进一步了解数字图像中的数据结构。
对于一张彩色数字图片,我们通常会将它表成一个H×W×C的3维矩阵。其中,H表示图片的宽,W表示图片的高,C表示图片的通道数。H×W描述的就是图片的分辨率,也就是像素点的个数。对于每一个像素点,都会表示一个颜色,用一个C维的向量描述。
我们重点聊一聊这个C。
在上文中,我们讲了C是通道数。实际上,C还有另一个重要的意思,就是可以描述不同的颜色空间。而在不同的颜色空间下,C的不同维度也表达了不同含义,换句话说:我们通过赋予C的不同维度不同的含义,用来描述不同的颜色空间。
色彩空间
色彩是人的眼睛对于不同频率的光线的不同感受,色彩既是客观存在的(不同频率的光)又是主观感知的,有认识差异。“色彩空间”一词源于西方的“Color Space”,又称作“色域”,色彩学中,人们建立了多种色彩模型,以一维、二维、三维甚至四维空间坐标来表示某一色彩,这种坐标系统所能定义的色彩范围即色彩空间。我们经常用到的色彩空间主要有RGB、CMYK、Lab、HSV等。
那色彩空间和图片数据又是什么关系呢?
实际上,C也就是channel的含义,取决于当前图片数据所表示的色彩空间,而图像数据具体的值则表示了在对应色彩空间中的取值。
以RGB色彩空间为例:
对于H×W的彩色图像,在RGB空间,C取值为3,对应的三个通道则分别表示R、G、B(红,绿,蓝),这三种颜色也被称为了三基色。通过三基色,可以构成非常丰富的彩色空间。
比如,我们在使用PS中的拾色器时候,会看到对应像素点的RGB通道上的值
对于视觉系统,我们感知到的图像中的每一个像素点都会有一个颜色,在RGB色彩空间中,这个颜色我们表示为(R,G,B)。其中,RGB的取值范围都是在0~255之间。比如,我们如果看到一个像素点颜色为红色,则对应的图像矩阵上的值则为(255,0,0),如果为绿色,则对应的图像矩阵上的值为(0,255,0),蓝色则对应到(0,0,255)。其他颜色则同样由(R,G,B)上不同取值决定。比如:WEB标准颜色。https://baike.baidu.com/item/WEB%E6%A0%87%E5%87%86%E9%A2%9C%E8%89%B2/10874354?fr=aladdin
讲到这里,大家应该可以想到,对于一张H×W的彩色图像,图像矩阵实际上就是由H×W个(R,G,B)这样的向量组成,也就是一个3维的矩阵,其中(R,G,B)对应到了第三维上的取值。
具体在python-opencv中,表示h*w大小的三通道图像的示意图如下:
使用OpenCV读取并打印高宽为3*4三通道的RGB彩色图片,代码如下:
# -*- coding: utf-8 -*- import cv2 img=cv2.imread('3.png',1)#返回RGB彩色图像 print(img) #打印代表灰度图像的3维矩阵
打印结果:
共同学习,写下你的评论
评论加载中...
作者其他优质文章