本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现》一书中的第0章,第0.1节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区“异步社区”公众号查看。

0.1 数字图像

数字图像处理与机器视觉——Visual C++与Matlab实现
自然界中的图像都是模拟量,在计算机普遍应用之前,电视、电影、照相机等图像记录与传输设备都是使用模拟信号对图像进行处理。但是,计算机只能处理数字量,而不能直接处理模拟图像。所以我们要在使用计算机处理图像之前进行图像数字化。

0.1.1 什么是数字图像

简单地说,数字图像就是能够在计算机上显示和处理的图像,根据其特性可分为两大类——位图和矢量图。位图通常使用数字阵列来表示,常见格式有BMP、JPG、GIF等;矢量图由矢量数据库表示,我们接触最多的就是PNG图形。

icon-info提示:

本书只涉及数字图像中位图图像的处理与识别,如无特别说明,后文提到的“图像”和“数字图像”都仅仅是指位图图像。一般而言,使用数字摄像机或数字照相机得到的图像都是位图图像。
我们可以将一幅图像视为一个二维函数f(x, y),其中x和y是空间坐标,而在x – y平面中的任意一对空间坐标(x, y)上的幅值f称为该点图像的灰度、亮度或强度。此时,如果f、x、y均为非负有限离散,则称该图像为数字图像(位图)。

一个大小为M×N的数字图像是由M行N列的有限元素组成的,每个元素都有特定的位置和幅值,代表了其所在行列位置上的图像物理信息,如灰度和色彩等。这些元素称为图像元素或像素。

0.1.2 数字图像的显示
不论是CRT显示器还是LCD显示器,都是由许多点构成的,显示图像时这些点对应图像的像素,显示器被称为位映像设备。所谓位映像,就是一个二维的像素矩阵,而位图则采用位映像方法显示和存储的图像。当一幅数字图像被放大后就可以明显看出图像是由很多方格形状的像素构成的,如图0.1所示。

0.1.3 数字图像的分类

根据每个像素所代表信息的不同,可将图像分为二值图像、灰度图像、RGB图像以及索引图像等。

1.二值图像
每个像素只有黑、白两种颜色的图像称为二值图像。在二值图像中,像素只有0和1两种取值,一般用0来表示黑色,用1表示白色。

2.灰度图像
在二值图像中进一步加入许多介于黑色与白色之间的颜色深度,就构成了灰度图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,每种灰度(颜色深度)称为一个灰度级,通常用L表示。在灰度图像中,像素可以取0~L-1之间的整数值,根据保存灰度数值所使用的数据类型的不同,可能有256种取值或者2k种取值,当k=1时即退化为二值图像。

3.RGB图像
众所周知,自然界中几乎所有颜色都可以由红(Red, R)、绿(Green, G)、蓝(Blue, B)3种颜色组合而成,通常称它们为RGB三原色。计算机显示彩色图像时采用最多的就是RGB模型。对于每个像素,通过控制R、G、B三原色的合成比例则可决定该像素的最终显示颜色。

对于三原色RGB中的每一种颜色,可以像灰度图那样使用L个等级来表示含有这种颜色成份的多少。例如对于含有256个等级的红色,0表示不含红色成份,255表示含有100%的红色成份。同样,绿色和蓝色也可以划分为256个等级。这样每种原色可以用8位二进制数据表示,于是3原色总共需要24位二进制数,这样能够表示出的颜色种类数目为256× 256×256=224,大约有1600万种,已经远远超过普通人所能分辨出的颜色数目。

RGB颜色代码可以使用十六进制数以减少书写长度,按照两位一组的方式依次书写R、G、B三种颜色的级别。例如:0xFF0000代表纯红色,0x00FF00代表纯绿色,而0x00FFFF是青色(这是绿色和蓝色的加和)。当RGB三种颜色的浓度一致时,所表示的颜色就退化为灰度,比如0 x808080就是50%的灰色,0x000000为黑色,而0xFFFFFF为白色。常见颜色的RGB组合值如表0.1所示。

未经压缩的原始BMP文件就是使用RGB标准给出的3个数值来存储图像数据的,称为RGB图像。在RGB图像中每个像素都是用24位二进制数表示,故也称为24位真彩色图像。

