《计算机视觉算法:基于OpenCV的计算机应用开发》 —1.3 理解计算机图像

举报
华章计算机 发表于 2020/02/15 12:33:39 2020/02/15
【摘要】 本节书摘来自华章计算机《计算机视觉算法:基于OpenCV的计算机应用开发》 一书中第1章,第1.3.1节,作者是[伊朗] 阿明·艾哈迈迪·塔兹赫孔迪(Amin Ahmadi Tazehkandi) ,陈靖 杨欣 译。

1.3 理解计算机图像

现在,我们从图像开始学习计算机视觉的基本概念。那么,图像究竟是什么?在计算机视觉中,一幅图像就是一个矩阵,换句话说,就是一个二维向量。用这种方式看待图像不但可以简化图像自身的表示,而且可以简化图像的组成元素:

  • 图像的宽度对应矩阵的列数。

  • 图像的高度就是矩阵的行数。

  • 矩阵的每个元素代表一个像素,像素是图像最基本的组成部分,图像就是像素的集合。

  • 每个像素(或矩阵的每个元素)可以包含一到多个数值来对应其视觉表示(颜色、亮度等)。我们后面讲到计算机视觉中色彩空间的概念时再涉及。但应注意,像素的每个数值表示一个通道。例如,灰度图像的像素通常用无符号8位整型来表示一个0~255的数值,因此,灰度图像是单通道的。在这种表示法中,0代表黑色,255代表白色,其他数值代表对应的灰度值。再如标准的RGB图像表示法,它用3个无符号8位整型数来表示,每个整型数介于0~255之间。RGB图像的每个像素,用这三个通道对应其红、蓝、绿分量的强度值,这三个分量结合在一起可以表示任意可能的颜色。这样的图像被称为三通道图像。

下图是同一幅图像的灰度图版本和彩***(RGB)版本的同一区域放大后的结果。读者应该注意到灰度图像(左侧)中越高的数值对应了越高的亮度,反之亦然。类似地,在彩***像(右侧)中,读者能看到红色通道的数值很高,对应这个区域颜色是偏红的,当然白***域的红色通道数值也很高。

 image.png

除了上述提到的内容,图像还有如下属性:

  • 每个像素(矩阵的元素)可以是整数或者浮点数,可以是8位、16位等。表示每个像素的数值的类型和通道数量一起构成了图像的深度。例如,假设一个四通道的图像使用16位整数表示每个通道,那么其深度就是16乘以4位,即64位(或者说4个字节)。

  • 图像分辨率反映了图像中的像素数量。例如,一个宽度1920、高度1080的图像(也称为full-HD图像)的分辨率是1920乘以1080,包含超过200万个像素(约2兆像素)。

正是因为这种表示方式,图像可以轻松地转化为数学元素,进而在不同类型的算法中使用。回到最简单的图像表示法(灰度图像),通过几个简单的例子我们就可以看到,大多数图像编辑软件(以及计算机视觉算法)都用这种表示法,配合简单的算法及矩阵操作可以轻松修改图像。下图中,在输入图像(中间)的每个像素上加一个常数(此例中是80),就可以提高结果图像的亮度(右图),也可以从每个像素上减去一个常数来让图像变得更暗(左图)。

 image.png

现在,我们先聚焦在计算机视觉的基本概念上,不深究图像编辑的实现细节。我们在后续章节再讨论其细节以及其他图像处理的技术和算法。

本节介绍的图像属性(宽度、高度、分辨率、深度和通道)在计算机视觉中被广泛使用。例如,在一些情况下,如果一个图像处理算法特别复杂耗时,我们会先缩小图像,这样处理起来就会快很多。等处理完毕,处理的结果可以被映射回原图大小并展示给用户。对于深度和通道也可以用类似的处理方法,如果算法只需要图像特定的通道,你可以提取出相应的通道,或者干脆把图像转成灰度图像。注意,一旦目标检测完成,应该在原来的彩***像上展示检测结果。对这些图像属性的正确理解有助于你使用计算机视觉算法来解决各种各样的问题。言归正传,下面我们开始讨论色彩空间。

1.3.1 色彩空间

尽管有不同的定义方法,但通常色彩空间(有时称为色彩模型)是一种用来解释、存储和重建一组色彩的方法。我们以灰度色彩空间为例来看看。在一个灰度色彩空间中,每个像素用一个8位无符号整型来表示其亮度或灰度值。这样就可以存储256级灰度,其中0对应纯黑,255对应纯白。换句话说,数值越高,像素亮度越高,反之亦然。下图展示了灰度色彩空间所有可能的色彩:

 image.png

另一个常用的色彩空间是RGB,其中每个像素用三个8位整型对应其红、绿、蓝颜色分量的强度。这个色彩空间被广泛用在电视、液晶和其他类似显示器上。你可以自己用放大镜看下显示器的表面。它依赖如下假设:所有色彩都可以由不同比例的红、绿、蓝混合而成。下图展示了其他色彩(比如黄、粉红)是如何由这三种颜色形成的:

 image.png

如果一幅RGB图像的每个像素的R、G、B分量数值相同,就成了一幅灰度图像。换句话说,同样的红、绿、蓝强度构成灰度。

计算机视觉中常用的另外一个色彩空间是HSV(Hue, Saturation, and Value;色调、饱和度和明亮度)色彩空间。在这个色彩空间中,每个像素由三个数值表示,分别代表色调(色彩)、饱和度(色彩强度)和明亮度(有多亮)。如下图所示,色调值介于0~360(度)之间,用来表示该像素的色彩。例如,0度或者接近0度对应红色或者近似红色:

 image.png

在本书后续部分中,读者会看到,在基于物体色彩的目标检测和追踪算法中,HSV色彩空间更受欢迎。这是因为HSV色彩空间让我们在使用色彩的时候,不需要考虑亮度的影响。这在RGB和其他色彩空间中不是件容易的事情,因为在这些色彩空间中,单独看任何一个像素通道都无法知道色彩究竟是什么。

下图是HSV色彩空间的另一种表示方式,用色调(从左到右)、饱和度和明亮度的变化来产生所有可能的色彩:

 image.png

除了上述提到的色彩空间,还有很多其他色彩空间,每种都有其特定的用途。比如,四通道的CMYK(Cyan, Maroon, Yellow, and Key/Black;蓝绿、褐红、黄和黑)色彩空间就被证明在印刷系统中是最高效的。

请读者在网上学习其他色彩空间,并思考它们是否对特定的计算机视觉问题有用。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。