数字灰度图像的基本运算处理 正文讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1前言
介绍一种用可视化数值计算软件MATLAB实现的数字图像处理系统平台,系统使用MATLAB中提供的GUI设计系统可视化的用户界面,下拉式的菜单方便用户选择对图像的处理。用户可以随意选择要处理的图片。但是该系统只支持灰度图片,可实现内容主要包括灰度图像的代数运算、几何运算。基于数字图像处理的一些基本原理,利用MATLAB 设计程序进行对灰度图像的处理。有部分处理运算有很多种方法,我选择了最简单、最明了的方法。
数字图像处理又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。理论上讲,图像是一种二维的连续函数,然而在计算机上对图像进行数字处理的时候,首先必须对其在空间和亮度上进行数字化,这就是图像的采样和量化的过程。二维图像进行均匀采样,就可以得到一幅离散化成M×N样本的数字图像,该数字图像是一个整数阵列,因而用矩阵来描述该数字图像是最直观最简便的了。
随着计算机的发展,图像处理技术在许多领域得到了广泛应用,用于图像处理的软件也很多,如PHOTOSHOP、PAINTSHOP、GIMP、SaperaProcessing、MATLAB等,其中大部分软件都是基于广告策划和图像修饰处理而设计的应用软件,进行图像处理时并不是很方便。而MATLAB(矩阵实验室) 它在矩阵运算上有自己独特的特点,在矩阵运算处理具有很大的优势,因此用MATLAB处理数字图像非常的方便。不仅如此,MATLAB提供了丰富的图形命令和图形函数,而且其面向对象的图形系统具有强大的用户界面(GUI)生成能力。这样,用户就可以充分利用系统提供的 GUI 特性,编写自己需要的图形界面,从而可以高效地进行图像处理。
MATLAB支持五种图像类型,即索引图像、灰度图像、二值图像、RGB图像和多帧图像阵列;支持BMP、GIF、HDF、JPEG、PCX、PNG、TIFF、XWD、CUR、ICO等图像文件格式的读,写和显示。MATLAB对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以对图像进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、二值图像操作以及形态学处理等图像处理操作。
2方案设计
2.1系统基本方案
本系统利用MATLAB语言设计程序进行灰度图像处理,主要功能包括灰度图像的代数运算、几何运算,基本上包含了图像的所有变换和运算。菜单式选择图像处理运算清晰方便,可视化的界面形象生动、使用方便、交互性强、具有无限的扩展能力。
2.2系统流程图
2.3 MATLAB的语言特点
(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。运算符丰富。
(2) MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if 语句),又有面向对象编程的特性。
(3)程序限制不严格,程序设计自由度大。
(4)MATLAB的图形功能强大。
(5)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
(6)由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
2.4 设计最终方案决定
虽然可用高级编程语音(比如c#、delphi等),但实现工具选用matlab较为方便。、3系统的设计原理
3.1各模块功能及图像处理原理
3.1.1代数运算
代数运算是指两幅输入图象之间进行点对点的加、减、乘、除运算得到输出图象的过程。如果记输入图象为A(x,y)和B(x,y),输出图象为C(x,y),则有如下四种简单形式: C(x,y) = A(x,y)+B(x,y) C(x,y) = A(x,y)-B(x,y) C(x,y) = A(x,y)×B(x,y) C(x,y) = A(x,y)/ B(x,y)
对于图像的代数运算应注意以下问题:
(1)代数运算的结果很容易超出数据类型允许的范围,有些运算(如除法)会产生分数结果,这个结果是不能用整数类型描述的,所以在图像代数运算中会采用以下的截取规则:
①超出数据类型允许的范围的值用数据类型的最大值代替;
②分数的结果采用四舍五入的方法整取。
(2)在使用Matlab中代数运算函数时,不用进行数据类型的转换,这些函数可以接受uint8和uint16数据类型,并返回相同格式的图象结果。
(3)可以使用+、-、*、/等基本算术运算符来进行图像的算数操作运算,但是不同于Matlab中提供的运算函数,必须在运算前将图像转换为适合进行算数运算的双精度数据类型。
(4)任何一个代数运算,都必须保证输入图像的大小相等,且数据类型一致。
在该功能模块中主要设计了图像的求补、叠加、减法、线性组合、乘法、除法运算。
3.1.2几何运算
在该功能模块中主要包含了改变图像大小、图像水平镜像、垂直镜像、图像转置、图象旋转、图像裁剪。
1.放缩操作:
MATLAB 影像工具箱中的immersize 函数可以通过一种特定的插补方法来改变图像的大小。该函数的语法如下面所述:
B=immersize (A,m ,method )。
如果用户没有指定插补方法,则该函数将采用缺省的近邻插补方法。另外,我们还可以根据指定的放大系数来改变图像的大小。例如,下面的代码可以将X 中的像素数目增加一倍。Y=immersize (X ,2)。其中2为放大的系数。如果希望缩小系数,只需将放大系数设置在0到1之间即可。
2.旋转操作:
在MATLAB 处理工具箱中的imrotate 函数可以通过一种特定的插补方法来改变图像显示的角度。该函数的语法如下所示:B=imrotate (A,angle ,method )
该函数以图像中心点为基准,以角度 angle 逆时针方向旋转。指定 angle 为负值,可实现图像顺时针旋转。
该函数是旋转图像 A ,使用指定的差值方法, method 是可以有下列值之一的一个文本字符串,默认值是包含在大括号({}).
如果用户没有指定插补方法,则该函数将采用缺省的近邻插补方法。另外,用户还需指定旋转的角度。
图像的几何变换可以看成是像素在图像内的移动过程,该移动过程可以改变图像中物体对象(像素)之间的空间关系。完整的几何运算需要由两个算法来实现:空间变换算法和灰度插值算法。空间变换主要用来保持图像中曲线的连续性和物理的连通性,一般都采用数学函数形式来描述输入、输出图像相应像素间的空间关系。
空间变换一般定义为(,)(',')[(,),(,)]g x y f x y f a x y b x y ==,其中,f 便是输入图像,g 表示输出图像,坐标(',')x y 指的空间变换后的坐标,要注意这时的坐标已