图2.2 彩色图像及其对应的矩阵
数字图像是对二维连续光函数进行等距离矩形网格采样,再对幅度进行等间隔量化得到的二维数据矩阵。采样是测量每个象素值而量化是将该值数字化的过程。
数字图像在本质上是二维信号,因此信号处理(以一维信号为对象展开的课程)中的基本技术(如FFT)可以用在数字图像处理中。但是,由于数字图像只是一种非常特殊的二维信号,反映场景的视觉属性,只是二维连续信号的非常稀疏的采样,希望从单个或少量采样中获得有意义的描述或特征,无法照搬一维信号处理的方法,需要专门的技术。实际上数字图像处理更多地依赖于具体应用问题,是一系列的特殊技术的汇集,缺乏贯穿始终的严格的理论体系。
数字图像处理是一个多学科交叉的领域,涉及光学、电子学、数学、摄影技术、计算机技术等众多学科,是一个高度综合的技术学科。
对图像进行处理(或加工、分析)的主要目的有三个方面:
(1)为了提高图像的视感及质量,将进行一些图像的高度,彩色变换及增强等要素,对图像进行了一些几何的变换等等,方便提高图像的质量。
(2)在提取图像的过程中,需要一些特性及提取的信息为分析图像提供大量的方便。在模式识别中便于操作。它包括多个方面的要素,例如频域特性,灰度及颜色、边界、区域、纹理、形状及关系等等特性,
(3)在大量的图像的变换及编码和压缩等技术中,为了方便图像的存储及传输。无论是哪种图像的处理或是加工,都需采用计算机与图像专用设备来完成图像处理对图像数据进行一些必要的加工处理等等。
数字图像处理主要研究的内容有以下几个方面:
5
1) 在图像变换中,由于图像矩阵函数很庞大,需要在空间域中进行大量的处理,这些内容涉及计算量相当大。因此,通常采用的图像变换的方法有傅立叶、沃尔什、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,可减少计算量也可获得更有效的处理。
2) 在图像编码压缩技术中,可减少描述图像的数据量(即Bit数),即可节省图像传输、处理时间和减少所占用的存储器容量。而图像压缩技术可以在不失真的前提下获得相应的要求,也可以在允许失真的条件下进行图像处理。图像编码技术是图像压缩技术中最重要的方法之一,它在图像处理技术中是发展最早且比较成熟的一门编码技术。
3) 图像的增强和复原目的是为了达到图像的质量,例如去除,提高图像的清晰度等等。图像增强不考虑图像降低质量的原因,突出图像中所需求的部分。如强化边缘的设置,可使图像中物体轮廓边缘更加清晰可见,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质(降低质量)的原因有一定的了解,一般需要根据降质过程建立"降质模型",再采用某种滤波方法,恢复或重建技术来还原各种图像达到所需要目的。
4)图像分割技术是数字图像处理中的重要技术之一。图像分割技术是将图像中有意义的部分提取出来,其中有意义的特征包括图像中的边缘、区域等,它是进一步进行图像识别、分析和理解的必要之处。目前已研究出不少关于边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效的方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热门话题之一。
5)图像描述是图像识别和理解的必要前提之一。作为最简单的二维图像可采用其几何特性描述物体的技术,一般图像的描述方法可采用其二维图像形状描述,它有边界描述和区域描述两类技术。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积、表面、广义圆柱体描述等方法来研究。
6)图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)技术后,进行图像分割及特征提取的方法,从而进行一些判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊识别和人工神经网络模式分类在图像识别中也越来越受到广大编程人员的重视。
6
第三章 MATLAB下实现的程序基本框架
本文主要是采用MATLAB这一软件进行图像特效处理的研究,因此,本章开始先简单介绍一下MATLAB在数字图像处理方面的特点。
3.1 MATLAB实现数字图像处理的优缺点
MATLAB是一套功能强大的工程计算软件,被广泛的应用于自动控制、机械设计、流体力学和数理统计等工程领域。工程技术人员通过使用MATLAB提供的工具箱,可以高效的求解复杂的工程问题,并可以对系统进行动态的仿真,用强大的图形功能对数值计算结果进行显示。MATLAB是必备的计算与分析软件之一,也是研究设计部门解决工程计算问题的重要工具[3]。本节主要介绍MATLAB在数字图像处理方面的优势以及其缺点。
3.1.1 MATLAB实现的优势
MATLAB语言有不同于其他高级语言的特点,被称为第四代计算机语言。正如第三代计算机语言如FORTRAN与C等使人们脱离了IT硬件的大量操作。MATLAB软件使人们编写少量的程序代码实现出不同的特效。其中的一些丰富函数可以让编程人员减少一些冗余的代码。只需简单的调用即可实现各种特效。而这个软件的最大的优点是直观简捷。其语言的特点如下:
1. 编程效率高
MATLAB软件,它是一种面向科学及工程计算的一门编程语言。允许用数学的形式编写一些程序。且比BASIC,FORTRAN和C等等计算公式的语言强大得多。用它如同在演算纸上列公式解决问题一样简单有效。因此,通俗地讲此语言就是演算纸式科学算法语言。它简单,高效,易学易懂。
2.高效方便的矩阵和数组运算
MATLAB语言如同BASIC、FORTRAN和C语言一样规定了矩阵的算术、关系、逻辑、条件及赋值等运算符,并且这些运算符大多可以毫无变化的照搬到数组建的运算中。例如:有些如算术运算符只要增加一个“.”就可以用于数组之间的运算。此外,[3]苏金明,王永利.MATLAB 7.0实用指南[M].北京:电子工业出版社,2004.
7
它不需定义数组拥有多少维,并给出矩阵函数和特殊矩阵专门的库函数,使的在数字图像处理问题时显得简洁、高效、便捷,这是其他高级语言无与伦比的。
3.用户使用便捷
MATLAB语言是一种专门的工具编译的语言,它灵活、方便,调试速度快,需要学习时间少。大多数的计算机编程语言都会用到以下四个步骤:编辑、链接、编译和调试。各步骤间采用顺序的关系,编程的过程是在他们之间做些瀑布模型的循环。它与其他语言做比较,较好的解决了上述所有问题,把编辑、编译、连接和执行合二为一。它能在同一画板上进行方便的操作,减少一些输入程序的书写规范错误、语法错误甚至语义错误,从而可以大大加快用户各种操作程序的速度,可以说在编程和调试中,它是一种比VB还要好,还要更加简单的编程语言,更不用提是什么强大的C和C++语言了。
4.扩充性好,交互性强
MATLAB语言含有大量的库函数,在进行复杂的求值运算时可以随意调用MATLAB中的函数,且这些库函数在用户使用上是一致的,因此用户文件也可用MATLAB的库函数来调用。用户可以依据个人的需求,方便的建立并扩充新的大量的库函数,为了提高MATLAB使用效率及扩充的能力。此外,为了详细运用FORTRAN及C等编程语言的技术,包括用户自己调试好的FORTRAN、C语言程序,一并建立出以M的文件的形式,采用混合编程的方式,方便地调用出关于FORTRAN、C语言子程序,还可以在C语言和FORTRAN语言中方便的使用MATLAB的数值计算功能。良好的交互性增加了代码的重用性。
综上所述,MATLAB最适用的范围是科学计算,对于本文需要处理矩阵运算来实现图像处理算法来说,MATLAB再合适不过了[2]。
5.出色的图形处理功能
MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的做图技术包含二维和三维的可视化界面进行大量的图像采集技术,可用于科学计算和工程绘图,如工程绘图软件(AUTO CAD)。新版本的MATLAB对整个图形处理功能做了很大的贡献,使它不仅在一些可视化做图软件中使用其强大的功能(例如二维曲线和三维曲面的绘制和处理等),而且对于一些其他软件没有的功能(例如图形的光照处[2]冈萨雷斯.数字图象处理(Matlab版)[M]北京:电子工业出版社,2004.
8