4.索引图像
如果对每个像素都直接使用24位二进制数表示,图像文件的体积将变得十分庞大。举个例子,对一个长、宽各为200像素,颜色数为16的彩色图像,每个像素都用RGB 3个分量表示,这样每个像素由3个字节表示,整个图像就是200×200×3=120kB。这种完全未经压缩的表示方式,浪费了大量的存储空间,下面简单介绍另一种更节省空间的存储方式:索引图像。

同样还是200像素×200像素的16色图像,由于这张图片中最多只有16种颜色,那么可以用一张颜色表(16×3的二维数组)保存这16种颜色对应的RGB值,在表示图像的矩阵中使用这16种颜色在颜色表中的索引(偏移量)作为数据写入相应的行列位置。例如,颜色表中第3个元素为0xAA1111,那么在图像中所有颜色为0xAA1111的像素均可以由3-1=2表示(颜色表索引下标从0开始)。如此,每一个像素需要使用的二进制数就仅仅为4位(0.5字节),整个图像只需要200×200×0.5=20kB就可以存储,而不会影响显示质量。

上文所指的颜色表就是常说的调色板(Palette),另一种说法叫做颜色查找表(LUT,Look Up Table)。Windows位图中就应用调色板技术。其实不仅是Windows位图,许多其他的图像文件格式比如PCX,TIF,GIF都应用了这种技术。

在实际应用中,调色板中通常不足256种颜色。在使用许多图像编辑工具生成图像或者编辑GIF文件时,系统常常会提示用户选择文件包含的颜色数目。当选择较低的颜色数目时,会有效地降低图像文件的体积,在一定程度上也会降低图像的质量。

使用调色板技术减小图像文件体积的条件是图像的像素数目相对较多,而颜色种类相对较少。如果一个图像中用到了全部的24位真彩色,则对其使用颜色查找表技术完全没有意义,单纯从颜色角度对其进行压缩是不可能的。

0.1.4 数字图像的实质

实际上,0.1.1小节中对于数字图像f(x, y)的定义仅适用于最为一般的情况,即静态的灰度图像。更严格地说,数字图像可以是2个变量(对于静止图像,static image)或3个变量(对于动态画面,video sequence)的离散函数。在静态图像的情况下是f (x, y),但在动态画面下,则还需要时间参数t,即f (x, y, t);函数值可能是一个数值(对于灰度图像),也可能是一个向量(对于彩色图像)。

icon-info提示:

静态的灰度图像是本书研究的主要对象,对于函数值为向量的情况会在第7章彩色图像处理中阐述,而有关动态图像处理的内容请参见第9章。
图像处理是一个涉及诸多研究领域的交叉学科,下面就让我们从不同的角度来审视数字图像:

从线性代数和矩阵论的角度,数字图像就是一个由图像信息组成的二维矩阵,矩阵的每个元素代表对应位置上的图像亮度和/或色彩信息。当然,这个二维矩阵在数据表示和存储上可能不是二维的,因为每个单位位置的图像信息可能需要不只一个数值来表示,这样可能需要一个三维矩阵来对其进行表示(参见1.2节关于Matlab中RGB图像表示的介绍)。
由于随机变化和噪声的原因,图像在本质上是统计性的。因而有时将图像函数作为随机过程的实现来观察其存在的优越性。这时有关图像信息量和冗余的问题可以用概率分布和相关函数来描述和考虑。例如,如果知道概率分布,可以用熵(Entropy)H1来度量图像的信息量,这是信息论中一个重要的思想。
从线性系统的角度考虑,图像及其处理也可以表示为用狄拉克冲激公式表达的点展开函数的叠加,在使用这种方式对图像进行表示时,可以采用成熟的线性系统理论研究。大多数时候,我们都考虑使用线性系统近似的方式对图像进行近似处理以简化算法。虽然实际的图像并不是线性的,图像坐标和图像函数的取值都是有限的和非连续的。

0.1.5 数字图像的表示

为了表述像素之间的相对和绝对位置,通常还需要对像素的位置进行坐标约定。本书中所使用的坐标约定如图0.2所示。但在Matlab中坐标的约定会有变化,具体请参见1.1.5小节。

