当前位置:文档之家› 数字灰度图像的基本运算处理 正文讲解

数字灰度图像的基本运算处理 正文讲解

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 指的空间变换后的坐标,要注意这时的坐标已经不是原来的坐标(,)x y 了,(,)a x y 和(,)b x y 分别图像的x 和y 坐标的空间变换函数。

灰度级插值主要是对空间变换后的像素赋予灰度值,使之恢复原位置处的灰度值,在几何运算中,灰度级插值是必不可少的组成部分。

因为图像一般用整数位置处的像素来定义。

而在几何变换中,(,)g x y 的灰度值一般由处在非整数坐标上的(,)f x y 的值来确定,即g 中的一个像素一般对英语f 中的几个像素之间的位置,反过来看也是一样,即f 中的一个像素往往被映射到g 中的几个像素之间的位置。

3.2 MATLAB 程序编写及具体操作3.2.1界面设计该系统的界面设计程序MainInterface.m 主要运用了Matlab GUI 中的figure(图形窗口)、uimenu(图形窗口主菜单)两个对象。

在GUI 中所有的对象创建都有着相同的格式: handle=function(‘propertyname ’, propertyvalue,…)uimenu 对象的一些常用属性如表1所示:表1 uimenu 对象的属性列表在本系统菜单设计过程中主要使用了figure、uimenu的Backgroundcolor、Callback、Label、Position 、Separator、Visible属性。

在被处理图片打开之前除“文件”、“帮助”菜单的visible属性为“on”,即可见外其它均为“off”。

3.2.2代数运算函数3.2.3图像代数运算(1)图像加法函数imadd语法格式Y=imadd (X)说明:imadd函数用于产生两张图像的叠加效果,其中X,Y是类型相同的数组。

imadd 函数还可以通过指定常数参数增强一张图像的亮度。

在本系统中就采用了此方法,指定常数参数增强灰度图像的亮度。

(2)图像减法函数imsubtract语法格式:Y= imsubtract (X))说明:说明:imadd函数用于产生两张图像的叠加效果,其中X,Y是类型相同的数组。

subtrac函数还可以通过指定常数参数降低一张图像的亮度。

在本系统中就采用了此方法,指定常数参数降低灰度图像的亮度。

(3)图像乘法运算immultiply和图像除法运算mdivide图像的乘法、除法、减法运算类似于叠加运算。

乘法函数immultiply用于对两张图像进行掩膜操作,即屏蔽掉图像的某些部分。

使用乘法函数时需指定缩放参数,如果大于1则增强图像亮度,反之则减弱图像亮度。

除法函数imdivide通常用于校正成像设备的非线性误差,也可以用于检测两张图像之间的差别,它给出的是相应像素值的变化比率,而不是每个像素值的绝对差异。

减法函数imsubtract通常用于检测图像变化以及运动物体的图像处理。

3.2.4图像几何运算(1)改变图像大小函数imresize语法格式:Y=imresize(X,M,Method)说明:其中X表示需要进行操作的图像,M是放大的倍数,一般来说M是大于0的实数,如果M大于1表示放大图像,小于1则表示缩小图像。

Method参数用来选择使用何种插值方法,其值及其含义如下:’nearest’最近邻插值法、’bilinear’双线性插值法、’bicubic’双三次插值法,默认为’nearest’。

imresize还可以指定图像输出大小,即传递一个向量参数给imresize函数,其中参数的两个分量分别指定输出图像的行数和列数。

如要将原图像X输出为200Χ480的图像,命令为:Y=imresize(X,[200 480])。

在本系统中采用了后一种方法,并使用了随机产生函数,使得图像改变大小随机性。

(2)图像水平镜像fliplr、垂直镜像flipud、转置ctranspose语法格式:Y=fliplr(X) Y=flipud(X) Y=ctranspose (X)说明:水平镜像函数fliplr是将图像沿垂直轴翻转矩阵,即将矩阵左右方向翻转。

垂直镜像函数flipud是将图像沿水平轴翻转矩阵,即将矩阵水平方向翻转。

相关主题