精通Matlab数字图像处理与识别(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-23 22:41:31

点击下载

作者:张铮倪红霞苑春苗杨立红编著

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

精通Matlab数字图像处理与识别

精通Matlab数字图像处理与识别试读:

前言

图像处理与识别是当今计算机科学中一个热门研究方向,其应用广泛,发展前景乐观。Matlab是MathWorks公司开发的一款工程数学计算软件。由于其强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计,以及便捷的与其他程序和语言接口的功能,Matlab 已成为当今国际上科学界最具影响力、最有活力的软件。本书正是紧密结合大量的 Matlab 代码和案例展开对数字图像处理和识别技术的介绍。

让计算机理解所“看”到的东西是一件非常神秘和令人兴奋的事情。但要掌握好数字图像处理与识别技术却并非易事,它的理论性较强、门槛较高,在各个高校中,这门课程多是作为计算机专业研究生的选修课程。要理解该领域的知识,读者需要具有一定的数学基础,除此之外,还涉及信号处理、统计分析、模式识别和机器学习等专业领域知识,因此,令很多人望而却步。

其实“难以理解”的关键在于缺乏必要的先序知识,造成了读者在相关知识上难以跨越的鸿沟。我们在撰写本书过程中,对于可能造成读者理解困难的地方,均给出了必要的先序知识,尽量定性地去描述;对于那些并不一目了然的结论均给出了思路和解释;对于某些非常专业、已经超过本书讨论范围的相关知识也都在全书最后给出了参考文献,供有兴趣的读者进一步学习和研究。

本书的宗旨是,向读者介绍知识的同时,培养读者的思维方法,使读者知其然还要知其所以然,并在解决实际问题中能有自己的想法。

—— 内容安排

全书共分15章,主要内容介绍如下。

第1~2章介绍了数字图像处理的基础知识和Matlab数字图像编程基础,使读者第一步能够建立起对于数字图像本质的正确认识,了解和掌握必要的术语,并且熟悉本书自始至终需要使用的工具Matlab,重点介绍其数字图像处理工具箱。

第3~4章分别介绍了图像的灰度变换和几何变换。通过灰度变换可以有效改善图像的外观,并在一定程度上实现图像的灰度归一化;几何变换则主要应用在图像的几何归一化和图像校准当中。总体而言,这些内容大多作为图像的前期预处理工作的一部分,是图像处理中相对固定和程式化的内容。

第5~6章分别从空间域和频率域两个角度去考量图像增强的各个主要方面。图像增强作为数字图像处理中相对简单却最具艺术性的领域之一,可理解为根据特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法。其主要目的是,使处理后的图像对某种特定的应用来说,比原始图像更适用。

第7章小波变换继第6章之后继续在频率域中研究图像。傅立叶变换一直是频率域图像处理的基石,它能用正弦函数之和表示任何分析函数,而小波变换则基于一些有限宽度的基小波,这些小波不仅在频率上是变化的,而且具有有限的持续时间。例如,对于一张乐谱,小波变换不仅能提供要演奏的音符,而且说明了何时演奏等细节信息,但傅立叶变换只提供了音符,局部信息在变换中丢失。

第8章图像复原与图像增强相似,其目的也是改善图像质量。但是图像复原是试图利用退化过程的先验知识使已被退化的图像恢复本来面目,而图像增强是用某种试探的方式改善图像质量,以适应人眼的视觉与心理。引起图像退化的因素包括由光学系统、运动等造成的图像模糊,以及源自电路和光学因素的噪声等。图像复原是基于图像退化的数学模型,复原的方法也建立在比较严格的数学推导上。

第9章是本书中相对独立的一章,以介绍色彩模型之间的相互转换,以及彩色图像处理方面的基本概念和基本方法为主。随着基于互联网的图像处理应用在不断增长,彩色图像处理已经成为一个重要领域。

第10~12章(形态学处理、边缘检测与图像分割、特征提取)是从单纯图像处理向图像识别(机器视觉)的过渡,这一阶段的特点是,输入是图像,输出则是在识别意义上我们感兴趣的图像元素。形态学处理是提取图像元素的有力技术,它在表现和描述形状方面非常有用;分割过程则将一幅图像划分为组成部分或目标对象;研究特征提取则是要将前面提取出来的图像元素或目标对象表示为适合计算机后续处理的数值形式,最终形成能够直接供分类器使用的特征。

第13章在前面知识的基础之上,引出了机器视觉的前导性内容,给出了解决识别问题的一般思路。

第14~15章(人工神经网络、支持向量机)介绍了两种十分强大的分类技术,并介绍了人脸识别技术及经典案例应用。

—— 读者对象

● 具备必要的数学基础的相关专业的本科生、研究生。

● 工作在图像处理和识别领域一线的工程技术人员。

● 对于数字图像处理和机器视觉感兴趣的并且具备必要预备知识的所有读者。

—— 在阅读本书之前,读者最好具有如下的预备知识

● 读者应具备一定的数学基础,如高等数学知识、少量的线性代数基本概念加上对于概率理论主要思想的理解(识别部分)。

—— 在线支持和读者反馈

本书所有Matlab实例的源代码均可在bbs.book95.com网站的“金羽图书与答疑板块”板块与本书同名的主题帖子附件中提供下载。虽然本书中的所有例子都已经在Windows XP、Windows 2003和Windows 7等操作系统下的Matlab2006到MatlabR2011a的各个版本中测试通过,但由于交稿时间要求和笔者水平的局限,也有存在 Bug 的可能,即便正确也很可能存在更加优化的算法或更加合理的程序结构,如发现任何上述问题,请您不吝告知本书的作者(aaron@book95.com),以便我们做出改进。

—— 致谢

首先要感谢我的授业恩师——南开大学的白刚教授和天津大学的赵政教授,是他们引导我进入了图像处理与机器视觉的研究领域。同时,他们在我写作过程中的指点和教诲确保了本书内容的严谨。

本书的第7章、第8章由王艳艳和赵国宇编写,在此向他们表示感谢;同时感谢我的好友王艳平提供并调试了许多实例代码;感谢我的同事——闵卫东、陈香凝、任淑霞、姚清爽、王佳欣、孙连坤、孙学梅、张振和王作为等为本书所做出的工作;感谢我昔日的师弟和师妹——王杉、闫丽霞、刘旭、赵国宇和李宏鹏等参与了部分章节的编写和修改;感谢罗小科先生为本书制作了很多插图;感谢我的兄长张钊为本书提供了部分照片;还要感谢徐超、王欣和郭朋博士等为本书的编写提出了很多的宝贵意见和建议。

最后感谢我的妻子马宏、儿子张垚淼以及我的家人,没有你们的鼓励和支持就不会有我的这部作品。编者  第1章初识数字图像处理与识别

图像是指能在人的视觉系统中产生视觉印象的客观对象,包括自然景物、拍摄到的图片、用数学方法描述的图形等。图像的要素有几何要素(刻画对象的轮廓、形状等)和非几何要素(刻画对象的颜色、材质等)。

本章中,我们主要讲解数字图像和数字图像处理的实质内容和一般步骤,以及一些后面会经常使用到的基本概念。1.1 数字图像

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

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

提示

本书只涉及数字图像中位图图像的处理与识别,如无特别说明,后文提到的“图像”和“数字图像”都仅仅是指位图图像。一般而言,使用数字摄像机或数字照相机得到的图像都是位图图像。

我们可以将一幅图像视为一个二维函数 f(x, y),其中x和y是空间坐标,而在x—y平面中的任意一对空间坐标(x, y)上的幅值f称为该点图像的灰度、亮度或强度。此时,如果f、x、y均为非负有限离散,则称该图像为数字图像(位图)。

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

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

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

1.二值图像

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

2.灰度图像

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

3.RGB图像

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

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

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

未经压缩的原始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位真彩色,对其使用颜色查找表技术是完全没有意义的,单纯从颜色角度对其进行压缩是不可能的。1.1.4 数字图像的实质

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

提示

静态的灰度图像是本书研究的主要对象,对于函数值为向量的情况会在第9章彩色图像处理中阐述。

图像处理是一个涉及诸多研究领域的交叉学科,下面就让我们从不同的角度来审视数字图像。

● 从线性代数和矩阵论的角度,数字图像是由图像信息组成的二维矩阵,矩阵的每个元素代表对应位置上的图像亮度和/或色彩信息。当然,这个二维矩阵在数据表示和存储上可能不是二维的,这是因为每个单位位置的图像信息可能需要不只一个数值来表示,这样可能需要一个三维矩阵来对其进行表示(参见2.2节关于Matlab中RGB图像表示的介绍)。

● 由于随机变化和噪声的原因,图像在本质上是统计性的。因而有时将图像函数作为随机过程的实现来观察存在其优越性。这时有关图像信息量和冗余的问题可以用概率分布和相关函数来描述和考虑。①例如,如果知道概率分布,可以用熵(Entropy)H 来度量图像的信息量,这是信息论中一个重要的思想。① 【注】熵(Entropy):熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。

● 从线性系统的角度考虑,图像及其处理也可以表示为用狄拉克冲激公式表达的点展开函数的叠加,在使用这种方式对图像进行表示时,可以采用成熟的线性系统理论研究。在大多数时候,我们都考虑使用线性系统近似的方式对图像进行近似处理以简化算法。虽然实际的图像并不是线性的,图像坐标和图像函数的取值都是有限的和非连续的。1.1.5 数字图像的表示

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

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

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

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

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

1.图像的空间分辨率

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

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

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

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

2.图像的灰度级/辐射计量分辨率

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

随着图像的灰度级分辨率逐渐降低,图像中包含的颜色数目变少,从而在颜色的角度造成图像信息受损,同样使图像细节表达受到了一定影响,如图1.4所示。▲图1.4 图像的灰度级分辨率(分别具有 256、32、16、8、4和 2个灰度级的一幅图像)1.2 数字图像处理与识别1.2.1 从图像处理到图像识别

图像处理、图像分析和图像识别是认知科学与计算机科学中的一个令人兴奋的活跃分支。从1970年这个领域经历了人们对其兴趣的爆炸性增长以来,到20世纪末逐渐步入成熟。其中,遥感、技术诊断、智能车自主导航、医学平面和立体成像以及自动监视领域是发展最快的一些方向。这种进展最集中地体现在市场上多种应用这类技术的产品的纷纷涌现。事实上,从数字图像处理到数字图像分析,再发展到最前沿的图像识别技术,其核心都是对数字图像中所含有的信息的提取及与其相关的各种辅助过程。

1.数字图像处理

数字图像处理(Digital Image Processing)就是指使用电子计算机对量化的数字图像进行处理,具体地说就是通过对图像进行各种加工来改善图像的外观,是对图像的修改和增强。

图像处理的输入是从传感器或其他来源获取的原始的数字图像,输出是经过处理后的输出图像。处理的目的可能是使输出图像具有更好的效果,以便于人的观察;也可能是为图像分析和识别做准备,此时的图像处理是作为一种预处理步骤,输出图像将进一步供其他图像分析、识别算法使用。

2.数字图像分析

数字图像分析(Digital Image Analyzing)是指对图像中感兴趣的目标进行检测和测量,以获得客观的信息。数字图像分析通常是指将一幅图像转化为另一种非图像的抽象形式,如图像中某物体与测量者的距离以及目标对象的计数或其尺寸等。这一概念的外延包括边缘检测和图像分割、特征提取以及几何测量与计数等。

图像分析的输入是经过处理的数字图像,其输出通常不再是数字图像,而是一系列与目标相关的图像特征(目标的描述),如目标的长度、颜色、曲率和个数等。

3.数字图像识别

数字图像识别(Digital Image Recognition)主要研究图像中各目标的性质和相互关系,识别出目标对象的类别,从而理解图像的含义。这往往囊括了使用数字图像处理技术的很多应用项目,如光学字符识别(OCR)、产品质量检验、人脸识别、自动驾驶、医学图像和地貌图像的自动判读理解等。

图像识别是图像分析的延伸,它根据从图像分析中得到的相关描述(特征)对目标进行归类,输出我们感兴趣的目标类别标号信息(符号)。

总而言之,从图像处理到图像分析再到图像识别这个过程,是一个将所含信息抽象化,尝试降低信息熵,提炼有效数据的过程,如图1.5所示。▲图1.5 数字图像处理、分析和识别的关系

从信息论的角度上说,图像应当是物体所含信息的一个概括,而数字图像处理侧重于将这些概括的信息进行变换,例如升高或降低熵值。数字图像分析则是将这些信息抽取出来以供其他过程调用。当然,在不太严格时,数字图像处理也可以兼指图像处理和分析。

您或许也听过另一个概念,计算机图形学(Computer Graphics)。此概念与数字图像分析大致相反,它是一个对由概念或数学表述的物体图像进行处理和显示的过程。1.2.2 数字图像处理与识别的应用实例

如今,数字图像处理与机器视觉的应用越来越广泛,已经渗透到国家安全、航空航天、工业控制、医疗保健等各个领域乃至我们的日常生活和娱乐当中,在国民经济中发挥着举足轻重的作用。它的一些典型的应用如表1.2所示。表1.2 图像处理与识别的典型应用

下面结合2个典型的应用来说明。

1.图像处理的典型案例——X光照片的增强

图1.6所示为两幅图片,(a)是一幅直接拍摄未经处理的X光照片,对比度较低,图像细节难以辨识;(b)中呈现了(a)经过简单的增强处理后的效果,图像较为清晰,可以有效地指导诊断和治疗。从中读者应该可以看出图像处理技术在辅助医学成像上的重要作用。▲图1.6 图像处理前后的效果对比

2.图像识别的典型案例——人脸识别

人脸识别技术就是以计算机为辅助手段,从静态图像或动态图像中识别人脸。问题一般可以描述为给定一个场景的静态或视频图像,利用已经存储的人脸数据库确认场景中的一个或多个人。一般来说,人脸识别研究分为3个部分:从具有复杂背景的场景中检测并分离出人脸所在的区域;抽取人脸识别特征;然后进行匹配和识别。

虽然人类从复杂背景中识别出人脸及表情相当容易,但人脸的自动机器识别却是一个极具挑战性的课题。它跨越了模式识别、图像处理、计算机视觉以及神经生理学、心理学等诸多研究领域。

如同人的指纹一样,人脸也具有唯一性,可用来鉴别一个人的身份,人脸识别技术在商业、法律和其他领域有着广泛的应用。目前,人脸识别已成为法律部门打击犯罪的有力工具,在毒品跟踪、反恐怖活动等监控中有着很大的应用价值。此外,人脸识别的商业应用价值也正在日益增长,主要是信用卡或者自动取款机的个人身份核对。与利用指纹、手掌、视网膜、虹膜等其他人体生物特征进行个人身份鉴别的方法相比,人脸识别具有直接、友好、方便的特点,特别是对于个人来说没有任何心理障碍。

图 1.7所示为本书后面综合案例中实现的一个基于主成分分析(Principal Component Analysis, PCA)和支持向量机(Support Vector Machine, SVM)的人脸识别系统的简单界面。▲图1.7 一个简单的人脸识别系统1.2.3 数字图像处理与识别的基本步骤

总体来说,数字图像处理与识别包括以下几项内容。

图像的点运算通过灰度变换可以有效改善图像的外观,并在一定程度上实现图像的灰度归一化。本书第3章中将介绍多种基于图像点运算的处理方法,如图像拉伸、对比度增强、直方图均衡以及直方图匹配等。

图像的几何变换主要应用在图像的几何归一化和图像校准当中,将在本书第4章中进行介绍。总体而言,第3、4两章内容大多作为图像的前期预处理工作必要的一部分,是图像处理中相对固定和程式化的内容。

图像增强作为数字图像处理中相对简单却最具艺术性的领域之一,可理解为根据特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某种特定的应用来说,比原始图像更适用。作为图像处理中一个相当主观的领域(增强的目的是可以让人更好地观察和认知图像),图像增强是以下多种图像处理方法的前提与基础,也是在图像获取后的先期步骤。本书第5~6章分别从空间域和频率域两个角度去考量图像增强的各个主要方面。

小波变换伴随着人们对图像压缩、边缘和特征检测以及纹理分析的需求的提高应运而生。傅立叶变换一直是频率域图像处理的基石,它能用正弦函数之和表示任何分析函数,而小波变换则基于一些有限宽度的基小波,这些小波不仅在频率上是变化的,而且具有有限的持续时间。例如对于一张乐谱,小波变换不仅能提供要演奏的音符,而且说明了何时演奏等细节信息,但是傅立叶变换只提供了音符,局部信息在变换中丢失。本书将在第7章中讨论小波变换。

图像复原与图像增强相似,其目的也是改善图像质量。但是图像复原是试图利用退化过程的先验知识使已被退化的图像恢复本来面目,而图像增强是用某种试探的方式改善图像质量,以适应人眼的视觉与心理。引起图像退化的因素包括由光学系统、运动等造成的图像模糊,以及源自电路和光学因素的噪声等。图像复原是基于图像退化的数学模型,复原的方法也建立在比较严格的数学推导上。本书第8章介绍图像复原。

彩色图像处理实际上是从图像的类型分类,主要包括对全彩图像的处理,也包括灰度图像的伪彩色化。彩色图像处理相对二值图像和灰度图像更为复杂,我们会在第9章中简要阐述这方面的基础知识。

形态学图像处理是一种将数学形态学推广应用于图像处理领域的新方法,是一种基于物体自然形态的图像处理分析方法。而形态学的概念最早来源于生物学,是一门生物学中研究动物和植物结构的一个分支科学。数学形态学(也称图像代数)则是一种以形态为基础对图像进行分析的数学工具,其基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。图像形态学往往用于边界提取、区域填充、连通分量的提取、凸壳、细化、像素化等图像操作。本书第10章专门介绍形态学图像处理的方法与基本应用,这一章将是我们从图像处理到图像特征处理的开始。

图像分割(Image Division)是指将一幅图像分解为若干互不交叠区域的过程,分割出的区域需要同时满足均匀性和连通性的条件。目标的表示与描述是指用组成目标区域的像素或区域边界的像素标出这一目标,并且对目标进行抽象描述,使计算机能充分利用所获得的处理分割结果。实际上,表达和描述的联系是十分紧密的,表达的方法限制了描述的精确性,而只有通过对目标的描述,各种表达方法才有意义。

特征提取(Feature Extraction)指的是进一步处理之前得到的图像区域和边缘,使其成为一种更适合于计算机处理的形式。为了使计算机能够“理解”图像,从而具有真正意义上的“视觉”,我们研究如何从图像中提取有用的数据或信息,得到图像的“非图像”的表示或描述,如数值、向量和符号等,这一过程就是特征提取,而提取出来的这些“非图像”的表示或描述就是特征。有了这些数值或向量形式特征我们就可以通过训练过程教会计算机如何懂得这些特征,从而使计算机具有了识别图像的本领。常用的图像特征有纹理特征、形状特征、空间关系特征等。

对象识别(Object Recognition & Identification)一般是指利用前一步从数字图像中提取出的特征向量进行分类和理解的过程,这涉及计算机技术、模式识别、人工智能等多方面的知识。这一步骤是建立在前面诸多步骤的基础上的,用以向上层控制算法提供最终所需的数据或直接报告识别结果。事实上,对象识别已经上升到了机器视觉的层面上。在笔者曾参与的多个项目中,对象识别都被作为替代传统图像处理手段的方式,应用在人脸识别、表情识别等需求中。

经过上述处理步骤,最初的一幅原始的、可能存在干扰和缺损的图像就变成了其他控制算法需要的信息,从而实现了图像理解的最终目的。以上概括了数字图像处理的基本顺序,但不是每个图像处理系统都一定需要进行所有这些步骤。事实上,很多图像处理系统并不需要处理彩色图像,或者不需要进行图像复原。在实际的图像处理系统设计中,我们应当根据实际需要决定采用哪些步骤和模块。1.3 数字图像处理的预备知识

数字图像是由一组具有一定的空间位置关系的像素组成的,因而具有一些度量和拓扑性质。理解像素间的关系是学习图像处理的必要准备,这主要包括相邻像素、邻接性、连通性、区域、边界的概念,以及今后要用到的一些常见距离度量方法。另外1.3.3小节还将简单介绍几种基本的图像操作。1.3.1 邻接性、连通性、区域和边界

为理解这些概念,需要首先了解相邻像素的概念。依据标准的不同,我们可以关注像素P的4邻域和8邻域,如图1.8所示。▲图1.8 P的各种邻域

1.邻接性

定义V是用于决定邻接性(Adjacency)的灰度值集合,它是一种相似性的度量,用于确定所需判断邻接性的像素之间的相似程度。例如在二值图像中,如果我们认为只有灰度值为1的像素是相似的,则即 V={1},当然相似性的规定具有主观标准,因此也可以认为 V={0,1},此时邻接性完全由位置决定;而对于灰度图像,这个集合中则很可能包含更多的元素。此外,定义对角邻域n(P)为8-邻域中不属于4-D邻域的部分(见图1.8),那么:

● 4邻接(4-Neighbor):如果 Q∈n(P),则称具有V中数值的两4个像素P和Q是4邻接的。

● 8邻接(8-Neighbor):如果 Q∈n(P),则称具有V中数值的两8个像素P和Q是8邻接的。

举例来说,图1.9(a)、(b)分别是像素和Q、Q、Q的4邻接12和8邻接示意图。而对于两个图像子集S和S,如果S中的某些像素121和S中的某些像素相邻,则称这两个子集是邻接的。2▲图1.9

2.连通性

为了定义像素的连通性,我们首先需要定义像素P到像素Q的通路(Path)。这也是建立在邻接性的基础上的。

像素P到像素Q的通路(Path)指的是一个特定的像素序列(x, 0y), (x, y), …, (x, y),其中(x,y)=(x,y),(x,y)=(x,y)。并且像011nn00ppnnqq素(x,y)和(x,y)在满足1≤i≤n时是邻接的。在上面的定义中,n是通iii-1i-1路的长度,若(x, y) = (x, y),则这条通路是闭合通路。相对应于邻00nn接的概念,在这里有4通路和8通路。这个定义和图论中的通路定义是基本相同的,只是由于邻接概念的加入而变得更加复杂。

像素的连通性(Contiguous):令S代表一幅图像中的像素子集。如果在S中全部像素之间存在一个通路,则可以称2个像素P和Q在S中是连通的。此外,对于S中的任何像素P,S中连通到该像素的像素集叫做S的连通分量。如果S中仅有一个连通分量,则集合S叫做连通集。

3.区域和边界

区域的定义建立在连通集的基础上的。令R是图像中的一个像素子集,如果R同时是连通集,则称R为一个区域(Region)。

边界(Boundary)的概念是相对于区域而言的。一个区域的边界(或边缘、轮廓)是区域中所有有一个或多个不在区域R中的邻接像素的像素所组成的集合。显然,如果区域R是整幅图像,那么边界就由图像的首行、首列、末行和末列定义。因此,通常情况下,区域指一幅图像的子集,并包括区域的边缘。而区域的边缘(Edge)由具有某些导数值的像素组成,是一个像素及其直接邻域的局部性质,是一个有大小和方向属性的矢量。

边界和边缘是不同的。边界是和区域有关的全局概念,而边缘表示图像函数的局部性质。1.3.2 距离度量的几种方法

基于上一小节提到的相关知识,我们来理解距离度量的概念。假设对于像素P(x, y)、Q(x, y)、R(x, y)而言,有函数D满足如下3个ppqqrr条件,则函数D可被称为距离函数或度量。(i)D(P, Q)≥0,当且仅当P=Q时有D(P, Q) = 0(ii)D(P, Q) =D(Q, P)(iii)D(P, Q) ≤ D(P, R) +D(R, Q)

常见的几种距离函数如下。(i)欧氏距离

即距离等于r的像素形成以P为圆心的圆。(ii)D距离(街区距离)4

即距离等于r的像素形成以P为中心的菱形。(iii)D距离(棋盘距离)8

即距离等于r的像素形成以P为中心的方形。

距离度量参数可以用于对图像特征进行比较和分类或者进行某些像素级操作。最常用的距离度量是欧氏距离。然而在形态学中,也可能使用街区距离和棋盘距离。1.3.3 基本的图像操作

在后续章节中,将涉及各种各样的图像操作,这里就几种最为典型和常用的图像操作着重说明。按照处理图像的数量分类,可以分为对单幅图像操作(如滤波)和对多幅图像操作(如求和、求差和逻辑运算等);按照参与操作的像素范围的不同,可以分为点运算和邻域运算;而根据操作的数学性质,又可以分为线性操作和非线性操作。

1.点运算和邻域运算

点运算指的是对图像中的每一个像素逐个进行同样的灰度变换运算。设r和s分别是输入图像f(x, y)和输出图像g(x, y)在任一点(x, y)的灰度值,则点运算可以使用下式定义。

而如果将点运算扩展,对图像中每一个小范围(邻域)内的像素进行灰度变换运算,即称为邻域运算或邻域滤波。这可以使用下式定义。

我们将分别在第3章和第5章介绍点运算和邻域运算。

2.线性和非线性操作

令H是一种算子,其输入输出都是图像。若对于任意两幅(或两组)图像f和f及任意两个标量a和b都有如下关系成立。12

则称 H 为线性算子。也即对两幅图像的线性组合应用该算子与分别应用该算子后的图像在进行同样的线性组合所得到的结果相同,即算子 H 满足线性性质。同样的,不符合上述定义的算子即为非线性算子,对应的是非线性图像操作。举例来说,滤波中的平均平滑、高斯平滑、梯度锐化等都是线性运算,而中值滤波(详见第5章空间域图像增强)则是非线性的。

线性操作由于其稳定性的特点而在图像处理中占有非常重要的地位。尽管非线性算子常常也能够提供较好的性能,但它的不可预测性使其在一些如军事图像处理和医学图像处理等严格的应用领域中难以获得广泛的应用。  第2章Matlab数字图像处理基础

Matlab是MathWorks公司开发的一款工程数学计算软件。不同于C++、Java、Fortran等高级编程语言是对机器行为进行描述,Matlab 是对数学操作进行更直接的描述。Matlab 图像处理工具箱(Image Processing Toolbox, IPT)封装了一系列针对不同图像处理需求的标准算法,它们都是通过直接或间接地调用Matlab中的矩阵运算和数值运算函数来完成图像处理任务的。2.1 Matlab R2011a简介

本节将介绍一些Matlab R2011a中与图像处理密切相关的数据结构及基本操作,如基本文件操作、变量使用、程序流程控制、打开和关闭图像以及图像格式转换和存储方式等。这些都是后续将要学习的图像处理算法的基础。2.1.1 Matlab软件环境

1.软件界面

图 2.1所示是运行于32-bit Windows操作系统上的Matlab R2011a界面。软件主界面由3个子窗口组成,左上为当前工作目录的文件列表,右上方为当前工作区的变量,右下为当前和最近会话的命令历史记录,而中间的主窗口则是命令输入和结果输出区,>>为提示符。▲图2.1 Matlab界面

2.Matlab命令与程序

可以在>>提示符后面输入简单的算式(如5*3-2)或带有函数的算式(如sin(pi/2)*sqrt(3)/2)并按回车键,会提示ans=0.8660,这就是Matlab最基本的计算功能。

这样的输入形式实际上是Matlab命令,而如果在每行命令的结尾输入半角分号,命令窗口不会立即显示命令执行的结果,而会将结果保存在工作区中。示例如下。

>> res = sin(pi/2)*sqrt(3)/2; % 将计算结果保存至变量res当中

此时,变量res已经存在于工作区中,但是命令窗口不会回显它的值。

另外,也可以在文件菜单下执行“New” “M-Files”命令来创建一个新的Matlab文件,在里面输入命令(以半角分号结尾),从而得到一个Matlab程序。在Matlab程序中,使用%表示注释,其用法和C/C++中的//注释符类似。

3.跨行语句

Matlab 允许在同一行中输入多条语句,之间用分号隔开。同时,Matlab 还允许将同一条语句分割在多行中书写以方便较长语句的阅读,方法是在行末使用3个半角圆点。示例如下。

>> z = 2 .* x +exp( x .^ 2 + y .^ 2 - sqrt(1 - log(x) - log (y) ) )...

   - y .* sqrt(t) - x .* sqrt(t);2.1.2 文件操作

默认情况下,Matlab可以自动搜索到当前目录(Current Directory)和Matlab的路径变量 path中所含有目录下面的文件。对处在这些位置可由 Matlab 执行的文件,直接在命令窗口中键入文件名即可运行。如果需要直接运行其他目录下的文件,就要使用addpath和genpath等命令向路径列表中添加路径。

1.addpath函数

addpath函数向path变量中加入指定的目录路径,其原型如下。

addpath('dir','dir2','dir3' ...'-flag')

该函数可以接受任意数目的参数。

参数说明

● dir、dir2、dir3等为要加入的目录路径,这些变量必须是绝对路径。

● flag参数可以用来指定函数的行为,它是可选参数,其取值的含义如表2.1所示。表2.1 addpath函数flag参数的取值

可以在使用addpath函数前后查看path变量的内容,以确定添加成功。

2.genpath函数

genpath函数生成包含指定目录下所有子目录的路径变量,其原型如下。

p = genpath('directory');

参数说明

● 参数directory为指定的目录。

返回值

● 函数返回包含指定目录本身和其全部子目录的数据。返回值也可以直接提供给addpath,从而直接添加一个目录及其全部子目录到当前路径列表中。通过这样的方式可以方便地调用我们自己的程序工具箱,例如使用下面的命令将目录“F:\doctor research\Matlab Work\FaceRec”添加到系统当前路径列表后,就可以直接调用人脸识别工具箱FaceRec中的任何函数了。

>> addpath(genpath('F:\doctor research\Matlab Work\FaceRec')) %注意这里要使用绝对路径

也可以在运行M文件时使用完整的文件路径,从而避免同名文件的冲突问题,或是从资源管理器中将M文件拖动到Matlab的命令窗口中直接运行。

3.打开与编辑M文件

如果需要编辑某个M文件,可以使用open命令和edit命令,它们的调用形式如下。

open filename

edit filename

参数filename为需要打开的文件名。edit命令只能编辑M文件,而open命令可以使用Windows默认操作打开一系列其他类型的文件。2.1.3 在线帮助的使用

在Matlab中,有4种方法获取软件的在线帮助。

1.help命令

help命令可以用于查看Matlab系统或M文件中内置的在线帮助信息。命令格式如下。

help command-name

command-name为需要查看在线帮助的命令或函数的名称。例如,想要查看doc命令的使用方法,可在命令提示符下直接输入 help doc,如图 2.2所示。

2.doc命令

doc 命令可以用于查看命令或函数的 HTML 帮助,这种帮助信息可以在帮助浏览器窗口中打开。其调用格式如下。

doc function-name

doc命令可提供比help命令更多的信息,还可能包含图片或视频等的多媒体例子,对图像处理工具箱中的函数更是如此。

图 2.3所示为在命令行中输入 doc imhist命令后出现的帮助示例界面。▲图2.2 help命令界面▲图2.3 doc命令结果

3.lookfor命令

当忘记命令或函数的完整拼写时,可以使用lookfor命令查找当前目录和自动搜索列表下所有名字中含有所查内容的函数或命令。其调用格式如下。

lookfor keyword

keyword为指定要查找的关键字。此命令可以给出一个包含指定字符串的函数列表,其中的函数名称为超链接,单击即可查看该函数的在线帮助,如图2.4所示。▲图2.4 lookfor命令界面

4.F1命令打开帮助浏览器

在Matlab R2011a的主界面中按键盘的“F1”键,弹出如图 2.5所示的对话框。▲图2.5 按 F1键的对话框

单击左下角的“Open Help Browser”链接打开如图2.6所示的帮助浏览器窗口。在左上角的编辑框中输入感兴趣的关键字,单击回车进行查询,右侧会出现相应的帮助信息。

在后面的章节中,如果忘记了曾经提到的命令的含义,建议首先通过在线帮助寻求相关信息,以此增强自学能力。▲图2.6 Help浏览器窗口2.1.4 变量的使用

变量可以保存中间结果和输出数值等信息。Matlab中,变量的命名规则和C/C++等常见的编程语言很类似,同时变量也是大小写敏感的。另外,Matlab 中的变量不需要先行定义,但在使用前一定要赋值。

1.变量的赋值

可以通过赋值语句来给变量赋值。赋值操作使用等号“=”,例如a=5是给a(注意不是A )这个变量赋值5,如果未定义变量a,会自动定义。在Matlab中,变量定义时不需要显式地指明类型, Matlab会根据等号右边的值自动确定变量的类型。默认的对数字的存储类型为double型或double型数组,而字符的存储类型为char型,字符串的存储类型为char型数组。

对字符串赋值时,需要用半角单引号'括起来(注意不是双引号,也不是任何的全角字符),例如msg='Hello world'。

2.内部变量

Matlab有某些内部变量名和保留字,如表2.2所示。变量命名时不要与它们重名。表2.2 Matlab内部变量列表续表

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载