在这之后,一幅物理图像就被转化成了数字矩阵,从而成为计算机能够处理的对象。数字图像f的矩阵表示如下所示:

有时也可以使用传统矩阵表示法来表示数字图像和像素:

其中,行列(M行N列)必须为正整数,离散灰度级数目L一般为2的k次幂,k为整数(因为使用二进制整数值表示灰度值),图像的动态范围为[0, L-1],那么图像存储所需的比特数为b = M×N×k。需要注意的是在矩阵f(y, x)中,一般采用先行下标、后列下标的表示方法,因此这里先是纵坐标y(对应行),然后才是横坐标x(对应列)。

而有些图像矩阵中,很多像素的值都是相同的。例如一个在纯黑背景上使用不同灰度勾勒的图像,其多数像素的值都会是0。这种矩阵称为稀疏矩阵(Sparse Matrix),可以通过简单描述非零元素的值和位置来代替大量地写入0元素。这时存储图像需要的比特数可能大大减少。

0.1.6 图像的空间和灰度级分辨率

1.图像的空间分辨率(Spatial Resolution)
图像的空间分辨率是指图像中每单位长度所包含的像素或点的数目,常以像素/英寸(pixels per inch, ppi)为单位来表示。如72ppi表示图像中每英寸包含72个像素或点。分辨率越高,图像越清晰,图像文件所需的磁盘空间也越大,编辑和处理所需的时间也越长。

像素越小,单位长度所包含的像素数据就越多,分辨率也就越高,但同样物理大小范围内所对应图像的尺寸也会越大,存储图像所需要的字节数也越多。因而,在图像的放大缩小算法中,放大是对图像的过采样,缩小则是对图像的欠采样,这些内容会在“4.5节图像缩放”中进一步介绍。

通常在没有必要对涉及像素的物理分辨率进行实际度量时,通常会称一幅大小为M×N的数字图像的空间分辨率为M×N像素。

图0.3给出了同一幅图像在不同的空间分辨率下呈现出的不同效果。当高分辨率下的图像以低分辨率表示时,在同等的显示或打印输出条件下,图像的尺寸会变小,细节变得不明显;当将低分辨率下的图像放大时,则会导致图像的细节仍然模糊,只是尺寸变大。这是因为缩小的图像已经丢失了大量的信息,在放大图像时只能通过复制行列的插值方法来确定新增像素的取值。

2.图像的灰度级/辐射计量分辨率(Radiometric Resolution)
在数字图像处理中,灰度级分辨率又称色阶,是指图像中可分辨的灰度级数目,即前文提到的灰度级数目L,它与存储灰度级别所使用的数据类型有关。由于灰度级度量的是投射到传感器上光辐射值的强度,所以灰度级分辨率也叫辐射计量分辨率。

随着图像灰度级分辨率的逐渐降低,图像中包含的颜色数目变少,从而在颜色的角度造成图像信息受损,同样使图像细节表达受到一定影响,如图0.4所示。

1熵Entropy:熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.1 数字图像相关推荐

  1. 《数字图像处理与机器视觉——Visual C++与Matlab实现》——0.2 数字图像处理与识别...

    本节书摘来自异步社区出版社<数字图像处理与机器视觉--Visual C++与Matlab实现>一书中的第0章,第0.2节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区 ...

  2. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》——1.2 数字图像处理与机器视觉...

    本节书摘来自异步社区出版社<Visual C++ 2012 开发权威指南>一书中的第1章,第1.2节,作者: 张铮 , 徐超 , 任淑霞 , 韩海玲,更多章节内容可以访问云栖社区" ...

  3. 《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》一一第0章 初识数字图像处理与机器视觉...

    第0章 初识数字图像处理与机器视觉 图像是指能在人的视觉系统中产生视觉印象的客观对象,包括自然景物.拍摄到的图片.用数学方法描述的图形等.图像的要素有几何要素(刻画对象的轮廓.形状等)和非几何要素(刻 ...

  4. 数字图像处理与机器视觉——Visual C++与Matlab实现书中代码勘误

    本文为原创作品,不用于商业用途! 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 做了一个 ...

  5. 酉变换 matlab,数字图像处理:原理与实践(MATLAB版)

    数字图像处理:原理与实践(MATLAB版) 作 者:左飞 著 出版时间:2014 内容简介 本书全面系统地介绍了数字图像处理技术的理论与方法,内容涉及几何变换.灰度变换.图像增强.图像分割.图像去噪. ...

  6. 读书笔记之——数字图像处理与机器视觉(一)

    这本书自从买来之后,一直没有仔细的看过,处于吃灰状态--在外界的作用下开始尝试写读书笔记,希望能够坚持下去,起到应有的作用!!!谨以此勉励自己!!! 虽然出身计算机专业,但是越发觉得懂得太少,无知者无 ...

  7. 领域平均法matlab代码实验,数字图像处理邻域平均法滤波实验报告matlab实现.doc...

    数字图像处理邻域平均法滤波实验报告matlab实现 数字图像处理 实验报告 实验三 邻域平均法滤波 学号 姓名 实验三 邻域平均法滤波 一.实验内容 选取噪声较明显的图像,分别采用3*3.5*5.7* ...

  8. 数字图像处理:图像的灰度变换(Matlab实现)

    数字图像处理:图像的灰度变换(Matlab实现) (1)线性变换: 通过建立灰度映射来调整源图像的灰度. k>1增强图像的对比度:k=1调节图像亮度,通过改变d值达到调节亮度目的:0 i = i ...

  9. 数字图像处理与机器视觉_简单自动智能识别物体程序(机器视觉+数字图像处理)...

    非常好的识别物体的机器视觉程序.附有完整的说明文档和代码.代码由matlab写成,并附有测试图片.图片中含有各种物体,通过数字图像处理的知识,自动识别出图片中的各类物体. 文件:n459.com/f/ ...

  10. [数字图像处理Matlab]任选一幅灰度图,自行编写程序,完成直方图均衡化。鼠鼠的数字图像处理实验要求:不能用MATLAB自带的histeq函数实现直方图均衡化

    数学理论前提:见数字图像处理(第三版) 李俊山等编著  p50-53 1.利用imhist函数统计像素点个数 Im = imread("C:\Users\鼠鼠\Desktop\数字图像处理m ...

最新文章

  1. Node.js 将Json文件数据转为SQL可执行的insert语句
  2. 对多个button触发enter操作,执行不同的操作
  3. 使用U盘安装CentOS6.5
  4. SAP UI5里input field live search的实现例子
  5. EF Core下利用Mysql进行数据存储在并发访问下的数据同步问题
  6. pip 安装 imagecodecs 失败
  7. 官方:Angular 5 推迟到10月底发布
  8. matlab lyap,Matlab的Lyapunov、Sylvester和Riccati方程的Matlab求解
  9. 【LeetCode】剑指 Offer 44. 数字序列中某一位的数字
  10. Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程
  11. 常见泰勒展开公式及复杂泰勒展开求法
  12. 统计学中p值计算公式_统计学中的P值如何计算?
  13. 简述autocad在测绘工程中的应用_AutoCAD在工程测绘制图中的应用
  14. 手机TF 卡 无法读取,提示需要格式化
  15. Python 从入门到入魔
  16. python海龟绘图画玫瑰花的简笔画_用python的小海龟 Turtle 画一朵好看又有趣的小花-Go语言中文社区...
  17. java平台rpg游戏丧尸_RPG的生存游戏你玩过吗?《Dead Age》带你逃离丧尸
  18. iDrac6 虚拟控制台 连接失败
  19. 有80%的疾病都是由于不良生活习惯所导致的,常见8大不良习惯,既伤身又伤神
  20. 《手机拍照与视频》那点事

热门文章

  1. pycharm快捷键之①“上下移动某一行“②参数提示
  2. 三维卷积伪代码_用于视频超分辨率的可变形三维卷积
  3. python创建配置文件_python3 如何创建一个.ini的配置文件。
  4. win10必须禁用的服务_Win10系统中这3个无用的设置,奉劝你还是早点关闭吧
  5. Ubuntu上安装ns2-2.34
  6. 逻辑卷、物理卷、卷组
  7. back to wuxi
  8. 《python编程:从入门到实战》学习笔记
  9. elk怎么读的_大数据采集和抽取怎么做?这篇文章终于说明白了!
  10. excel图片变成代码_有趣的EXCELvba作图